Repository navigation
0.81.0
Nullable Binary64 fields in generated types, name aliases in the schema, and synthesis that follows bindings.
6 fixed.
Changed
ess generate typesrealizes anOptional<Binary64>field declaredpresence: null_when_absentoromitted_or_null, in a declared struct and in a command's input or response root, as Rust and Go: its Binary64 location is the number member of the field'sanyOf [number, null], where it was the property and realization was refused asmodel_binary64_layout. The TypeScript report names itsmodel_binary64obligation at that member.- The published document schema (
schemas/generated/ess.schema.json) admits a binding's name writtenid:and a component's writtencomponent:, the aliases the parser already reads, each with the same charset asname:; it refused every document that spelt a name that way. Writing both spellings, or neither, is refused, as the parser refuses it. Parsing is unchanged. - Synthesis no longer sends a
when_related:branch for a related row that only a step setting off a binding selects, where that binding's command writes a field or the state the guard reads, or removes the row: the model interpreter runs the binding before the send and answers another branch. Such a row is passed over for one no binding rewrites, and where none is found the branch is refused asESS-SYNTH-003naming the step, the binding and the command it invokes. A model whose bindings write nothing a related guard reads keeps its suite bytes. - A
when_related:command whose input is chosen for an external branch, where the precedence plan reads the related row'sexists: falsebefore the addressed row's existence or held state (ess/22withwrong_state:beside an external branch, and under exchanged phase orders), sends its unknown-identity scenario and its held-state refusals beside a present related row that selects the first branch read after that phase, where it sent a reference no row carries and the target answeredexists: falseinstead of the refusal. A model with such a command and nowrong_state:(in this repositoryclaim-search/related.yaml) moves its suite bytes: its held-state refusals, which assert only that the command is refused, now name a present row, so the held state is what refuses them; every other model keeps its bytes. - A wrong-state scenario of a command reading stored fields is sent to a row its moving branch's own
when_subject:holds on, where the default would otherwise answer without moving, and to a row holding a value in every field read by the stored guard of a sibling moving from another state, which an absent field leaves unknown and so stops selection before the wrong-state answer; where no reachable row serves, the scenario is refused asESS-SYNTH-003naming the guard. ess generate types --root <command>.responseon a command that declares no response is refused asunknown_root, naming the command and saying it declares no response, as--all-commandsleaves it out, where it generated an empty object type.
Every change: CHANGELOG.md § 0.81.0