Skip to content

0.81.0

Choose a tag to compare

@b10x-bot b10x-bot released this 01 Nov 18:07
· 143 commits to main since this release
78d58fb

Nullable Binary64 fields in generated types, name aliases in the schema, and synthesis that follows bindings.
6 fixed.

Changed

  • ess generate types realizes an Optional<Binary64> field declared presence: null_when_absent or omitted_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's anyOf [number, null], where it was the property and realization was refused as model_binary64_layout. The TypeScript report names its model_binary64 obligation at that member.
  • The published document schema (schemas/generated/ess.schema.json) admits a binding's name written id: and a component's written component:, the aliases the parser already reads, each with the same charset as name:; 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 as ESS-SYNTH-003 naming 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's exists: false before the addressed row's existence or held state (ess/22 with wrong_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 answered exists: false instead of the refusal. A model with such a command and no wrong_state: (in this repository claim-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 as ESS-SYNTH-003 naming the guard.
  • ess generate types --root <command>.response on a command that declares no response is refused as unknown_root, naming the command and saying it declares no response, as --all-commands leaves it out, where it generated an empty object type.

Every change: CHANGELOG.md § 0.81.0