Idris has always promised something bold: encode correctness directly into the type system. In 2026, with Idris 2 firmly established, it’s worth revisiting whether that promise translates into production-grade reality.
Short answer: yes, in the right places.
Idris 1 vs Idris 2
Idris 1
- Proof-of-concept era
- Slow compiler, heavy memory usage
- Research-focused ergonomics
- Effectively legacy
Idris 2
- Complete reimplementation
- Faster compilation and smaller core
- Multiple backends (Chez Scheme default, C available)
- Actively maintained and stable
If you’re evaluating Idris today, Idris 2 is the only sensible choice.
The core idea, in code
Idris doesn’t just type-check values — it type-checks facts.
Length-safe vectors
data Vect : Nat -> Type -> Type where
Nil : Vect 0 a
(::) : a -> Vect n a -> Vect (S n) a
Concatenation proves length correctness:
append : Vect n a -> Vect m a -> Vect (n + m) a
append Nil ys = ys
append (x :: xs) ys = x :: append xs ys
No runtime checks. The compiler enforces the invariant.
Totality: making partial logic illegal
total
head : Vect (S n) a -> a
head (x :: _) = x
This function cannot be called on an empty vector. Invalid states are unrepresentable.
Idris 2 ergonomics (the nitty-gritty)
- Compiler & performance: Significantly faster than Idris 1, reasonable compile times
- Error messages: Improved structure, still proof-oriented and verbose
- Tooling: LSP support exists, interactive editing is powerful, docs are uneven
Usable, but not luxurious.
Linearity and resource safety
useOnce : (1 x : a) -> a
useOnce x = x
Linear types enable compile-time guarantees around resource usage: no double-use, no leaks, no implicit copying.
Is Idris ready for production?
Where Idris shines
- Protocols and state machines
- Parsers, DSLs, validation-heavy logic
- Compilers and interpreters
- Correctness-critical business logic
Where it struggles
- Small ecosystem
- Hiring challenges
- Interop overhead
- Not ideal for fast-moving CRUD apps
Idris works best as a correctness core, not a default full-stack choice.
Mainline development or niche tool?
Idris isn’t trying to replace Go, Rust, or TypeScript.
It’s for teams asking:
- What if the compiler enforced our invariants?
- What if tests were secondary to types?
In 2026, Idris 2 is stable enough for real systems, if your team is willing to think in types.
Final take
Idris is no longer just a research curiosity.
Idris 2 is production-capable for the right domains, offering unmatched guarantees at compile time.
If correctness is your top priority, Idris is quietly excellent.
Top comments (0)