Releases: eugenioenko/goalchemy
Release list
Goalchemy 0.2.1
Goalchemy 0.2.1 reduces redundant Python buffer copies while preserving owned inputs and results.
- Reuse immutable library byte inputs and snapshot mutable queued inputs at submission.
- Use bounded memoryviews at native crypto and output boundaries; avoid intermediate bytearray slices.
- Preserve overlap-safe slice copy/append and add queued-input, typed/strided view and ownership regressions.
- Refresh generated Python specification hashes to match the runtime implementation.
The paired OpenTDF SDK changes also reuse validated archives. Fresh combined SDK benchmarks show Python 50 MiB E2E time reduced by 35.3%; that result includes both SDK and compiler changes and does not isolate this release alone.
Goalchemy remains experimental and compiles a restricted Go subset. This is a patch release; supported targets and native dependencies are unchanged.
Goalchemy 0.2.0
Goalchemy 0.2.0 expands the compiler and runtime support needed for native, interoperable SDKs across Go, TypeScript, Java, C#, Python, Rust, and C.
- Native byte storage and owned-value library exports across all seven targets.
- Host I/O, cancellation, and native HTTP/crypto capabilities for generated libraries.
- Source libraries for strings, bytes, sorting, Unicode/UTF-8, encoding, and conversion.
- IEEE CRC32 using host libraries in Go, Node, Java, Python, and C#, plus pinned
crc32fastin Rust. Browser TypeScript and C retain portable implementations. - Updated pipeline, JWT, and fetch examples, including correct host entry initialization.
Goalchemy remains experimental and compiles a restricted Go subset. Target dependencies and supported execution environments are documented in the repository.
Release checks: installed-compiler integration, compiler version and emitted manifest version, capability catalog validation, generated-source freshness, and focused Go vet all pass. The CRC32 implementation also passed its seven-target CI before merge.
Goalchemy v0.1.0
Goalchemy v0.1.0
Targets: Go, TypeScript, Python, Java, C#, Rust, and C.
Known limits: C library exports accept only integers, bool, and strings; exports cannot suspend and must be called from one host thread. Hosts must copy returned strings before dropping references. On non-Go targets, byte slices use boxed integers and can be slow for bulk data.