Build software that doesn't crash.
// counter.nula — a stateful actor
actor Counter {
state count: Int = 0
behavior inc() {
self.count = self.count + 1
}
}
fn main() {
let c = spawn Counter {}
c ! inc()
}Everything you need to ship
A complete language for distributed systems, not a piecemeal collection of tools.
Durable actors
Failures are isolated and restarted automatically. Supervision trees, durable workflows, and saga compensation keep your program running through crashes and restarts.
Built-in AI primitives
Perform LLM calls as algebraic effects, wire up agent pipelines, debates, and supervisor teams with episodic, semantic, and procedural memory.
Location-transparent distribution
Move a service from one node to many without rewriting code. Actors communicate through messages, with automatic clustering and CRDT state replication.
From zero to running in three commands
Clone, build, and start experimenting. No YAML, no infrastructure.
Clone the repo
Get the source from GitHub and enter the project directory.
git clone https://github.com/nulang-org/nulangBuild the compiler
Compile the Rust toolchain and runtime in release mode.
cargo build --releaseStart the REPL
Run nulang interactively and start writing your first actor.
cargo run -- --replDurable when you ask for it
Ordinary actors are fast and in-memory. Mark an actor persistent — as in persistent actor Counter — and every external operation (messages, effects, timers) is journaled as part of its execution log. If a persistent actor crashes mid-flight, it replays from the last checkpoint and picks up exactly where it left off.
Journaling and checkpointing for persistent actors
Saga compensation for safe rollbacks
Persistent actors survive crashes and restarts
Human approval workflows that wait for days if needed
$ nulang nula build-wasm
Building counter (WASM AOT)...
Compiling src/main.nula to WASM...
WASM AOT build succeeded.
$ nulang nula deploy --wasm
Compiling counter to .nbc...
Compiling counter to .wasm + .cwasm...
Deploying counter to https://deploy.nulang.cloud ...
Deployed! -> https://counter-7f3a9c.nulang.cloud (healthy)Language Features
Explore the core capabilities that make Nulang different.
Distributed Actors
Location-transparent actors with BEAM/OTP primitives — spawn, link, monitor, supervise. Automatic clustering with gossip membership and CRDT state replication.
Algebraic Effects
Koka-inspired row-polymorphic effects with compile-time checking. Handle, perform, resume — algebraic effect handlers compose freely without monad transformers.
Row-Polymorphic Types
Full Hindley-Milner type inference with row polymorphism for both records and effects. Pony-inspired reference capabilities (iso, trn, ref, val, box, tag) enforced at compile time.
BEAM/OTP Primitives
Supervision trees (one_for_one, one_for_all, rest_for_one, simple_one_for_one), process groups, named registration, and exit trapping — battle-tested fault tolerance patterns.
WASM Backend
Compile to WebAssembly with full MIR→WASM translation. Run in Wasmtime with 4GiB guard pages, SIMD support, and AOT compilation for near-native performance.
AI Runtime
Built-in LLM integration with provider-agnostic API (OpenAI, Ollama). Agent pipelines, debate teams, supervisor hierarchies, and episodic/semantic/procedural memory.
Learn & Contribute
Nulang.org is the home for the language — documentation, tutorials, and the open-source community. When you’re ready to deploy actors to production, head to Nulang Cloud.
Support Nulang
The language is free and open source. Help us keep building the future of durable software.
Ready to ship?
Nulang is open source under the Apache 2.0 license. Get started, contribute on GitHub, or support its ongoing development.