|
| 1 | +--- |
| 2 | +slug: 2024-11-07-ghc-update |
| 3 | +title: "IOG GHC Update #37" |
| 4 | +authors: [sylvain,doyougnu,luite] |
| 5 | +tags: [ghc,ghc-update] |
| 6 | +--- |
| 7 | + |
| 8 | +Triweekly update from the GHC DevX team at IOG. |
| 9 | + |
| 10 | +<!-- truncate --> |
| 11 | + |
| 12 | +Previous updates can be found [here](https://engineering.iog.io/tags/ghc-update). |
| 13 | + |
| 14 | +## High-level Summary |
| 15 | + |
| 16 | +The team has been working on providing patches for GHC to fix the cardano regression mentioned in previous updates. |
| 17 | + |
| 18 | +See details below for the more general maintenance and improvement fixes. |
| 19 | + |
| 20 | +## Details |
| 21 | + |
| 22 | +### Performance |
| 23 | + |
| 24 | +Sylvain: improved performance of codes using user event tracing (e.g. |
| 25 | +`traceEvent`) when tracing is disabled, putting an end to a long saga of merge |
| 26 | +requests by different people |
| 27 | +([GHC!3323](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3323), |
| 28 | +[GHC!5316](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/5316), |
| 29 | +[GHC!12302](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12302)). I |
| 30 | +mostly did the menial work of making the latest MR pass CI and of getting it |
| 31 | +approved by the CLC because it impacts `base` |
| 32 | +([CLC!291](https://github.com/haskell/core-libraries-committee/issues/291#issuecomment-2420734806)). |
| 33 | +See [GHC!13295](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13295) and |
| 34 | +[GHC#17949](https://gitlab.haskell.org/ghc/ghc/-/issues/17949). |
| 35 | + |
| 36 | +Luite: Attempted to find the right conditions in the coreprep pass to modify speculative |
| 37 | +evaluation optimization to fix the regression preventing us from upgrading Cardano |
| 38 | +to GHC 9.6. Unfortunately it turned out that a working fix would also affect |
| 39 | +optimizations elsewhere, making it risky to backport. We decided to add flags |
| 40 | +to GHC for directly controlling the speculative evaluation optimization instead, |
| 41 | +with the intention of backporting them to GHC 9.6+. See [GHC!13556](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13556) and |
| 42 | +[GHC#25284](https://gitlab.haskell.org/ghc/ghc/-/issues/25284). |
| 43 | + |
| 44 | +Jeff: Refined the SrcLoc type to be unpacked and strict. This was the second attempt to close out CLC proposal [CLC#55](https://github.com/haskell/core-libraries-committee/issues/55). This is now merged in [GHC!13381](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13381) and reduced binary sizes for almost every compiler artifact. |
| 45 | + |
| 46 | +### Toolchain |
| 47 | + |
| 48 | +Sylvain: fixed Stack support for the upcoming GHC 9.12. See [hi-file-parser#21](https://github.com/commercialhaskell/hi-file-parser/issues/21) and |
| 49 | +[hi-file-parser!23](https://github.com/commercialhaskell/hi-file-parser/pull/23). Almost every release of GHC makes some changes to the interface file (.hi) format. |
| 50 | +Stack parses these files to get dependency tracking right. This solution is fragile but there isn't another option currently: see [stack#5134](https://github.com/commercialhaskell/stack/issues/5134), |
| 51 | +[GHC#17620](https://gitlab.haskell.org/ghc/ghc/-/issues/17620), and [GHC-proposal#245](https://github.com/ghc-proposals/ghc-proposals/pull/245). |
| 52 | + |
| 53 | +### Maintenance |
| 54 | + |
| 55 | +Sylvain: simplified the handling of the virtual `GHC.Prim` module by the build system. |
| 56 | +The build systems no longer have to special-case the handling of this module: it is all done in GHC which was already treating it differently internally anyway. See [GHC!13477](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13477). |
| 57 | + |
| 58 | +Luite: Fixed a small issue with non-ASCII characters in the parser breaking HLS. See [GHC#25396](https://gitlab.haskell.org/ghc/ghc/-/issues/25396), [GHC!13461](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13461). |
| 59 | + |
| 60 | +Jeff: Has been working towards splitting base and GHC with CLC proposal [CLC#289](https://github.com/haskell/core-libraries-committee/issues/289). This has been implemented in [GHC!13428](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13428) and [GHC!13343](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/13343). GHC will be a little less coupled to base in 9.14 :) |
| 61 | + |
0 commit comments