Skip to content

Add a CI job validating against GHC's JavaScript backend - #12294

Draft
zlonast wants to merge 1 commit into
haskell:masterfrom
zlonast:zlonast/javascript-ci
Draft

Add a CI job validating against GHC's JavaScript backend#12294
zlonast wants to merge 1 commit into
haskell:masterfrom
zlonast:zlonast/javascript-ci

Conversation

@zlonast

@zlonast zlonast commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

fix: #12293

Known limitations (upstream, not Cabal bugs)

Note

These are the reasons the draft waits for GHC 9.12.5 / 9.14.2 / 10.0.
Each item is a GHC-side gap that is already known/fixed upstream; none of
them are regressions introduced here.

  1. cabal-testsuite cannot run on the JS target — it executes every test
    script inside a GHCi session (Test.Cabal.Server), and the 9.12.2 cross
    bindist is "not built for interactive use". This includes the new
    PackageTests/JS/* tests (they are skipUnlessJavaScript, so native CI
    runs keep skipping them).
  2. cabal-install unit tests fail to loadhackage-security uses
    StaticPointers, and the JS backend mis-links static pointer tables
    (ReferenceError: h$$... is not defined at load time). The JS-built
    cabal executable itself links and runs fine.
  3. no-thunks-test needs unpackClosure# — introspection primop not
    provided by the JS backend.
  4. rpmvercmp suite needs a C FFI routine — its reference implementation
    is C; bridging it through the emscripten heap would defeat the purpose of
    the cross-check.
  5. RTS gaps worked around here (h$fchmodat, h$CLOCK_*,
    h$getNumberOfProcessors, cryptohash-sha256 FFI) — tracked in the
    polyfills file, removable when the runtime catches up.

Template Α: This PR modifies behaviour or interface

Include the following checklist in your PR:

@zlonast
zlonast force-pushed the zlonast/javascript-ci branch from 3daeff4 to d0d1560 Compare August 28, 2026 06:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adding a javascript target to check compatibility.

1 participant