v0.33.0 publishes the long-overdue 1.0.0 normative specifications for `match` and `pickup`, the only two branching constructs in Cure. Two long-form documents land in HexDocs, the website grows a dedicated `pickup` page, and the language reference cross-links the new sources of truth. Nothing in the compiler moves: the implementation already honours every clause; v0.33.0 ships the contract, not a behaviour change.
release
formalisation
match
pickup
specification
semantics
v0.32.0 closes four distinct gaps that have been on the backlog since the registry landed in v0.23.0. Proof-carrying packages let consumers re-verify a publisher's type obligations offline, without re-running Z3. `cure export-types` translates Cure record and ADT declarations directly to proto3. `cure snap` saves and restores the entire REPL environment as a binary file. `cure story` reads a project and writes a narrative STORY.md introducing the system top-down: apps, supervisors, actors, FSMs, types.
v0.31.0 stops paying for polymorphism Cure does not use, and starts steering its own optimiser with profiling data. Two long-deferred items finally land: monomorphisation specialises polymorphic call sites whose substitutions are concrete, and profile-guided optimisation feeds runtime profiles into the inliner and the SMT encoder. ASCII-art diagrams (`cure draw`) ship as a static counterpart to the v0.27.0 Mermaid emitter for terminals that cannot render Mermaid.
v0.30.0 adds one panoramic diagnostic exposed through three surfaces: `mix cure.john`, `cure john`, and the `:john` REPL meta-command all print a single Markdown-rendered report covering Cure application state, BEAM / OTP stats, system info, tooling, the current Cure project, a condensed `cure top` snapshot, doctor severity counts, and the latest log tails. Named in tribute to John Carbajal.
v0.29.0 is the documentation release. Everything else is quiet. `cure doc` picks up an ExDoc-like two-pane layout driven by a new [doc] section in Cure.toml, every stdlib module grows a ## Examples block, the Cure website ships /stdlib and /stdlib/:module pages, the REPL's :help and :doc commands render Markdown properly, the parser stops dropping doc-comment blocks separated by blank lines, and a highlight.js language description plus refreshed vicure and vscode-cure plugins round out the surface.
release
documentation
cure-doc
stdlib
site
repl
tooling
v0.28.0 closes feedback loops: a type-checker bug fix, parser error recovery that emits all errors in one pass, "did you mean?" suggestions everywhere, cure fmt --diff, a Socratic fix assistant (cure bless), FSM time-travel via @record and cure replay, and a Playground with live type-checking and a sandboxed evaluator.
A tour of every subcommand exposed by the `cure` escript in v0.27.0: what each one does, the exact argument shape it accepts, and a real session showing what it prints when you actually run it.
Observability and verification land on top of v0.26.0 applications: Cure.OTel span bridge, cure top / cure trace, Cure.Temporal bounded model checker, Cure.Protocol session types, typed-hole synthesis via cure synth, three new stdlib modules (Std.Time, Std.Regex, Std.CRDT), OSC 8 clickable-filepath errors, and a LiveView playground.
A first-class app container, Cure.toml [application] and [release] sections, an OTP <name>.app resource emitter, and a cure release subcommand that packages the whole thing as a bootable BEAM release.
A typed send operator (<-|), first-class actor and sup containers, live GenServer codegen, compile-time supervisor verification, and a new stdlib surface for links, monitors, and supervision trees.
A full rewrite of the interactive REPL: raw-mode line editor, live syntax highlighting, persistent history, incremental reverse search, Tab completion, minimal vi mode, and Marcli-rendered help.
Binary destructuring lands in match, function heads, and let bindings with a dedicated exhaustiveness pass (E031). ADT constructor payloads accept function arrows, multi-line type ADT declarations parse, let grows in-place destructuring (E034), the algebra pretty-printer becomes the default cure fmt, and three new @derive targets land on top of Show/Eq/Ord.
release
binaries
bitstring
pattern
destructuring
let
adt
exhaustiveness
derive
formatter
AST polish across four coupled compiler tracks. Plain # comments are first-class AST nodes, binary literals and patterns gain the full Elixir-style segment grammar (<<x::utf8, rest::binary>>), a Wadler/Inspect.Algebra-style pretty-printer lands behind cure fmt --algebra, and pattern narrowing can expose disjoint-tag and literal-equality witnesses.
Ergonomics, proofs, and the first half of a registry. proof containers, assert_type, record defaults, @derive(Show, Eq, Ord), Std.Gen + Std.Test.forall, Std.Iter, version parser + dependency resolver, mutual-recursion totality, and multi-head cons patterns.
release
proof
assert_type
derive
property-based-testing
iter
package-registry
totality
match and let gain a real pattern engine. Arbitrary nesting across tuples, lists (cons and fixed), maps, records, and ADT constructors. Field punning, a pin operator, repeated-variable equality guards, a Maranget-style nested exhaustiveness pass, and five new error codes. Map patterns that used to silently succeed now actually match.
release
pattern-matching
destructuring
records
maps
cons
pin
Effect system tracking IO/state/exceptions in the type system, documentation generator with `cure doc`, minimal REPL, source formatter, and expanded error catalog.
Package management, deep dependent type tracking, LSP type holes, incremental compilation, cross-module protocol dispatch, testing infrastructure, and Elixir interop.