Skip to main content

IOG GHC Update #28

ยท 2 min read

Triweekly update from the GHC DevX team at IOG.

Previous updates can be found here.

  • Sylvain: completed and merged someone's patch opened for 4 years to make GHC generate better LLVM IR for complete switches. GHC#24717, GHC!12491.

  • Sylvain: fixed issue with code using DeriveLift and when building template-haskell. GHC#22229, GHC!12456.

  • Sylvain: fixed a segfault in GHCi when using breakpoints. GHC#24712, GHC!12500

  • Sylvain: fixed a JS codegen issue because GHC generates code that computes with RUBBISH literals. There may be more to it as it's not really supposed to happen, but at least the generated JS code is valid code now . GHC#24664, GHC!12463.

  • Jeff: After a long exhausting battle with the GHC testsuite, jeff expanded the testsuite capabilites to track binary sizes for each backend in GHC's CI and their dependencies. MR is merging now.

  • Jeff: Published the perf chapter for the Haskell Optimization Handbook.

  • Hamish: added support for the JS backend in Miso Miso#738. This led to a discussion about generated code size. Sylvain opened two issues about ideas to reduce code size (GHC#24743 and GHC#24744) and one MR to prepare for #24743 GHC!12538.

  • Luite: Made a new implementation of the functionality of starting/stopping profiling counters for cost centre profiling GHC!12478. This implementation is simpler than the previous one GHC!12440, but requires reading a global variable for each counter increment. Initial performance measurements have shown that the cost is minor. We haven't merged this yet because of ongoing work on even finer control of cost centre counters (multiple counters per cost centre stack and per-thread settings), which might supersede this patch.