Skip to content

Myna 0.7.0

Choose a tag to compare

@sgammon sgammon released this 04 Nov 19:48
· 47 commits to main since this release
v0.7.0
00b692d

Myna 0.7.0 adds direct JSON-shaped value exchange between Rust/C++ producers and Substrate VM.

  • Serde structs, nested containers, enums, and dynamic JSON types map directly to a native value tape.
  • bumpalo is the default Rust arena; allocator-api2 and C++ PMR support caller-owned allocation.
  • ABI v3 provides 16-byte inline text, explicitly borrowed regions, and exact JSON-number tokens.
  • C++17 producer helpers work without Rust or Serde. Conformance tests exercise C++ simdjson OnDemand → Myna → Native Image.
  • simdutf supplies Unicode validation and optional bulk UTF-16 conversion; Java readers support prepared keys, direct traversal, and lazy String materialization.
  • The value runtime is a separate JAR, preserving generator-only downstream builds.

The attached portable SDK contains the Rust crate, C/C++ headers, value-reader JAR, ABI example, documentation, and SHA-256 manifests. It requires a 64-bit native target, a C++ compiler for simdutf, and Java 25+ with the Graal Native Image SDK for the SVM readers. Rust dependencies can also use this Git tag. This release does not publish to crates.io or Maven Central.

Serde strings copy because custom serializers can supply temporary strings. Direct builders support explicit borrowing; owners must keep the input, parser/unescape storage, and structural buffers alive and immutable through consumption. Exact-number conversion to BigDecimal or fixed-width numbers remains explicit and fallible.

The production TruffleData JSON backend, known-schema projections, and JEP 540/Jackson/JSON-P facades are planned upstream; this release supplies their native foundation, not a claim of facade compliance.

Validation: 16 Rust tests and 3 doctests; 189 JVM tests with coverage gates; C/C++ layout and ASan/UBSan checks; 2 CLI, 8 LLVM, and 5 Native Image integration tests. Cross-platform release checks run on Linux and macOS.

See the value API and ABI guide and PR #30.