"For God so loved the world, that He gave His only begotten Son, that all who believe in Him should not perish but have everlasting life." -- John 3:16

Haskelujah Chirho

A Haskell compiler written in Rust

Cranelift default backend. No LLVM required. WebAssembly built-in.
91.8% GHC test-suite compatibility. Faster than GHC.

91.8% GHC Compatibility 861 / 938 tests
150K+ Lines of Rust 21 crates
2,121 Total Tests 0 failures
3 Backends Cranelift, LLVM, Wasm

Why Haskelujah

A modern Haskell compiler designed for developer experience and performance.

C

No LLVM Required

Cranelift as the default backend means zero external dependencies. Install and compile immediately -- no LLVM toolchain setup, no version mismatches, no headaches.

L

LLVM When You Want It

Opt in to the LLVM backend for maximum optimization. Production builds benefit from LLVM 18 without forcing it on every developer.

W

WebAssembly Built-in

First-class Wasm target. Compile your Haskell to run in browsers, serverless edges, and embedded environments without any extra tooling.

G

GHC Compatible

91.8% compatibility with the GHC test suite. Type classes, GADTs, RankNTypes, ScopedTypeVariables, Template Haskell, and dozens more extensions.

R

Written in Rust

Memory-safe compiler infrastructure with predictable performance. No runtime GC pauses in the compiler itself. Fast incremental builds.

M

Runtime GC

Mark-sweep garbage collector via a Rust-based runtime system. Heap allocation tracking, automatic collection, and C ABI interop out of the box.

Performance

fib(40) benchmark -- compiled output runtime

Cranelift (default) 0.35s
LLVM (optional) 0.32s
GHC 9.8 0.39s

Lower is better. Cranelift compiles 4x faster than LLVM with comparable runtime performance.

Get Started

Up and running in seconds.

terminal
# Install Haskelujah
$ curl -fsSL https://haskelujah.org/install-chirho.sh | sh

# Create a new project
$ haskelujah init my-project
  Created my-project/
  Created my-project/Main.hs
  Created my-project/haskelujah.toml

# Build and run
$ haskelujah build-run .
  Compiling Main.hs ... done (0.04s)
  Hello, world!
Main.hs
module Main where

-- Fibonacci with pattern matching and guards
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)

main :: IO ()
main = putStrLn ("fib 40 = " ++ show (fib 40))

Architecture

21 focused Rust crates. 12-phase compilation pipeline.

Lex
Layout
Parse
Lower
Resolve
Kind Infer
Type Infer
Exhaustiveness
Desugar
Core/STG
Codegen
Link