Blog

Cure v0.33.0 :: Formalisation

by Aleksei Matiushkin

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

Cure v0.32.0 :: Trust, Export, Recall, Narrate

by Aleksei Matiushkin

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.

release trust packages protobuf repl story

Cure v0.31.0 :: Specialise & Steer

by Aleksei Matiushkin

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.

release optimiser monomorphisation pgo smt diagrams

Cure v0.30.0 :: John

by Aleksei Matiushkin

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.

release diagnostics cli repl observability tribute

Cure v0.29.0 :: Make Documentation Great

by Aleksei Matiushkin

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

Cure v0.28.0 :: Talk Back

by Aleksei Matiushkin

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.

release type-checker parser tooling bless replay playground

Cure v0.27.0 :: The CLI, One Command at a Time

by Aleksei Matiushkin

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.

cli tooling tour reference

Cure v0.27.0 :: See Your System Breathe

by Aleksei Matiushkin

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.

release observability temporal session-types otel crdt hyperlinks playground

Cure v0.26.0 :: Applications and Releases

by Aleksei Matiushkin

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.

release applications otp releases systools

Cure v0.25.0 :: Typed Supervision Trees

by Aleksei Matiushkin

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.

release actors supervision otp melquiades genserver

Cure v0.24.0 :: The REPL You Deserve

by Aleksei Matiushkin

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.

release repl readline makeup marcli terminal

Cure v0.23.0 :: Packaging, Proof, and Polish

by Aleksei Matiushkin

The long-awaited remote package registry, property-based shrinking, Std.Json / Std.Http, cure doctor / fix / telemetry / coverage, and the cure_brainloop showcase example.

release packaging registry signing transparency stdlib telemetry

Cure v0.22.0 :: Loose Ends

by Aleksei Matiushkin

Multi-statement lambda bodies, binary comprehension generators, and byte-size refinements.

release fsm finitomata callback-mode genserver

Cure v0.21.0 :: Through the Segments

by Aleksei Matiushkin

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

Cure v0.20.0 :: The Shape of Things

by Aleksei Matiushkin

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.

release formatter algebra comments bitstring bin_segment refinement pattern

Cure v0.19.0 :: Bring the Furniture

by Aleksei Matiushkin

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

Cure v0.18.0 :: Deep Destructuring—pattern matching grows up

by Aleksei Matiushkin

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

Cure v0.17.0 :: Proofs & Polish—Toward Idris

by Aleksei Matiushkin

Dependent-type core grows up: Sigma/Pi types, propositional equality, implicit arguments with first-order unification, hole-driven development, totality classification, path-sensitive refinement—alongside a real REPL, watch mode, LSP polish, doctests, and the first regression CI.

release dependent-types sigma pi equality holes totality repl lsp doctests

Cure v0.16.0 :: The FSM That Contains Itself

by Aleksei Matiushkin

Finitomata-inspired dual-mode FSM compilation: inline on_transition handlers, hard/soft event suffixes, lifecycle callbacks, and full tooling integration.

release fsm finitomata callback-mode genserver

Cure v0.14.0 :: Real-World Readiness

by Aleksei Matiushkin

Package management, deep dependent type tracking, LSP type holes, incremental compilation, cross-module protocol dispatch, testing infrastructure, and Elixir interop.

release package-management type-holes testing interop

Cure v0.13.0 :: The Type System Grows Teeth

by Aleksei Matiushkin

Dependent type verification at call sites via Z3, cross-module protocol registry, LSP code actions, five optimizer passes, FSM guards and actions.

release dependent-types protocols optimizer