A modern language
built for clarity.

Statically typed. Compiled 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. Crystal-backed.
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 to Crystal source, which Crystal compiles via LLVM. You get a single, dependency-free binary. No VM. No runtime to install.

app.ems
app.cr
LLVM IR
./app

Build it in five minutes.

Emerald is built on Crystal. You'll need Crystal 1.20+ installed. Then clone, build, and write 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!