# Installation
RCL is written in Rust and builds with [Cargo][cargo]. RCL has few dependencies,
so it’s quick and easy to build from source, but you can also use the prebuilt
binaries, or use the Nix flake.
[cargo]: https://doc.rust-lang.org/cargo/guide/
## Prebuilt binaries
Binaries for several platforms are available from the [GitHub releases page][gh-rel].
Download the one appropriate one to a location on your `PATH`, and make it
executable:
curl -Lo ~/.local/bin/rcl https://github.com/ruuda/rcl/releases/download/v0.12.0/rcl-0.12.0-x86_64-unknown-linux-gnu
chmod +x ~/.local/bin/rcl
rcl --help
[gh-rel]: https://github.com/ruuda/rcl/releases
## From source
To build from source, clone the repository from one of the two mirrors:
git clone https://github.com/ruuda/rcl.git
git clone https://codeberg.org/ruuda/rcl.git
Then build with [Cargo][cargo]. The repository includes a `rust-toolchain.toml`
file that specifies a compatible Rust version. When Cargo is managed by
[Rustup][rustup], Rustup will automatically fetch the right toolchain.
cargo build --release
Put the binary on your `PATH` to be able to use it system-wide, e.g.:
cp target/release/rcl ~/.local/bin
[cargo]: https://doc.rust-lang.org/cargo/guide/
[rustup]: https://rust-lang.github.io/rustup/index.html
See the [building chapter](building.md) for more details about building from
source, including cross-compilation and building static binaries.
## As a Nix flake
The repository includes a Nix flake. You can run RCL with a
[flake-enabled][flakes] version of [Nix][nix], such as Nix 2.18:
nix run 'github:ruuda/rcl?ref=v0.12.0' -- --help
[flakes]: https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake
[nix]: https://nixos.org/download
The Nix flake also includes the Python module:
PYTHONPATH=$(nix build github:ruuda/rcl?ref=v0.12.0#pyrcl --print-out-paths)/lib python3
The Nix flake also includes a shell with all the tools needed for development,
as well as the environment that is tested on CI.
## Python module
The Python module is available [from Pypi as `rcl-lang`][pypi]. You can install
it with your favorite Python package manager, e.g.:
uv run --with rcl-lang python3
>>> import rcl
>>> rcl.loads("10 + 32")
42
To build the Python module from source, see `README.md` in the `pyrcl` directory
in the repository.
[pypi]: https://pypi.org/project/rcl-lang/