Skip to content
Try Nulang

Installation

The browser playground runs the Nulang Core subset locally in WebAssembly. It does not support actors, networking, FFI, JIT, or the full native runtime. For those capabilities, install a binary.

Tagged releases publish checksummed archives on GitHub Releases. A release asset is available only after its release workflow has completed successfully. You do not need Rust or the Nulang source tree to install a published binary.

Platform Release archive
Linux x86_64 nulang-linux-x86_64.tar.gz
Linux aarch64 nulang-linux-aarch64.tar.gz
macOS Apple Silicon nulang-macos-aarch64.tar.gz
Windows x86_64 nulang-windows-x86_64.tar.gz

Download the archive and matching .sha256 file from the same tagged release. Choose the archive for your operating system and CPU architecture.

From the directory containing the downloaded files:

Terminal window
sha256sum -c nulang-linux-x86_64.tar.gz.sha256
tar xzf nulang-linux-x86_64.tar.gz
mkdir -p "$HOME/.local/bin"
install -m 0755 nulang-linux-x86_64 "$HOME/.local/bin/nulang"
"$HOME/.local/bin/nulang" --eval 'perform IO.print("Hello, Nulang!")'

Add $HOME/.local/bin to PATH if it is not already there. For Linux aarch64, replace linux-x86_64 with linux-aarch64 in the commands.

After downloading both release files:

Terminal window
shasum -a 256 -c nulang-macos-aarch64.tar.gz.sha256
tar xzf nulang-macos-aarch64.tar.gz
mkdir -p "$HOME/.local/bin"
install -m 0755 nulang-macos-aarch64 "$HOME/.local/bin/nulang"
"$HOME/.local/bin/nulang" --eval 'perform IO.print("Hello, Nulang!")'

Add $HOME/.local/bin to PATH if needed. A macOS Intel binary is not currently part of the release matrix; building from source is an alternative on supported systems.

Download the two nulang-windows-x86_64 release files. On PowerShell, compare the SHA-256 digest returned by Get-FileHash .\nulang-windows-x86_64.tar.gz -Algorithm SHA256 with the value in the downloaded .sha256 file before extracting.

Terminal window
tar -xzf .\nulang-windows-x86_64.tar.gz
Rename-Item .\nulang-windows-x86_64 nulang.exe
.\nulang.exe --eval 'perform IO.print("Hello, Nulang!")'

The release archive contains a platform-qualified executable that must be renamed nulang.exe. Move it to a dedicated folder on your PATH if you want to invoke nulang from other directories.

Platform library requirements: The prebuilt archives contain an executable, not an isolated runtime with every shared library bundled. In an actual October 11, 2026 Linux x86_64 release-build artifact, readelf -d nulang identified dependencies on libpython3.12.so.1.0, libssl.so.3, and libcrypto.so.3. On a Linux installation with only Python 3.13, the executable failed to start with libpython3.12.so.1.0: cannot open shared object file. Check dependencies before assuming a downloaded binary is portable:

Terminal window
ldd "$HOME/.local/bin/nulang" | grep -E 'python|ssl|crypto|not found'

For a missing dependency, install the matching system-provided, ABI-compatible shared library where available, or build Nulang from source for your distribution. Do not symlink an incompatible Python library version (for example, Python 3.13 to a Python 3.12 SONAME). For a compiler/runtime build without the Python integration and its linkage, use cargo build --locked --release --no-default-features, recognizing that optional features will be unavailable. The specific shared-library dependencies of macOS and Windows archives may differ; test those binaries on clean supported machines before considering their portability verified.

Support boundary: Releases are CI-built for the listed platforms, not guaranteed to start on every distribution or OS revision. Nulang is alpha software, not yet a production compatibility guarantee.

Build from source (contributors and custom profiles)

Section titled “Build from source (contributors and custom profiles)”

A source build requires:

  • Rust 1.95.0, pinned by rust-toolchain.toml (rustup)
  • Python 3 development headers for the default PyO3 interop feature
  • A native C compiler and linker (plus other native dependencies of enabled features)
  • Linux or macOS. On Windows, the documented source-build route is WSL; the Windows prebuilt executable above is separate.
Terminal window
git clone https://github.com/nulang-org/nulang.git
cd nulang
cargo build --locked --release
./target/release/nulang --eval 'perform IO.print("Hello, Nulang!")'

Source builds with all default features can be costly. For a smaller compiler/runtime build, use --no-default-features; this changes which optional integrations are available.

Nulang supports optional features for leaner builds:

Terminal window
# Minimal build (no Python, SQLite, LSP, AI runtime, or networking)
cargo build --release --no-default-features
# With WASM backend
cargo build --release --features wasm-backend
# All features
cargo build --release --all-features
Feature Default Description
native-codegen On Cranelift-backed tiered JIT and the native/AOT backend
python On PyO3 Python interop
sqlite On libsql/Turso persistence
lsp On tower-lsp language server
ai-runtime On AI runtime — LLM providers, pipelines, debates, supervisor teams
tls On TLS support for the TCP transport
ffi On Dynamic native library loading (extern FFI) via libloading/libffi
tcp On Raw TCP networking — distributed-actor transport, HTTP server, metrics/registry/DAP servers
ureq On Synchronous HTTP client for Http.get/Http.post, the registry client, and nula deploy
wasm-backend Off WASM compiler + Wasmtime runtime (enables --backend wasm|wasm-run|wasm-aot)
wasmfx-backend Off WasmFX stack-switching backend for suspending effects (requires wasm-backend)
http-client Off Async HTTP client (reqwest)
rocksdb Off RocksDB persistence backend
postgres Off PostgreSQL persistence backend
otel Off OpenTelemetry observability
difffuzz Off Differential fuzzing driver binary
Terminal window
# Run the test suite
cargo test
# Start the REPL
cargo run -- --repl
# Run a Nulang program
cargo run -- examples/01_hello.nula

Install Python development headers:

Terminal window
sudo dnf install python3-devel

The build.rs script automatically creates a libpythonX.Y.so symlink for PyO3 linking.

Install Python via Homebrew:

Terminal window
brew install python@3.14

After installing Nulang, follow the Quick Start guide to write your first program, and set up your editor with the VS Code extension or the language server.