Skip to main content

IOG GHC Update #16

· 2 min read

Triweekly update from the GHC DevX team at IOG.

Previous updates can be found here.

CI / Testsuite

  • Sylvain: implemented openat in JavaScript. See GHC#23697 and GHC!10909. Found while working on unix's package testsuite (see Unix!285.

Performance

  • Josh: investigated alternative implementations of the union function for GHC's UDFM type, with the intent of removing the use of Data.List.sort. For unknown reasons, there were mixed results in GHC's performance tests.

  • Josh: investigated the performance of package database loading in GHC. In comparing ticky profiles of simple builds with and without package databases (see https://github.com/haskell/cabal/issues/4093), there was a large amount of excess entries into Word64Map.insert and List.++. More investigation is required to find the source of these entries.

  • Luite: Investigated memory consumption of GHC when linking large JavaScript results. GHC consumes over 10GB of memory when linking various test cases in the testsuite that compile the GHC API to JavaScript. Investigation is still ongoing, see GHC#23882.

  • Jeff: Finished investigating a performance regression in cardano-ledger when migrating from GHC-8.10.7 to GHC-9.2.8 and the report. This work will be rolled into a chapter for the Optimization Handbook.

JS Backend

  • Josh: Built the GHCJS libraries against the first GHC 9.8 alpha release. There are many version bumps required in ghcjs-base dependencies, due to boot library changes, but not many code changes. Because of various JS backend fixes in GHC 9.8, these library updates will delay the release of the GHCJS libraries for the JS backend.

  • Luite: The process submodule has been bumped to include support for the JavaScript backend and to fix a bug on macOS. This also enables JavaScript CI tests for the process package. From now on process can be used for the JavaScript target, for example to build node.js scripts that manage other processes or packages that use the Cabal custom setup method.

Miscellaneous

  • Jeff: Finished his presentation for FUNARCH 2023. See you at ICFP!

  • Bartek: Finished his internship with us and has moved on to his next year of study. We enjoyed his stay, wish him the best of luck, and appreciate his labor.