Biweekly update from the GHC DevX team at IOG.
Previous updates can be found here.
JavaScript backend​
Luite: implemented JS support for running interactive processes via the
process
library by using NodeJS features. See Process#292. This change fixes a major issue with Cabal's customSetup.hs
scripts which are built with the JS backend (i.e. when not using haskell.nix) as these scripts need to run other processes such asghc
interactively.Sylvain: fixed an issue with exception pretty-printing. GHC#23565 and GHC!10739.
Sylvain: fixed an issue with levity polymorphic data constructors. GHC#22360 and GHC!10681. It also fixed GHC#22291 as a side-effect.
Sylvain: disabled dumping the
eventlog
intostderr
by default GHC!10677. We still neeed a better eventlog implementation but at least it fixed theT16707
test in thestm
package that was failing fo a reason unrelated to stm.Josh: worked on updating
ghcjs-dom
andghcjs-base
to support the JS backend. This requires changes to some dependencies that have GHCJS FFI import strings, as well as dependencies that are broken by GHC 9.8. See: splitmix!75Jeff: Changed the CI runner on gitlab to split the JavaScript job into two jobs: a debug build and a performance build. This re-enables performance testing and tracking on GHC's testsuite for the JavaScript backend. GHC!10576
Jeff: Opened the JStg draft MR. This MR is the next step on the roadmap to add GHCJS's optimizer to the JS backend. It adds a new IR to the JavaScript backend pipeline that allows us to separate concerns in the code base. The current pipeline uses the same IR to write the RTS and garbage collector, as a target to compile STG to and as a optimization target. As a consequence the IR is not a particularly good optimization target nor a good eDSL for the RTS and GC. With this MR we'll have the beginnings of a good eDSL for the RTS and GC, which allows for a better IR for the code generator and optimizer.
Deprecation warnings​
- Bartek: Deprecating exports proposal is now implemented in GHC 9.8
Incomplete Record Selectors​
- Bartek: The MR for the Incomplete Record Selectors warning is ready, waiting for another MR to fix the long-range PMC information in do-notations
Cabal​
- Josh: added support for
js
/asm
/cmm
sources to executable components, and factorised the overlapping code forc
/cpp
/js
/asm
/cmm
source handling for both library and executable components. See: Cabal!9061.
GHCi​
Miscellaneous​
Bartek: Almost finished investigating some of the cases for record fields not emitting custom warnings. See GHC#23279 for details
Jeff: FUNARCH GHC modularity paper was accepted! See you at ICFP.
Sylvain: implemented a
-prelude-is
GHC flag to make thePrelude
module selectable, following the discussion on Discourse. See ticket GHC#23551 and merge request GHC!10704. Not sure if/when it's going to be merged. Do show your support on the issue if you want this.