# OC2R Rust Thin, synchronous access to the [OpenComputers II: Reimagined](https://github.com/North-Western-Development/oc2r) high-level API for Rust. This repository is a workspace and is divided into multiple crates: - `crates/oc2r-core`: mirrors the stock Lua helpers (`devices.lua`) so you can list devices, invoke methods, subscribe to events, and work with the low-level RPC primitives. - `crates/opencomputers`: provides strongly typed wrappers for the opencomputers HLAPI peripherals. - `crates/minapk`: minimal Alpine-style package installer tailored for OC2R Minux. ## Development To ease developpemnt we use [cross-rs](https://github.com/cross-rs/cross), but you can install all toolchain component or your local computer and replace cross with cargo. By default the option "-Zfmt-debug=none" is set meaning all debug print (:?) are off. You can disable this option at any time in `.cargo/config.toml`. There are more size optimisation done you can check the `.cargo/config.toml`, `Cargo.toml`, `Cross.toml` and [min-sized-rust](https://github.com/johnthagen/min-sized-rust) for more info. ## Compilation Simply do `cross clippy --all-targets` to compile everything For faster transfer you can simply compress binary and decompress it inside the vm ## Compression You can compress and decompress your files with those commands for faster transfer and/or disk usage. ```bash xz -9e --riscv --lzma2=dict=512KiB,lc=3,lp=0,pb=2 -c binary > binary.xz xz -d binary.xz ``` ## Examples Each crates has some examples of how to use it crate are in the `examples` directory. Copy the resulting binaries from `target//release/examples/` into Minux (an Import/Export card works well), mark them as executable and then execute them inside the VM.