A modern language
built for clarity.

Statically typed. Compiled straight to native binaries. Built-in concurrency, real macros, and OOP without the boilerplate.

$ git clone github.com/syntaxjason/emerald
hello.ems
Result: 120
Native
Compiled binaries
0ms
Runtime overhead
3
Concurrency tiers
8
Sprints shipped

Everything you'd expect.
Nothing you wouldn't.

A small core, carefully chosen. Familiar syntax from Java and Kotlin, with the safety of Rust's type system underneath.

Start without ceremony

No mandatory main(). No public-static-void boilerplate. Write five lines and run them. Scale into a full app when you're ready.

Real OOP without bloat

Classes, interfaces, generics, data classes. Auto-generated equals, copy, and toString. No 80-line POJOs.

Concurrency built in

Fiber, Thread, VirtualThread — same API, different runtime strategies. Channels and Mutex included.

Pattern matching

Match on literals, ranges, types, and destructured data classes. With guards and exhaustiveness checking.

No null. Use Result.

Errors are values. Match on Ok and Err. The compiler ensures you handle both. No more NullPointerException.

Real macros

Write macros in Emerald itself. Manipulate the AST at compile time. Zero runtime cost.

Watch three fibers
race in parallel.

Three tiers for three workloads. Same API for all three. The visualization below is real timing — three slowDouble() calls run concurrently, each sleeps a different amount, all results sum to 120.

Fiber
Cooperative scheduling
Lightweight. Spawn millions. Native scheduler.
Thread
OS-level threads
For true parallelism on CPU-bound work.
VThread
Virtual threads
For I/O-heavy code. Auto-promotes on blocking.
Fiber a · slowDouble(10)
→ 20
Fiber b · slowDouble(20)
→ 40
Fiber c · slowDouble(30)
→ 60
a.await() + b.await() + c.await() =···

Watch macros expand,
at compile time.

Annotations transform your code into something larger. Pick a built-in below to see what the compiler generates. Zero runtime cost — it's all done before your binary is built.

You write
Compiler generates

From source to silicon.

Emerald compiles straight to LLVM IR, then down to a single, dependency-free native binary. No transpilation step, no VM, no runtime to install.

app.ems
LLVM IR
./app

Build it in five minutes.

Emerald compiles straight to a native binary through LLVM — no VM, no runtime to install. Clone the compiler, build it once, then compile your first .ems file.

terminal
$ git clone https://github.com/syntaxjason/emerald
$ cd emerald/compiler
$ shards build --release

Then build your first program:

$ ./bin/emeraldc build hello.ems -o hello
$ ./hello
Hello, Emerald!