Changelog
What's new in each release of the Baseline compiler.
v0.3.3 March 9, 2026
New native List and String operations, a refinement checker fix, and benchmark validation proving Baseline beats Python on all seven Hanabi benchmarks.
Standard Library
List.count_flips-- pancake flip loop executed entirely in Rust with in-place mutationList.rotate_left,List.reverse_prefix,List.swap-- permutation primitives with CoW owning variantsList.push-- single-element append with copy-on-writeList.bisect-- linear scan for cumulative probability thresholdString.cyclic_substring-- extract chars with wrap-around, fast ASCII byte pathString.random_fasta_line-- PRNG loop with cumulative lookup and string building in one native call
Bug Fixes
- Fixed refinement checker parsing of string equality with
||operator - Refined
String++operator support
Benchmarks
- Baseline now beats Python on all 7 Hanabi benchmarks (nbody, binarytrees, fasta, fannkuch-redux, spectral-norm, pidigits, mandelbrot)
- Added optimized benchmark programs and multi-language comparison harness
v0.3.2 March 9, 2026
Production-ready server runtime, scalar replacement of aggregates, and mutable bindings. The HTTP server gains middleware, graceful shutdown, rate limiting, compression, and CORS -- while the JIT compiler delivers major performance wins through SRA and scalar RC elision.
Server
- JIT-compiled middleware chain with
next(req)continuation - Graceful shutdown on SIGINT/SIGTERM with 30s connection drain
- Per-IP rate limiting (token bucket, 100 req/s) with 429 responses
- Gzip response compression for bodies over 1KB
- Built-in CORS preflight handling for OPTIONS requests
- Request header (8KB) and body (1MB) size limits with 413 responses
- Structured request logging with request ID tracking
- Built-in
/__healthendpoint - Keep-alive timeout (30s) and server workers via
SO_REUSEPORT - Panic recovery with
catch_unwindaround handler dispatch
JIT Compiler
- Scalar replacement of aggregates (SRA) -- record parameters decomposed into individual registers, eliminating heap allocation in tight loops
- SRA let-floating exposes inlined records to optimization (6x nbody speedup)
- Scalar RC elision -- skip incref/decref for Int, Float, Bool, Unit values
- Multi-value returns for all-scalar records (one register per field)
- Mutable field assignment compiles to direct SRA variable update (zero allocation)
- Tail recursion modulo constructor (TRMC) rewrites recursive constructors into iterative loops
- Typed drop-reuse codegen for enum, tuple, record, and struct values
- Typed
JitErrorvariants andcan_jit_reason()diagnostics - Profiling counters via
BLC_JIT_COUNTERSand IR dump viaBASELINE_DUMP_IR
Language
let mutbindings with assignment statements for mutable local variables- Mutable record field assignment (
obj.field = val)
Tooling
- Moved to
baseline-langGitHub organization - Heap benchmark gate and nbody reference outputs in CI
v0.3.0 March 5, 2026
JIT-only execution, fiber-based effect handlers, and a major stdlib expansion. The tree-walk interpreter has been removed -- Cranelift JIT is now the default and only runtime.
JIT Compiler
- Cranelift JIT is now the default and only runtime -- the bytecode VM interpreter has been removed
- Self-tail-call optimization (recursive calls compile to loops)
- Base-case speculation inlines guard checks at call sites
- Clone-on-write enum field updates bypass
Arc::get_mutvia safe raw pointer mutation - Owning dispatch for native CoW functions
- Evidence passing transform for tail-resumptive effects
- Float arithmetic (
+,-,*,/) in native code - List pattern matching in JIT
- Error propagation replaces panics with
catch_unwind
Performance
- Indexed field access -- field indices resolved at compile time, O(1) Vec lookup at runtime
- Aggressive function inlining (lightweight functions up to 120 IR nodes)
- Tuple-let fusion eliminates allocation from inlined multi-return
- Non-atomic RC mode for single-threaded execution
- Checked integer overflow replaces silent wrapping arithmetic
- Persistent map operations optimized
- Unboxed scalar fast path restored for non-Int scalar functions
Effects & Handlers
- Fiber-based effect handlers with Perceus reuse analysis
- One-shot continuation semantics codified
- JIT effect conformance tests
- Arithmetic on refined types
Standard Library
Math.sqrt,Math.sin,Math.cos,Math.atan2,Math.floor,Math.ceilFloat.from_int,Float.format,Int.from_floatMap.map,Map.filter,Map.fold,Map.entriesList.set,List.slice,List.fill,List.get_or- Implicit first-arg piping
- 17 new API modules, 135 new functions total
Tooling
- GitHub Actions release workflow with Homebrew-compatible tarballs
- Conformance regression gates in CI
- Package dependency resolution
- Async LSP improvements
- Language tour for new developers
- Error message catalog with all 56 diagnostic codes
v0.2.0 February 17, 2026
Web framework, database connectors, trait system, and advanced pattern matching. This release turns Baseline into a practical language for building web services.
Web Framework
Routermodule with route definitions,Router.resources, andRouter.stateRequestmodule with typed parameter extractionResponsehelpers with auto-serializationMiddlewaremodule for request/response pipelinesServerruntime with router state injection and auto-docsHttpErrorexpanded to 12 variants with JSON:API error format- Structured error pipelines, multipart parsing, JWT auth, in-memory sessions
- WebSocket support and schema-driven validation
Database
- Generic SQL backend with
Sqlite,Postgres, andMysqlconnectors - Typed database rows with
SqlValue,Row, and typed accessors query_map!HOF andquery_one!for all backends- Parameterized queries and migration runner
Type System
- Trait/interface system with compile-time dictionary-passing dispatch
- Record destructuring and open records with row polymorphism
- Trait bounds with supertrait support
Pattern Matching
- Guard patterns (
match x { n if n > 0 => ... }) - Or-patterns (
match x { 1 | 2 | 3 => ... }) - List patterns (
match xs { [head, ..tail] => ... }) - Enhanced record patterns with partial matching and literal fields
Standard Library
Crypto,DateTime,RegexmodulesResult.map_errandResult.contextfor error conversions- Semantic logger with timestamps, structured fields, and JSON output
- Unified Log API (removed
_with!variants) Validatemodule
Tooling
- MCP server with 5 tools for AI agent integration
- Website redesign with API reference, guides, and search
llms.txtandllms-full.txtfor AI agent contextblc docsCLI search and expanded API documentation- Rosetta Stone and Common Agent Mistakes in
llms.txt
v0.1.0 February 2, 2026
Initial release. A working compiler with type checking, effect inference, refinement types, and an interpreter runtime.
Language
- Core types:
Int,String,Boolean,Float,List<T> - Sum types with
Option<T>andResult<T, E> - Closures, string interpolation, tuple evaluation
- Pattern matching with
matchexpressions - Pipe operator (
|>), range expressions (1..10) - Module system with
@preludelevels
Type System
- Hindley-Milner-style inference for built-in generics
- Effect inference with transitive checking via call graph
- Refinement types with integer interval constraints (
type Port = Int where self > 0) - Built-in effects:
Console,Http,Fs,Log,Time,Random,Env
Standard Library
Mathmodule with arithmetic and comparison functionsStringmodule with manipulation and searchListmodule withmap,filter,fold,find,head,tailOptionandResultmodules with constructors and combinators
Tooling
- Tree-sitter parser (
tree-sitter-baseline) blc checkwith JSON diagnostic output- Zed editor extension with syntax highlighting
- Property-based tests and fuzzing targets
- Conformance test suite (45 test files, 12 categories)