Actionable continuation of the Mica Roadmap. Read the roadmap for direction and release framing. Read this file for the detailed execution queue.

Current version: 4.5.0 · Linux x86_64 · System V AMD64 ABI · DWARF v5 Canonical date: 2026-03-22 Build evidence: scripts/build-compiler.sh passes · go run ./tests/cmd/mica-test run passes · -stress passes Stress timings: StressLOC100k: 6.687 s · StressLOC10k: 718 ms · StressLOC1k: 142 ms Planning state: .backlog/current/ is intentionally empty today. The active planning surface is this backlog plus the roadmap; closed detailed plans live in .backlog/archive/ in the compiler repository.

Recent closures already folded into this baseline:

  • Pascal-compatible static array index types and cross-compilation-unit index-type identity are closed; see archived plan-pascal-compatible-array-index-types.md.
  • Compiler-wide ordinal storage/arithmetic/indexing/interop/debug coherence is closed; see archived plan-ordinal-integration-coherence.md.
  • Non-string aggregate/library interop topology closure is closed on the validated Linux x86_64 platform; see archived plan-library-foundation-and-string-separation.md.

For strategy, release framing, and the interoperability vision, read the Mica Roadmap. For the full language and compiler description, see the Technical Portrait.


Release 4.6 — Language Ergonomics & Library (Active, Q2 2026)

Language ergonomics

ItemStatusWindowWhy
variable initialization expressionsplannedQ2–Q3 2026reduce boilerplate; make numerical and worker-style code read naturally
extended case: label lists and label rangesplannedQ2–Q3 2026finish the classic case surface; the 4.5 form only has single constant labels
richer for surface: step expressions and deferred formsplannedQ2–Q3 2026revisit loop surface explicitly left out of 4.5
panic and assertplannedQ2–Q3 2026one simple non-returning mechanism for impossible states; no exception system
checked_boundsplannedQ2 2026explicit runtime bounds safety for subranges and array/string indices

panic design direction:

  • for impossible states, not expected failures
  • no recover, no stack unwinding, no general exception system
  • optional string-literal payload (stays in read-only data; no dynamic allocation)
  • assert lowers to panic
  • expected failures move toward typed outcome/result values

Illustrative future syntax (not current compiler syntax):

panic;
panic "invalid parser state";
assert x > 0;
assert x > 0, "x must be positive";

Standard library surface

Complete the library surface a developer expects when writing medium-sized programs. Library namespaces lowercase. Callable API PascalCase. Same rule as std.

Strings (str) — planned, Q2–Q3 2026

FunctionDescription
Length(s)character count
Copy(s, from, count)substring extraction
Pos(needle, haystack)find substring; 0 if not found
Insert(src, var dst, pos)insert at position
Delete(var s, from, count)remove characters in range
Str(value, var s)numeric value to string
Val(s, var result, var errorPos)parse numeric value from string

Ordinals and characters — planned, Q2–Q3 2026

FunctionDescription
Ord(x)ordinal domain value to integer
Chr(n)integer to character
Succ(x), Pred(x)next and previous in ordinal domain
Inc(var x), Dec(var x)in-place increment/decrement
High(T), Low(T)bounds of ordinal type or array index type

Numeric (std/math) — planned, Q2–Q3 2026

FunctionDescription
Abs(x)absolute value — integer or float
Sqr(x)square — integer or float
Round(x)float → nearest int64
Trunc(x)float → truncated int64
Int(x)float → integer part as float64
Frac(x)float → fractional part as float64
Odd(x)true if x is odd
Max(a, b), Min(a, b)maximum and minimum

Program control (std) — planned, Q2 2026

FunctionDescription
Haltterminate with exit code 0
Halt(exitCode)terminate with explicit exit code

File I/O (std) — planned, Q2–Q3 2026

FunctionDescription
Open(var f, path)associate file variable with a path
Reset(var f)open for reading
Rewrite(var f)open for writing (truncate)
Append(var f)open for appending
Close(var f)close file
Eof(f)true at end of file
EoLn(f)true at end of line

Standard library modernization

ItemStatusWindowWhy
classic-style standard library modernizationplannedQ2–Q3 2026turns interop/standard/mica-stdlib.c into a stronger language-facing surface

Direction: stay UTF-32 first at the language level; keep string zero-terminated and interop-ready; use classic structured naming (stringpart, stringbuffer, stringpool, cstring) rather than copying slice-heavy or UTF-8-first designs. Make concatenation and formatting destination-driven so the compiler/runtime can reserve once and fill once.

String runtime

