17 releases

new 0.5.11 Jan 7, 2025
0.4.11 Oct 26, 2024
0.4.9 Sep 8, 2024
0.4.8 Jun 6, 2024
0.2.1 Aug 12, 2023

#352 in Rust patterns

Download history 56/week @ 2024-09-17 52/week @ 2024-09-24 202/week @ 2024-10-01 163/week @ 2024-10-08 129/week @ 2024-10-15 305/week @ 2024-10-22 241/week @ 2024-10-29 132/week @ 2024-11-05 172/week @ 2024-11-12 187/week @ 2024-11-19 157/week @ 2024-11-26 138/week @ 2024-12-03 72/week @ 2024-12-10 44/week @ 2024-12-17 14/week @ 2024-12-24 115/week @ 2024-12-31

248 downloads per month

MIT license

65KB
1.5K SLoC

BYONDAPI-rs - Safe rust bindings for BYONDAPI

This crate implements a rusty safe API for using BYONDAPI.

WARNING

This library automatically initializes on the first function call, using OnceCell. This initialization can fail in one circumstance: where the symbols needed by the BYONDAPI are not found in the current executable.

The only sane way to handle this is to panic, which will inevitably unwind across the FFI barrier, which is undefined behavior.

There's two ways to fix this and I've chosen the second:

  1. Make the library API substantially worse by forcing every function to take an argument to a library struct.
  2. Wait for bindgen to stabilize the C-unwind abi

Testing

In order to successfully run cargo test, you must have the following files from the most recent BYOND version in your library search path. For Windows, I recommend copying

For Windows, I recommend copying the following files to the crate root, crates/byondapi-rs/:

  • byond/bin/byondcore.dll
  • byond/bin/byondext.dll
  • byond/bin/byondwin.dll

For Linux, ensure these are in your LD_LIBRARY_PATH:

  • byond/bin/libbyond.so
  • byond/bin/libext.so

Failure to do this will result in an error when trying to run tests.

Dependencies

~0.3–7MB
~54K SLoC