Unreleased changes¶
Changes that have landed on the main branch but are not yet part of a tagged release. These entries are assembled into the Changelog when the next release is published.
[UNRELEASED DRAFT]¶
Add
--record-struct-name-prefixfor naming the structs/records that therecord--heterogeneous-strategygenerates (e.g.Widget0,Widget1instead ofRecord0,Record1). Therecordstrategy is now available for many more languages in this release (C, C#, C++, Crystal, D, Go, Java, Kotlin, Nim, Odin, Python, Rust, Scala, Swift, V, Zig); the strategy and the new option are surfaced automatically per language exactly like every other language-specific option.An invalid
--record-struct-name-prefix(not a PascalCase identifier for the target language) now surfaces the upstreamInvalidRecordNameErroras a clean CLI error rather than a traceback.Bump
literalizerto 2026.5.17.--heterogeneous-strategy tupleis now offered for the languages that gained the upstreamTUPLEstrategy (C++, Kotlin, Rust, Scala, TypeScript). A tuple arity that has no native fixed-size tuple in the target language (e.g. a 4+-element heterogeneous array in Kotlin) now surfaces the new upstreamTupleArityNotRepresentableErroras a clean CLI error rather than a traceback.literalizerremovedDottedCallStubNotSupportedErrorandFreeFunctionCallNotSupportedError(the context-awarecall_transformmade them unreachable); they are no longer referenced. Languages whose declaration template previously only wrapped literal values (Bash, Objective-C, Tcl, and others) now bind a call result through their idiomatic call-binding form, so--variable-namein--mode callworks for them too.