Skip to main content

· 2 min read

Biweekly update from the GHC DevX team at IOG.

Previous updates can be found here.

JavaScript backend

  • Josh: Merged a port of clock_gettime from GHCJS into the JavaScript backend. This function is required by some Cabal Setup.hs programs, so this brings us closer to full Cabal functionality, as well as Unix parity. See GHC!10396

  • Luite: Ported the patch to support the process package in the GHC JavaScript backend from GHCJS. The old code was never fully tested and only intended to support Cabal, so there is missing functionality and error reporting is lacking. Work is now on the way to bring it up to level where it can be merged in the process package.

  • Luite: Looked into the test failures for the JavaScript specific weak references. It turned out to be caused by messing deadlock detection. Experimented with making the JavaScript storage manager (FinalizationRegistry) work for deadlock detection,add but it requires signifcant changes to the representation of ThreadId# in the Haskell code. For GHC 9.8 we will most likely document that deadlocks are not guaranteed to be detected with the JavaScript backend, and give the user the option to manually run full deadlock detection (heap scan) if desired.

  • Sylvain: fixed support for the ghcjs_HOST_OS CPP conditional. See GHC#22346 and GHC!10430.

  • Sylvain: fixed getpid. See GHC#23399 and GHC!10454.

Deprecation warnings

  • Bartek: changed the way warning reporting from addUsedGRE was done from artificially removing all warning categories from dynflags to an explicit argument See GHC!10414

  • Bartek: almost finished the deprecated exports proposal, a bug left to fix in backpack See GHC!10283

Performance

  • Josh: Merged improvements to the implementation of handle encoders after approval of the CLC. By manually unboxing functions stored in the CodeBuffer record, the allocations caused by allocations are reduced by ~20%, and general GHC usage is also slightly improved. See GHC!9948 and CI Performance Tests

Linker

  • Sylvain: backported fix for GHC#19421 (internal error: m32_allocator_init: Failed to map) to 9.2. See GHC!10453

Misc.