#编程语言 #绑定 #janet

sys janet-rs-sys

Janet 编程语言的原始 Rust 绑定

1 个不稳定版本

0.1.0 2023年9月25日

#2243 in 开发工具

MIT 许可证

1MB
30K SLoC

C 29K SLoC // 0.1% comments Batch 152 SLoC Rust 55 SLoC // 0.1% comments Shell 54 SLoC // 0.0% comments

janet-rs-sys

Janet 编程语言的原始 Rust 绑定

use janet_rs_sys::*;
use std::ffi::*;

fn main()
{
    let result = unsafe { janet_init() };
    assert_eq!(result, 0);

    let env = unsafe { janet_core_env(std::ptr::null_mut()) };

    let code =
        CString::new(r#"(print "Hello World!")"#).unwrap().as_c_str().as_ptr();

    let file = CString::new("hello-world.janet").unwrap().as_c_str().as_ptr();

    let result =
        unsafe { janet_dostring(env, code, file, std::ptr::null_mut()) };
    assert_eq!(result, 0);
}

注意

目前,由于 bindgen 在 FFI 层使用 u128 导致的一些奇怪错误,这些绑定仅在 Windows 上工作。由于在 Nix 平台上难以确定错误,因此可能没有太多工作要做以使 Linux 和 MacOS 版本工作。

依赖项

在项目中使用 janet-rs-sys 时需要这些依赖项

  • Meson: 构建 Janet
  • Ninja: 由 Meson 使用
  • Clang: Bindgen 使用 libclang

开发依赖项

初始化子模块

$ git submodule update --init --recursive

Windows

janet-rs-sys 的开发过程中,需要在 Windows 上使用 Visual Studio 开发者命令提示符来构建。

无运行时依赖

~0–2.6MB
~43K SLoC