Skip to main content

IOG GHC Update #27

ยท 2 min read

Triweekly update from the GHC DevX team at IOG.

Previous updates can be found here.

High level summaryโ€‹

We continued with the cardano-node performance regression investigation and ran more benchmarks and comparisons. We confirmed that the Crypto typeclass parameterization is causing a significant performance overhead and that specializing to StandardCrypto in a few places reduces allocations by 50% on GHC 9.6. The performance gap between GHC 8.10 and GHC 9.6 is completely closed by doing this optimization. Because of this result, the cardano-ledger team is now considering removing the Crypto typeclass in a future release.

Detailsโ€‹

  • Hamish: released new versions of ghcjs-base, ghcjs-dom-javascript, ghcjs-dom, jsaddle, jsaddle-dom... that are compatible with GHC's JavaScript backend.

  • Jeff: assisted a GHC contributor into adding support Google Closure Compiler in GHC's CI. !12330

  • Jeff: Made more efforts to align the ghc.nix developer environment with the dependency versions that GHC runs on CI. #190

  • Sylvain/Luite: fixed tricky bug in the JS codegen and reenabled the relevant optimization with was independently disabled in 9.10 #24495 !12308

  • Luite: Implemented functionality to request ticky counters to be written at specific times to the GHC eventlog. An earlier version of this was used for cardano-node performance investigation. #24645 !12399

  • Luite: Working on fixes for ticky counters in ghc-events. ghc-events/tree/fix-ticky

  • Luite: Made a utilities package to quickly test and compare optimizations in cardano-node and its dependencies using various profiling techniques. cardano-bench-utils

  • Luite: Fixed ticky allocation counting. GHC was bumping the wrong counter. #24587 !12177