Skip to content

Conversation

@dmjio
Copy link
Owner

@dmjio dmjio commented Dec 29, 2025

This PR is a big one. It replaces jsaddle w/ our own JS FFI DSL (in IO). It also creates raw FFI for interacting w/ the WASM backend along with a Data.JSString API (interface parity with Data.Text).

  • Removes jsaddle and JSM (moves everything to IO).
  • Creates ffi/ sub-directory for the 3 backends.
  • Creates Data.JSString for WASM backend w/ it's own JSString Data.Text API.
  • Creates Miso.DSL in IO, uses jsaddle-like combinators.
  • Uses true synchronous callbacks to establish component mounting (syncCallback').
  • Adds From/ToJSVal marshalling logic (w/ ToObject, ToArgs classes).
  • Related GHC PR: Adds ability for WASM browser mode to host static assets here
  • Upstreams @amesgen work from jsaddle-wasm to construct a raw FFI statement in TH (workaround for js-sources)
  • mount() function is now written synchronously, adjust spec/ files accordingly
  • Drop jsaddle from nix/ scripts.
  • Drops conflicting (#>) combinator
  • Updates JS and vanilla GHC backends to have parity w/ WASM backend impl in ffi/
  • Add tests
  • Update haddocks

Partial contingency on https://gitlab.haskell.org/ghc/ghc/-/merge_requests/15251 to maintain parity with jsaddle-warp features.

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.

2 participants