12个版本 (6个重大更改)

0.7.0 2024年3月15日
0.6.0 2023年9月10日
0.5.0 2021年12月5日
0.4.1 2021年9月7日
0.1.2 2020年9月6日

#77 in 编程语言

自定义许可

670KB
10K SLoC

JanetRS

Hits-of-Code Build Status Crates.io Docs latest release Docs dev branch MIT license

一个使用Rust语言为Janet C API提供高级绑定的crate。

目标

提供一个安全且易于使用的接口来访问Janet C API,以便使用Rust创建Janet客户端和模块/库。

该项目仍处于早期阶段,可能会有重大更改,目前还没有最低支持的Rust版本(MSRV)。

注意,如果未设置功能"almagation"或"link-system",则大多数文档测试将失败,因为这些测试大多数需要Janet运行时才能正常工作。

Cargo特性

  • std:为仅存在于std的类型启用一些trait实现,以及Error trait
  • unicode:为JanetString和JanetBuffer启用更多方法
  • inline-more:更激进的内联
  • amalgation:将Janet运行时链接到包中,启用使用客户端模块
  • unicode:为JanetString和JanetBuffer启用一些Unicode方法
  • system:使用系统头文件来获取Janet函数
  • link-system:从系统将Janet运行时链接到包中,启用使用客户端模块
  • nightly:启用crate中使用的nightly功能的一些部分,要使用此功能,您必须使用nightly Rust版本编译crate

环境变量

这些变量仅在启用amalgation特性时使用

可以使用环境变量覆盖一些Janet定义。

  • JANET_RECURSION_GUARD=<整数>
  • JANET_MAX_PROTO_DEPTH=<整数>
  • JANET_MAX_MACRO_EXPAND=<整数>
  • JANET_STACK_MAX=<整数>

许可协议

本软件依据 MIT 公共许可协议 许可。

TODO: 类型:缺少或未完善

  • 序列化

[ ]: 缺少 [I]: 不完整 [X]: 完成

可能还有更多内容缺失,您可以使用 lowlevel 模块来访问 Janet 的原始 C API

TODO: 库级别

  • 更好的文档。
  • 序列化机制

致谢

  • 感谢 Calvin Rose 创建了这个叫做 Janet 的惊人语言
  • 感谢 andrewchambers 为 Janet_ll crate 做出贡献,并与我们就这个 crate 的抽象讨论了一些想法

依赖项

~5–8MB
~135K SLoC