Repository navigation
1.0.5-rc.1
Pre-releaseRelease candidate on all four registries.
| Registry | Version |
|---|---|
| npm | 1.0.5-rc.1 — 14 packages, dist-tag next |
| PyPI | 1.0.5rc1 |
| NuGet | 1.0.5-rc.1 — 4 packages |
| Maven Central | 8.0.5-rc.1 |
metamodelVersion stays 1.0.
What it carries
The codegen-compile gate now runs in all five ports. Every corpus this project has gates BEHAVIOUR; none of them asked whether the emitted code builds. That is how four "generated code does not compile" defects shipped in 1.0.4 with the whole board green — gen exits 0 in all four cases and the adopter's build is the first thing that disagrees. Each port compiles the emitted tree with its real compiler (ts.createProgram / Roslyn / javac / KotlinCompilation / a Python import plus ruff F821).
The fan-out convicted nine further defects, all fixed here. The Java ones share a shape — the build stays green and the damage lands in the adopter's build, or nowhere visible:
- A field name Java reserves reached every site the name becomes a Java member, not only the record component that declares it. The dangerous one compiles: a
<Entity>Patchaccessor namedtoStringsilently overrodeObject.toString(). A third case is a runtime 500 — the generated PATCH handler passes wire names to Bean Validation, which resolves a record's property by its component name. - A field named after a Java keyword (
class) producedsetClass(String class)in the POJO tier and an unparseable record component in the Spring tier. - Per-object
.javawas written unguarded, then mistaken for hand-written work. - Two generators could claim one output path and one silently won. Ownership still wins over the new error: a collision on a file you hand-own warns and stays green.
Upgrading
This changes generated Java output. A generated Spring controller gains one import and wraps its PATCH property lookup, whether or not the entity declares a reserved name — so Java adopters with committed generated code must re-run codegen. For almost all of them that is the whole diff. The record/DTO tier changes only for an entity that actually declares such a field. No wire format changes, and no other port is affected: the escape is a Java restriction that stops at Java.
Full detail in CHANGELOG.md under [Unreleased].