← All backends

Jurist — Julia

Target: Julia · Lineage: CoreFn-JSON source-emitter (purejl, Haskell) · By: this project · Status: experimental — 422/426 differential parity · Repo: in-ecosystem (purescript-backends/purescript-julia)

Jurist borrows Julia's numeric stack — the JIT, the array ecosystem, DiffEq / DynamicalSystems / Catlab. The design role is a leaf service: PureScript as a typed thin skin over hot numeric kernels that live in Julia FFI leaves. Its divergences follow the family philosophy — take the host's better number and string types, document the seam, and prove everything else identical with a differential suite.

It is the reference implementation of this whole column-adding process; the differential harness currently lives in its test-suite/.

At a glance

Jurist
Functions curried unary closures, (f)(x)(y)
ADT values tag-tuples: ("Just", x), tag at [1]
Records Dict{String,Any} + merge
Typeclass dictionaries Dict{String,Any} keyed by member name
Int Int64 (Bits/pow apply JS ToInt32)
Number Float64; show reproduces JS toString placement rules
Strings UTF-8 String; CodeUnits API is codepoint-based (BMP-identical)
TCO trampoline mirroring purs's optimizer (verified 10⁸)
Lazy bindings _runtime_lazy thunks, smart Rec partition
Native niche numerics — hot kernels in Julia FFI leaves; PS as typed skin
Perf shape curried-Dict glue ~325 ns/iter (measured); numerics behind the FFI seam

Divergences

422 of 426 differential tests are byte-identical to the JS reference, with 4 documented divergences. Int is Int64 (so INT64- tests give exact answers like the other non-JS backends); strings are UTF-8 codepoints (ASTRAL- tests agree with BEAM/Python). The Number show path reimplements JS's toString placement rules exactly.

In this ecosystem

Jurist is the compute-leaf backend for Hylograph (Marginalia 219) — numeric work pushed behind a typed FFI seam while the visualization layer stays in JS.