Changelog
The format is based on Keep a Changelog.
[Unreleased]
Added
- Type and generic inference now includes reusable inference variables, type schemes, substitutions, constraint generation, unification, generalization, constructor schemes, and inference interfaces.
- The type checker now infers unannotated function parameters, eligible local bindings, polymorphic calls, generic lists, generic custom-type constructors and patterns, and imported generic functions.
- Type diagnostics now include ambiguous return types, generic arity mismatches, and recursive inferred types.
- The main type checker now uses the shared inference unifier for type compatibility checks.
- Bit-string patterns match integer segments, bind integer and variable bit-array tails, validate segment shapes, and execute in Wasm tests.
Changed
- The type inference plan graduated from internal specs and tasks into the development docs as conceptual implementation documentation.
[1.0.0] - 2026-06-05
Added
- The WASM backend now documents and emits scalar and managed value representations for strings, bit arrays, lists, tuples, records, custom values, closures, opaque values, results, options, errors, and panics.
- The WASM runtime prelude now includes allocation, string, bit-array, list, tuple, record, custom-type, closure, equality, ordering, panic, assertion, and debug helpers.
- WASM code generation now emits current IR expression and instruction forms, branches, guards, lowered patterns, failure paths, operators, short-circuiting booleans, direct/imported/exported/indirect calls, and module constants/static data in deterministic order.
- The WASM backend now validates target-aware ABI rules for Wasmtime, browser, and WASI host modules, emits raw-Wasm string export adapters, diagnoses unsupported target and ABI combinations before assembly, and keeps WAT/Wasm output deterministic.
- Backend validation now covers WAT snapshots, Wasmtime execution, static and dynamic memory inspection, runtime helpers, import/export ABI checks, and unsupported target/ABI diagnostics.
[0.1.0] - 2026-06-04
Added
- Project model and module loading now reads Gleam project metadata, discovers modules, assigns stable source IDs, and reports project graph diagnostics.
- Full Gleam syntax is represented in the compiler AST or rejected with targeted source-spanned diagnostics for known limitations.
- Name resolution now uses Gleam-like namespaces across values, types, constructors, fields, modules, imports, and project visibility checks.
- Type checking now records module interfaces, constructors, fields, generics, typed expressions, and real-language pattern metadata for lowering.
- Runtime representation now documents and tests object headers, tags, alignment, strings, lists, tuples, records, custom values, closures, managed pointers, and allocation helpers.
- Pattern matching now parses, resolves, type-checks, lowers, diagnoses, and emits the supported scalar and structured pattern forms with explicit branch behavior.
- Structured language support now covers declarations, constants, externals, target groups, operators, pipelines,
use, anonymous functions, captures, records, updates, tuples, lists, bit arrays, imported members, opaque values, and module interfaces. - Core IR now represents module declarations, constants, managed value forms, function values, call ABI metadata, structured control flow, failure paths, and stable debug output.