v4.2.0
Released 2026-05-21 · GitHub release · CHANGELOG
A large release: no_std Rust support, cross-file composition via the Oceans
Model, and four breaking changes. Upgrading from 4.1.x? Read the
Migration: 4.1.x → 4.2.0 child page — it walks each
break with fix-its.
Highlights
no_stdsupport for the Rust target (#31, #33) — generated Rust can run inno_std/ embedded / interrupt contexts.- Cross-file composition via the Oceans Model (RFC-0022 → RFC-0024) —
multi-system Frame projects now compose through the host language’s own
imports rather than a Frame-level
@@import. - RFC-0017 init decoupling — the per-backend initialization mechanism was reworked (breaking; see migration).
- Quality & test infrastructure — RFC-0027 in-tree snapshot tests (insta), property-based tests for codegen invariants, and the RFC-0031 post-release process.
Breaking changes
Four user-visible breaks — each surfaces as a clear compile error or wire-format mismatch. Full walk-throughs in the Migration guide:
@@importremoved (RFC-0024) —E823; replace with the target language’s native import syntax.@@codegen { ... }removed (RFC-0032) —E824; delete the block (auto-inference replaces it).- Enter/exit cascade removed (RFC-0019) — ancestor
$>/<$no longer run implicitly; forward explicitly with=> $^. - Persist wire-format changes — Python / Lua / Erlang blobs saved by 4.1.x need a one-time migration.