What makes Mica unique and powerful
Side effects are tracked at the type level through an explicit capability system:
Structured concurrency with guaranteed determinism:
First-class ADTs with exhaustive pattern matching:
Zero-cost abstractions with full type inference:
Move semantics and borrow checking (planned):
Ahead-of-time compilation with no surprises:
Every compiler stage is exposed:
Small, learnable language core:
Built for reliability:
Play well with existing ecosystems:
Keep code and docs in sync:
Designed for experimentation:
How Mica compares to other languages
| Feature | Mica | Rust | Go | Haskell |
|---|---|---|---|---|
| Memory Safety | ✓ Move semantics | ✓ Borrow checker | ✓ GC | ✓ GC |
| Effect System | ✓ Explicit capabilities | Traits only | None | ✓ IO monad |
| Deterministic Concurrency | ✓ Built-in | Manual with channels | Goroutines (non-det) | STM/Par monad |
| Learning Curve | ✓ Low (weekend) | High (months) | Low (week) | High (months) |
| Compile Times | ✓ Fast | Slow | ✓ Very fast | Moderate |
| Pattern Matching | ✓ Exhaustive | ✓ Exhaustive | Basic switch | ✓ Exhaustive |
| AOT Compilation | ✓ LLVM | ✓ LLVM | ✓ Native | ✓ GHC |
| Inspectable Pipeline | ✓ Every stage | Limited | Limited | Core dumps |
The principles guiding Mica's development
Effects, capabilities, and control flow are always visible. No hidden behavior or surprising action at a distance.
The type system and effect system prevent common errors at compile time. Deterministic execution prevents race conditions.
The compiler itself is designed to be a learning resource. Every module is documented and intentionally compact.
Exhaustive pattern matching, effect tracking, and testing infrastructure help ensure programs work as intended.
AOT compilation with LLVM, zero-cost abstractions, and explicit control over allocations and effects.
While learning-sized, Mica follows industrial compiler patterns: proper IR, staged compilation, and runtime systems.