ItemStatusWindowWhy
UTF-32-first terminated string model (string)plannedQ2–Q3 2026keeps Mica classically structured; keeps wide-C interop direct
borrowed text ranges (stringpart)plannedQ2–Q3 2026substring/tokenization without allocating a new terminated string
mutable text construction (stringbuffer)plannedQ2–Q4 2026destination-driven append/format/replace without temporary-object storms
explicit narrow C boundary (cstring)plannedQ2–Q4 2026UTF-32-first Mica with clean access to narrow char* APIs
temporary text regions (stringpool)researchQ3–Q4 2026arena-style temporary text; heap/lifetime model must exist first

Interop and contracts

ItemStatusWindowWhy
compiler-emitted JSON contracts for Mica librariesplannedQ2–Q3 2026library publish and library import use the same contract artifact
header-assisted C contract bootstrap from well-formed headersplannedQ3–Q4 2026lowers the cost of reusing established C libraries
ABI-scoped contract interfaces with dot-call surfaceplannedQ3–Q4 2026namespace-like grouping without OO class machinery
curated C library contract packsplannedQ2–Q3 2026makes interop reusable across projects instead of ad-hoc per project
embedded core contracts plus example packs for broader librariesplannedQ2–Q3 2026keeps the built-in surface small with solid external patterns
library-first deployment model without package managerplannedQ3–Q4 2026OS/toolchain locates binaries; contracts provide the typed metadata layer
POSIX and Linux API access (without threading)planned4.6 → 4.7+practical systems access; first wave: posix and linux contract packs

SSA foundation

ItemStatusWindowWhy
SSA transformation for Mica ILplannedQ3 2026optimizer base for global analysis and later AI work
dominator tree, frontiers, and phi-node placementplannedQ3 2026prerequisites for all SSA-based optimization

Classic language completion (deferred from 4.5)

ItemStatusWindowWhy
variant recordsdeferredQ2–Q3 2026major classic aggregate feature on top of the trusted record baseline
conformant arraysdeferredQ2–Q3 2026classic procedure-interface and array abstraction compatibility
with statementdeferredafter 4.6touches aliasing and selector semantics; not safe to rush
typed outcome/result return valuesresearchafter variant records / 4.7+explicit success/failure returns without exceptions or multi-value signatures

outcome direction: prefer one typed return object over multi-return slots as the primary error model. Build on Mica’s existing automatic return-variable model. Keep success and failure paths word-oriented and visible in source. Avoid punctuation-dense syntax.

Illustrative future syntax (not current compiler syntax):

function ParseInt(s : string) : outcome int64, ParseError;
begin
    if IsValidInt(s) then
        success ParseInt := ToInt(s)
    else
        failure ParseInt := InvalidDigit;
end;

This direction only becomes credible once tagged result representation, pattern inspection, and variant-style data modeling are in place.

Tooling

ItemStatusWindowWhy
LSP and editor toolingresearchQ3–Q4 2026improves usability, teaching workflow, and adoption
contract schema and compatibility policyplannedQ3–Q4 2026stable toolchains, library publication, long-lived academic examples
benchmarking and profiling evidenceplannedQ3–Q4 2026keeps performance claims grounded in repeatable measurements
platform/support-matrix hardeningplannedQ3–Q4 2026clarifies what Mica truly supports beyond Linux x86_64

Release 4.7 — Language Completion & Heap (Planned, Q3 2026)

Heap and lifetime

ItemStatusWindowWhy
heap memory (new, dispose)plannedQ3 2026explicit heap instead of pointer-only stack-oriented programming
owned dynamic arrays (heap-backed, not slices/views)plannedQ3 2026variable-size aggregates without importing slice aliasing semantics
defer dispose and defer untilplannedQ3 2026deterministic cleanup without GC; defer until fits nested procedures well
ownership diagnostics and escape analysisplannedQ3 2026connects source-level lifetime policy to stack-vs-heap storage decisions

SSA optimizer (completion)

ItemStatusWindowWhy
liveness and alias analysisplannedQ3 2026SSA optimization prerequisites
loop analysisplannedQ3 2026loop-aware code improvement passes
register allocation and spill reductionplannedQ3 2026raises Mica from correct to efficient code generation
range analysis and bounds-check eliminationplannedQ3 2026connects checked_bounds policy to the optimizer
broader global optimization passesplannedQ3 2026industry-grade code quality beyond initial SSA passes

Concurrency substrate

ItemStatusWindowWhy
atomics and concurrency memory modelresearchQ3 2026prerequisites for safe worker/threading support
structured lexical workers with synchronized capturesresearchQ3 2026concurrency model that fits nested procedures; not mainstream task APIs
coroutines and generatorsresearchQ3 2026first suspension model before a larger async I/O runtime

Record interfaces

ItemStatusWindowWhy
record-bound static interfaces with explicit this receiverresearchQ3 2026data-plus-behavior abstraction without virtual dispatch or OO class machinery; this receiver stays explicit in the signature

4.8 — Optimizer, Concurrency & Hardening (Q4 2026)

ItemStatusWindowWhy
full SSA optimizer: broader global passesplannedQ4 2026industry-grade code quality beyond the initial 4.7 SSA foundation
structured worker concurrency model (synchronized captures)plannedQ4 2026workers that cooperate through nested-procedure scope, not free-floating threads
async I/O runtime modelplannedQ4 2026on top of coroutines and POSIX; not a second unrelated execution model
deeper POSIX and Linux API coverageplannedQ4 2026second wave of platform access where the 4.7 contracts prove useful
bit-core: bitset[N], int[N], uint[N]plannedQ4 2026unifies set semantics with lower-level bit and wide-integer programming
benchmarking and profiling evidenceplannedQ4 2026keeps performance claims grounded in repeatable measurements
platform/support-matrix hardening on x86_64plannedQ4 2026clarifies what Mica truly supports before expanding to a second architecture

5.0 — Mica Complete on x86_64 (Q2 2027)

5.0 is where the 4.x incremental work crystallizes into a complete, coherent product. All items below are prerequisites already landed in 4.6–4.8.

ItemStatusWindowWhy
complete language surfaceplannedQ2 2027heap, variant records, conformant arrays, dynamic arrays, with, typed error returns, concurrency — all working
x86_64 fully hardened and production-testedplannedQ2 2027DWARF v5, benchmarks, profiling evidence, support matrix clear
SSA optimizer with register allocation and range analysisplannedQ2 2027full optimizing compiler, not just a code generator
LSP and editor integrationplannedQ2 2027developer tooling mature enough for real use

5.5 — ARM64 & Multi-Platform (Q4 2027)

5.5 brings the complete 5.0 language and optimizer to a second production architecture. The language does not change. The optimizer does not change. A new architecture lands.

ItemStatusWindowWhy
Linux AArch64 emitterplannedQ4 2027next realistic architecture; AAPCS64 already in platform layer; ELF/Linux fits current infrastructure
x86_64 + ARM64 both production-tested with DWARF v5plannedQ4 2027Mica runs on the two dominant Linux architectures
macOS target supportdeferredafter Linux AArch64requires a separate Mach-O and Apple-toolchain story

6.0 — AI-Native Mica (2028)

6.0 is where the “Born for AI” tagline becomes a language reality. The complete language and optimizer foundation of 5.0 make these items achievable without shortcuts.

ItemStatusWindowWhy
native vector and matrix built-in typesplanned2028first-class substrate for AI and numerical programming
compile-time dimension and shape checkingplanned2028turns many AI-programming mistakes into compiler errors
mathematical notation with ASCII equivalentsplanned2028formulas that read like mathematics, not like pointer arithmetic
CPU SIMD lowering for vector and matrix operationsplanned2028numerical built-ins map to real hardware before GPU work begins
mixed-precision and AI-oriented numeric typesplanned2028targets efficient training and inference workflows
compiler-native autodiffplanned2028gradients inside the compiler, not outsourced to a runtime framework
GPU offload and accelerator loweringplanned2028only after CPU vector semantics are solid
AI library contracts (BLAS, cuBLAS, oneDNN) and REPLplanned2028the AI direction becomes a usable programming environment

Completed: 4.5 Release Record

Release theme: get as close as practical to a complete classic statement baseline, then reset the public source surface before the first public release.

WorkstreamStatusResult
for statement (to/downto)doneordinal for with ISO-like syntax, end-to-end through harness
repeat…untildoneclassic post-test loop, parser through harness
ordinal casedoneselector, constant labels, optional else; label lists/ranges deferred to 4.6
public library API naming resetdonelibrary namespaces lowercase, callable API PascalCase, no legacy spellings in shipped source
process librarydoneProgramName(), ArgCount(), Arg(index) — parameterless program entry point
concurrent assembly persist and exportdonedriver-side per-CU parallelism using parallel() pattern; deterministic diagnostics
backlog simplificationdoneactive planning surface reduced to roadmap + backlog
with statementdeferredkeyword at token level only; aliasing semantics unresolved

4.5 compatibility rules (baked in)

  1. No semicolon immediately before any else — consistent for both if…else and case…else
  2. begin…end is the required escape hatch for multiple statements before else
  3. program is always parameterless; process arguments arrive through the process library
  4. Keywords lowercase · library namespaces lowercase · callable API PascalCase
  5. No legacy lowercase public spellings in shipped Mica source artifacts
  6. case v1: ordinal selector, single constant labels, optional else — label lists and ranges are a 4.6 item
  7. for v1: ordinal, to/downto, no arbitrary step expressions