Skip to content

Ryn 0.1.5

Choose a tag to compare

@v3nn7 v3nn7 released this 09 Oct 22:02
· 38 commits to main since this release
21f9a8b

Ryn 0.1.5 brings deterministic ownership to the native backend and a verified native compiler bootstrap. No garbage collector is introduced.

Native compiler and ownership

  • Deterministically release String, Vec, Map, Option, Result and owning enum payloads, including temporaries, replacements, loop exits and early propagation.
  • Clone nested enum payloads and unborrowed reference fields independently; invalidate moved owners to prevent repeated frees.
  • Verify native seed → stage2 → stage3 bootstrap under a 1 GiB address limit, with byte-identical stage2 and stage3 binaries.
  • Add live allocation/byte accounting and regressions for double-free, nested ownership and 30 million short-lived allocations.

Compiler and language improvements

  • Shared Ryn frontend and middle end, with Rust analyzer parity checks.
  • Updated output functions, compile-time constants/evaluation, metadata and derive support, nested patterns, generic extensions, C ABI handling and std::arena.
  • 571-program language regression corpus, plus native ownership and compiler project parity tests.

Freestanding float text and math

  • The native backend embeds the typed IR of the Ryn float runtime, so shortest round-tripping formatting and direct-width parsing (binary32 and binary64) need no libc: f32 parsing no longer rounds through f64.
  • std::math runs without libm on SSE2 and x87: sqrt, rounding, logarithms, trigonometry with fprem1 reduction, and pow with full special-case classification.
  • The 17 known freestanding float-text declines of earlier notes are resolved: the native sweep is 424 passing cases, 0 declined.

Downloads

Linux x86_64 and Windows x86_64 archives are accompanied by SHA-256 checksums, plus a Linux rync-0.1.5-linux-x86_64 archive with the self-hosted compiler, its Ryn sources, the standard library and the native bootstrap script. The standard ryn executable uses the Rust/Cranelift backend.

Validation and limits

  • Full Linux Cargo validation: 382 passing tests with a 16 MiB test-thread stack.
  • Native sweep: 424 passing cases, 0 declined; the 17 former float declines are fixed.
  • Native bootstrap peak RSS: 403528 KiB; the native stage2/stage3 fixpoint is byte-identical.
  • Native/Rust stress program outputs match. The Rust-built full compiler comparison exceeded the same 1 GiB limit, so no completed Rust/native full-compiler binary comparison is claimed.
  • rync's own frontend pipeline still passes 303 of 424 corpus programs directly from source; the remaining cases are compile-time evaluation, compile-time function calls, metaprogramming, some pattern forms, module path lookup and C imports.

Exact measurements and reproduction commands: https://github.com/rynlanguage/Ryn/blob/v0.1.5/docs/native-ownership-validation.md and https://github.com/rynlanguage/Ryn/blob/v0.1.5/docs/native-float-validation.md