The Language

Mica — the language

The dragon is Mica’s mascot. He holds the sign activation function — sign y=(wx+b) — flanked by π and the atom. Mathematics and physics as native territory. He is not here to be intimidating. He is here to show that systems programming can have a personality.

Mica is a systems programming language as fast as C, with memory safety the compiler proves. Leaks, use-after-free, and double-free are build errors — caught by flow analysis, with no garbage collector, no borrow checker, and no lifetime annotations. Where the compiler can’t prove a pointer safe it doesn’t guess; it tells you exactly what it couldn’t prove, and a checked build turns any residual mistake into a loud, source-located trap instead of silent corruption.

The compiler is pure Go with zero external dependencies — no LLVM, no GCC backend — and was built from scratch as a solo project over years of development. It compiles to native Linux x86_64 and ARM64 binaries with DWARF v5 debug information, and speaks the platform C ABI directly in both directions: Mica calls any C library with no wrapper, and C can call Mica in return.

For the full story of how it got here: The Mica Story. For hands-on language material, start with Learning. For compiler internals and technical references, use Documentation — or jump to the Technical Portrait.

At a Glance

ParadigmStatically typed, compiled, procedural, with compile-time generics
Memory safetyLeaks, use-after-free, and double-free are compile errors (flow analysis; no GC, no borrow checker, no lifetimes); a checked build traps anything unprovable with a source line
Type systemStrong and ABI-aware; an ordinal universe (enums, subranges, sets, ordinal-indexed arrays); records, pointers, nil, recursive types
GenericsCompile-time, monomorphized, constrained by capabilities — no boxing, no runtime cost
StringsUTF-8 and UTF-32 (per target); fused concatenation (one allocation); compile-time format-string checks
Performancegcc -O2 parity on core benchmarks by retired-instruction count (reproducible from committed scripts)
C interopZero-overhead and bidirectional (Mica ↔ C); cross-language debugging in one DWARF session
TargetLinux x86_64 (System V AMD64) and ARM64 (AAPCS64)
DebuggingDWARF v5, GDB, VS Code
CompilerPure Go, zero external dependencies, no LLVM; ~100,000 lines; 2,799 commits since 2023

Using the Compiler

Mica has a single command-line driver. A typical compile-and-link (Linux x86_64; substitute arm64 for AArch64):

mica --compile --link \
     --optimize debug --assembly intel \
     --platform linux,amd64,utf-8 \
     --source program.mica \
     --build build/program

The flags you reach for most:

FlagShortPurpose
--compile / --link-c / -lcompile to assembly / link the result
--source / --build-s / -bcomma-separated .mica inputs / output directory
--optimize-odebug, release, checked, plus passes (e.g. full_optimizations)
--platform-pflinux,amd64,utf-8 · linux,arm64,utf-32
--assembly-asmintel or att
--output-modifier-omarchive (.a) or object (.so) — build a C-callable Mica library
--memory-class-mchosted (default) or fixed-arena=<size> for freestanding/no-OS-heap targets
--export-expsee inside the compiler — dump the token stream, AST, Spectra IL, control-flow graph / basic blocks, and SSA form

Reproducible by design. The performance figures on this site are gated on the deterministic retired-instruction count and come from committed measurement scripts. A Docker image that lets anyone reproduce the gcc -O2 comparison from a clean machine is on the way — nothing here is meant to be taken on faith.

The Author

I’m Michael, a software engineer with 30+ years in IT. I built my first compiler as a student in the early 1990s, from ETH Zürich teaching materials. Three decades later I came back to compiler construction — and built Mica, with AI as a co-development partner whose every line I review. The honest version of that story is in The Mica Story.

Get Started

The Company

Mica Development UG

Mica is developed and maintained by Mica Development UG (haftungsbeschränkt), founded in Germany.

The company logo carries the same dragon — but in a different role. Where the mascot is a character, the company mark is a brand: bold, structured, built to last. The two identities are intentionally distinct. A language needs a personality that developers remember. A company needs a mark that works across products. The dragon is the thread connecting both — the same spirit, a different register.

Mica the language is the first product. The goal is a broader ecosystem: tools, extensions, and infrastructure built on the same foundation. More is coming.

For questions, collaboration, or compiler discussion — info@mica-dev.com