Triweekly update from the GHC DevX team at IOG.
Previous updates can be found here.
High level summaryโ
The team continued working on characterizing a performance regression in ouroboros-consensus when upgrading GHC from 8.10.7 to 9.6. As GHC isn't backward compatible, upgrading GHC not only means upgrading the compiler but also upgrading dependencies (including boot libraries), making investigations difficult because changes aren't isolated. We've enhanced GHC profiling tools (not upstreamed yet) to give the ability to applications (cardano-node here) to profile only a code section where we know a regression occurred. Investigation is still in progress.
Patches mentioned in our last update for inclusion in GHC 9.10 have been completed and merged:
- pure Haskell implementation of bytestring (bytestring#631)
- support for C sources (e.g. sqlite) with the JS backend (GHC!11502)
- JSTG optimizer (GHC!11507)
We've started summarizing the results of our IOG-internal survey about Haskell tooling.
Detailsโ
Luite: Has been investigating a cardano-node performance regression caused by upgrading from GHC 8.10 to GHC 9.6. Much of the work was related to improving ways we can measure performance of Haskell programs compiled with GHC. We hope we can merge some of the improvements into GHC in the future.
Luite: JSTG optimizer has been merged after some small improvements and fixes: GHC!11507.
Sylvain: reviewed a patch submitted by an external contributor to fix ghcjs-dom
package for the JS backend: ghcjs-dom!104
It's nice seeing the GHCJS libraries starting to be upgraded to use the JS backend!
Josh/Sylvain: improved the performance of some JS numeric primitives: GHC!12152
Sylvain: started summarizing the results of our IOG-internal survey about Haskell tooling.
Sylvain: made bitcast between words and floats real primops with constant-folding for better performance and code optimization: GHC!11973
Josh: use STG tag inference to determine if a binder is evaluated in the JS backend: GHC!11857
Jeff: removed redundant GHC.Cmm.DataFlow.Collections
module: GHC!12120
Jeff: did some merge request review; all merged now: