# racket-sys [![crates.io](https://img.shields.io/crates/v/racket-sys.svg)](https://crates.io/crates/racket-sys) Rust bindings to Racket C API About Racket: [https://racket-lang.org/](https://racket-lang.org/). ## Prerequisites: - Base env: `Rust` toolchain, `Clang` toolchain and `Racket` installation - Windows: `Visual Studio` - MacOS: `Xcode CommandLine tools`, `iconv`, `ncurses` - Linux: - Only tested on Ubuntu 24.04 - `sudo apt install racket libncurses-dev`, `liblz4-dev`, `libzstd-dev` ## Installation: ### Use bundled Racket (default feature): This crate includes a prebuilt Racket runtime for Windows, MacOS, and Linux. - For Windows and MacOS, the bundled Racket comes from official Racket distribution. - For Linux, the bundled Racket comes from Ubuntu APT. ### Use system Racket: Set environment variables (see below): - `RACKET_CS_VERSION`: Only for MacOS. If not set, default to `8.15`. - `RACKET_CS_HOME`: Racket installation directory. If not set, default to: - Windows: `C:\Program Files\Racket` - MacOS: `/Applications/Racket v{RACKET_CS_VERSION}` - Linux: `/usr` ## Examples: - helloworld [examples/helloworld.rs](examples/helloworld.rs): ``` cargo run --example helloworld ``` screenshot on Windows: - factorial [examples/factorial.rs](examples/factorial.rs) and [examples/factorial.rkt](examples/factorial.rkt): This example demos how to require Racket module from Rust code. ``` cargo run --example factorial ``` screenshot on Windows: Note: set env variable `RKT_COLLECTS_DIR` to `racket installation/collects`. For example, on MacOS: ``` RKT_COLLECTS_DIR=/Applications/Racket\ v8.13/collects cargo run --example factorial ``` ## APIs: [https://rn7s2.github.io/racket-sys/racket_sys/](https://rn7s2.github.io/racket-sys/racket_sys/) Read [https://docs.racket-lang.org/inside/cs-embedding.html](https://docs.racket-lang.org/inside/cs-embedding.html) for more information on how to embed Racket in your application.