Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Two IntMap-related improvements #390

Merged
merged 2 commits into from
Sep 26, 2023
Merged

Two IntMap-related improvements #390

merged 2 commits into from
Sep 26, 2023

Conversation

Bodigrim
Copy link
Collaborator

  • launchTestTree: use IntMap strict in values

    At the moment we use Data.IntMap which is lazy in values, and we initialise values with thunks testStatus <$> testActions. This is outright silly: testStatus is just a selector for TVar field, forcing it to WHNF can do no harm.

    We also take an opportunity to replace IntMap.fromList with IntMap.fromDistinctAscList.

  • statusMapResult: use IntSet instead of IntMap ()

    It seems the only reason behind IntMap () was the absense of Data.IntMap.withoutKeys, which was only added in containers-0.5.8.

CC @martijnbastiaan for review

It seems the only reason behind `IntMap ()` was the absense of
`Data.IntMap.withoutKeys`, which was only added in `containers-0.5.8`.
At the moment we use `Data.IntMap` which is lazy in values,
and we initialise values with thunks `testStatus <$> testActions`.
This is outright silly: `testStatus` is just a selector for `TVar`
field, forcing it to WHNF can do no harm.

We also take an opportunity to replace `IntMap.fromList` with
`IntMap.fromDistinctAscList`.
Copy link
Collaborator

@andreasabel andreasabel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to hold the changes that need a bump to containers until we drop GHC 8.0.

@Bodigrim
Copy link
Collaborator Author

@andreasabel good catch. I can put CPP of course, but I have no reason to keep compatibility with GHC < 8.6 (where 8.6 is only because of GHCJS). How do you feel about dropping earlier versions?

@andreasabel
Copy link
Collaborator

andreasabel commented Sep 26, 2023

Thinking it over, I guess it is fine to go ahead with this PR as-is.
Folks that insist on constraints: containers installed in their CI can drop GHC 8.0 from the testing phase there.
For everyone else, this bump is not a problem.

Copy link
Contributor

@martijnbastiaan martijnbastiaan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally not a fan of fromDistinctAscList as it is easy to break the precondition, but given that the ascending list is right behind it this LGTM.

@Bodigrim Bodigrim merged commit 7e57b52 into master Sep 26, 2023
@Bodigrim Bodigrim deleted the intmap-improvements branch September 26, 2023 23:28
@VictorCMiraldo
Copy link
Collaborator

FWIW, looks good to me too! :) Thank you for the improvements!

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jan 29, 2025
Version 1.5.3
--------------

_2025-01-05_

* Console reporter: disable line wrapping
  ([#433](UnkindPartition/tasty#433)).
* Console reporter: force flushing of stdout after `showCursor`
  ([#436](UnkindPartition/tasty#436)).

Version 1.5.2
--------------

_2024-11-03_

* Partially revert [#393](UnkindPartition/tasty#393)
  to fix progress reporting outside of Emacs.
* Do not depend on `unbounded-delays` on `ppc64`, `s390x` and `riscv64`
  ([#371](UnkindPartition/tasty#371),
   [#422](UnkindPartition/tasty#422),
   [#423](UnkindPartition/tasty#423)).


Version 1.5.1
--------------

_2024-06-22_

* Performance improvements
  ([#389](UnkindPartition/tasty#389),
   [#390](UnkindPartition/tasty#390)).
* Progress reporting in Emacs: use `\r` instead of ANSI escape sequences
  ([#393](UnkindPartition/tasty#393)).
* Console reporter: fix unintended change to `foldHeading`
  ([#396](UnkindPartition/tasty#396)).
* Prune empty test subtrees from `TestTree`
  ([#403](UnkindPartition/tasty#403)).
* Add `instance Eq Timeout` and `instance Ord Timeout`
  ([#415](UnkindPartition/tasty#415)).
* Add ability to supply options for launchers and reporters at the top-level of test tree
  ([#417](UnkindPartition/tasty#417)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants