Worker threads
Addressing a long standing feature request, we have added a straight-forward facility for managing a small pool of worker threads in Core.Program.Worker. You can put work items on a queue, then have a group of threads pull items from that queue. This allows you to set a rate limit of the number of concurrent workers but otherwise taking maximum advantage of Haskell's excellent concurrency facilities.
- Introduce worker threads by @istathar in #194
- Add timeout helper function by @istathar in #191
- Re-throw exceptions when racing threads by @istathar in #197
- Enable launching child processes by @istathar in #185
Telemetry improvements
Robustness improvements continue based on experience and problems encountered in the wild. There is one behaviour change, which is that when forking a new thread the telemetry state from the parent thread is inherited, rather than cleared. This moves the API version of core-program to 0.7.0
- Ensure metrics evaluated before adding by @istathar in #184
- Retry if Honeycomb is having a transient problem by @istathar in #190
- Modify application state in-place by @istathar in #193
- Don't reset telemetry when forking a thread by @istathar in #201
Ongoing upkeep
We support GHC 9.4.x now, and have made various small changes as needed to keep the family of packages working properly. There have also been a few bug fixes in the help output subsystem and preliminary support for getting information about the Git commit you're building from at compile time.
- Support GHC 9.4.5 by @istathar in #195
- Defensive upper bound on http2 package by @istathar in #186
- Soften requirement of http2 by @istathar in #187
- Tweak help messages by @istathar in #192
- Fix argument summary in help output by @istathar in #198
- Add Git repository information to TemplateHaskell splice by @istathar in #182
- Document querying of Git repository information in fromPackage by @istathar in #183
Thanks to @justinlynn and @dmvianna for their thoughtful feedback and code review as we worked on the code leading up to this release.
Full Changelog: core-program-0.6.6.0...core-program-0.7.0.0