Historical sUTL dialects and implementations
Where the historical implementations differ, and what sUTL 1.0 has since settled.
sUTL · Guide · Reference · Examples
This appendix describes historical implementations. The current guide teaches sUTL 1.0, whose explicit contract resolves the disagreements below.
Timeline
- The handwritten JavaScript implementation is the earliest surviving executable implementation.
- The old v0.3 specification documents
#/##paths and*multiplication. - The deployed language changed to
^/&paths andxmultiplication. - Studio used JavaScript generated from the Haxe implementation.
- The Python 2 implementation continued through 2018 and saw substantial production use.
Why Python is not the sole specification
Python contains later production fixes, deterministic key ordering, conversion builtins, and the strongest surviving test suite. It also contains observable host-language leaks:
- integer division under Python 2
- operand-returning
andandor - no
!!form - a broken builtin-override name
- incomplete
compilelibtest filtering
The recovered dialect therefore weighs production Python heavily but checks it against explicit documentation, Studio examples, HaxeJS, and handwritten JavaScript.
Confirmed implementation defects
- Both JavaScript implementations allow host coercion in numeric comparisons.
- Studio/HaxeJS merges the wrong value into scope for
!!. - Studio/HaxeJS returns null for an unparseable number where documentation and Python specify zero.
- Handwritten JavaScript predates conversion builtins and deterministic key ordering.
- Python returns logical operands where documentation and both JavaScript implementations specify booleans.
Decisions now settled
sUTL 1.0 fixes floating division, argument eagerness, evaluation order, invalid operands, unequal zip truncation, builtin overrides and library candidate rollback. Those are no longer open questions. General map order is not semantic; keys and values use sorted-key order. See the current reference.
The old sUTL0 declarations and Studio records remain useful historical material. New JavaScript, Python and Go implementations share the executable contract in sutl-language.
Source
Adapted from the sUTL source material.