0.70 — Named rows beside a row set, state wire spellings, and replays that finish
· 3 min read
0.70 — Named rows beside a row set, state wire spellings, and replays that finish | ESS0.70.0 adds source format
ess/32: one command may guard on rows its input names beside a row-set guard, a struct may declare no fields, and a lifecycle state may declare its wire spelling.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch0.70.0 is a feature release. It adds the source format ess/32 and the suite formats
ess-conformance/58 and /59. A model below ess/32 keeps its meaning, its IR bytes and its
compiled digest. The changelog lists
every change since 0.63.0.
Rows the input names, beside a row set
From ess/32 one command may guard on rows its input names, when_related: {via: input.<field>, …}, beside a row-set guard, when_related: {entity, where, …}. "Connect two ports
that exist and face the right way, unless a wire already leaves the source" is one command. A
missing named row answers first, then every refusal over a present named row or a row set in
declaration order, then the accepting branches
(#554).
More in ess/32
- A struct may declare
fields: [], open or closed (#649). - A lifecycle state may declare its wire spelling,
states: [{name: Indexing, wire: indexing}], and two variants of one enum spelled alike on the wire are refused (#639).
Conformance and generated code
ess verify conform synthesizeno longer stops withInvalidReplayatess/26and later.- A view may publish a
Decimal, compared by value; such a suite isess-conformance/58or/59. - A create-or-update command beside a related-row refusal gets a scenario for every branch (#641).
- The synthesized Rust server decodes published events and returns the events a call published.
- A variant's
code:names its generated identifier, and a dotted label such ascall.startedsynthesizes (#662). ess generate types --checkcompares what it would write with--out(#654).