Installation
Try Nulang without installing
Section titled “Try Nulang without installing”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.
Install a tagged release (recommended)
Section titled “Install a tagged release (recommended)”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.
Linux example (x86_64)
Section titled “Linux example (x86_64)”From the directory containing the downloaded files:
sha256sum -c nulang-linux-x86_64.tar.gz.sha256tar xzf nulang-linux-x86_64.tar.gzmkdir -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.
macOS (Apple Silicon)
Section titled “macOS (Apple Silicon)”After downloading both release files:
shasum -a 256 -c nulang-macos-aarch64.tar.gz.sha256tar xzf nulang-macos-aarch64.tar.gzmkdir -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.
Windows (x86_64)
Section titled “Windows (x86_64)”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.
tar -xzf .\nulang-windows-x86_64.tar.gzRename-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:
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.
git clone https://github.com/nulang-org/nulang.gitcd nulangcargo 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.
Feature Flags
Section titled “Feature Flags”Nulang supports optional features for leaner builds:
# Minimal build (no Python, SQLite, LSP, AI runtime, or networking)cargo build --release --no-default-features
# With WASM backendcargo build --release --features wasm-backend
# All featurescargo 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 |
Verify a source build
Section titled “Verify a source build”# Run the test suitecargo test
# Start the REPLcargo run -- --repl
# Run a Nulang programcargo run -- examples/01_hello.nulaSystem-Specific Notes
Section titled “System-Specific Notes”Fedora Linux
Section titled “Fedora Linux”Install Python development headers:
sudo dnf install python3-develThe build.rs script automatically creates a libpythonX.Y.so symlink for PyO3 linking.
Install Python via Homebrew:
brew install python@3.14Next Steps
Section titled “Next Steps”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.