Skip to content

Jo

v0.12.0 Breaking

This release includes 3 breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Affected surfaces

breaking_upgrade

Summary

AI summary

Multi-module project support requires migrating jo.toml to per‑module sections.

Full changelog

Added

  • Multi-module project support in jo.toml, including ordered
    [module.<id>] sections, per-module source roots, source-module
    dependencies, module-aware build outputs, and module-aware
    build/clean/deps/doc/lock/package/run/test commands. (#67)
  • App-module dependencies can inherit and override link wiring, enabling test
    modules and app-as-library workflows. (#67)
  • Bytes, an immutable byte sequence, with fill, size, get, slice,
    and toBase64 support across the interpreter, JavaScript, native, Python,
    and Ruby backends. (#65)
  • JIP-0001, documenting the regularized expression syntax. (#62)

Changed

  • jo.toml now separates source dependencies (modules) from registry
    dependencies (packages), uses per-module platform, and requires explicit
    per-module src entries. (#67)
  • Expression syntax is more regular: match, dot chains, indented colon calls,
    rescue, allow, and with may be used in more expression positions, while
    inline colon calls are rejected directly inside comma-delimited contexts.
    (#62)
  • Package metadata now records the module platform from the build spec. (#67)

Fixed

  • Class-parameter factory functions and patterns are synthesized for all
    parameterized classes unless overridden by user definitions. (#61)
  • Documentation comments are preserved when annotations appear before the
    documented definition or member. (#63)
  • Rebuilds clean stale SAST output when source files are removed or changed.
    (#64)
  • Dependency diagnostics cover missing jo.toml, missing src, module cycles,
    undefined modules, and clearer module labels. (#67)

Security

  • No new ambient capabilities are introduced. FFI access remains explicit per
    module through enable-ffi, and Bytes exposes an opaque Jo API rather than
    backend-native byte-buffer representations. (#65, #67)

Compatibility

  • Existing single-module jo.toml files must be migrated to the
    [module.<id>] shape with explicit src; top-level source and dependency
    fields are no longer the current build-spec form. (#67)
  • Registry dependencies that were previously listed as source dependencies must
    move to packages, while source dependencies move to modules. (#67)
  • New code using Bytes requires the 0.12 compiler, standard library, and
    runtime backend support. (#65)
  • Inline colon calls that previously parsed in comma-delimited positions now
    require parentheses or indentation. (#62)

Breaking Changes

  • `jo.toml` must be migrated to the `[module. ]` shape with explicit `src`; top‑level source and dependency fields are removed.
  • Source dependencies (`modules`) must be separated from registry dependencies (`packages`).
  • Inline colon calls inside comma‑delimited contexts now require parentheses or indentation.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Jo

Get notified when new releases ship.

Sign up free

Related context

Earlier breaking changes

  • v0.12.1 Projects must directly declare transitive dependencies previously accessible via link=true sources.

Beta — feedback welcome: [email protected]