Tsonnet #47 - The devil in the details #3
Making the type checker manifest every lazy type so cycles can't slip through to the interpreter.
I write some bits here, maybe they are wise.
Live Last read · last published · next check
Making the type checker manifest every lazy type so cycles can't slip through to the interpreter.
Adding missing cycle-check variants to the type checker, then replacing the entire proactive AST-walking approach with on-demand detection during translation.
Closing every scope-checking blind spot exposed by removing catch-all patterns — conditionals, field access chains, function definitions, function calls, and closures.
Removing catch-all pattern matches to expose unhandled expression variants across the compiler pipeline.
Welcome to the ABEND dump #27!
Tsonnet gains computed field names, letting object fields exist conditionally.
Implementing conditionals in Tsonnet, from grammar rules to mojito recipes.

Fixing function calls with zero arguments, solved with a one-word grammar change.
Tsonnet adds named parameters at call sites, closing out six posts on function support.
Tsonnet gets methods
Tsonnet's function type variants get a record makeover — trading opaque tuples for named fields
Tsonnet gains closures — both bound to locals and immediately invoked.
Tsonnet gains default function arguments — with types inferred at declaration time.
Tsonnet gains basic function support — positional parameters, multiline bodies, and type inference that resolves at call time.
Welcome to the ABEND dump #26!
Tsonnet gains warnings for unused variables and untouched object fields
Tsonnet gains object merging via the + operator and proper division-by-zero errors, completing (almost) the Jsonnet arithmetic tutorial.
Tsonnet gains a full set of binary operators
Cleaning up a messy equality implementation by introducing a new AST variant.

AI, AI everywhere!