13 releases (7 breaking)
new 0.8.0 | Jan 19, 2025 |
---|---|
0.7.0 | Mar 15, 2024 |
0.6.1 |
|
0.6.0 | Sep 10, 2023 |
0.1.2 | Sep 6, 2020 |
#65 in Programming languages
715KB
10K
SLoC
JanetRS
A crate with high level bindings to Janet C API.
Goals
Provide a safe and ergonomic interface to the Janet C API to create Janet clients and Janet modules/libraries using Rust.
This project still are in it's early stages, so breaking changes may happen, there is no minimal supported Rust version (MSRV) yet.
Cargo Features
std
: Enable some trait impl for types that only exist on thestd
and the Error traitunicode
: Enable more methods for JanetString and JanetBufferinline-more
: More aggressive inliningamalgation
: Link the Janet runtime to the package, enabling to use the client moduleunicode
: Enable some unicode methods for JanetString and JanetBuffersystem
: Use system header to get Janet functionslink-system
: Link the Janet runtime to the package from the system, enabling to use the client modulenightly
: Enable some parts of the crate that uses nightly features, to use this feature you must compile the crate using a nightly rust version
By default, the following features are enabled: std
, unicode
, amalgation
.
Note: If you don't need the Janet runtime (eg. making a Janet Library), you can use disable the default features
janetrs = { version = "0.7.0", default-features = false, features = ["std", "unicode"] }
Environment variables
These variables are only used when the amalgation
feature is enabled
It is possible to use environment variables to overwrite some Janet definitions.
JANET_RECURSION_GUARD=<integer>
JANET_MAX_PROTO_DEPTH=<integer>
JANET_MAX_MACRO_EXPAND=<integer>
JANET_STACK_MAX=<integer>
Licensing
This software is licensed under the terms of the MIT Public License.
TODO: Types: Lacking or Incomplete
- Marshaling
[ ]: Lacking
[I]: Incomplete
[X]: Done
Probably there is much more missing, for that you can use the lowlevel
module
to access the raw C API of Janet
TODO: Lib level
- Better docs.
- Marshalling mechanism
Acknowledgments
- Calvin Rose for creating this amazing language called Janet
- andrewchambers for janet_ll crate and discuss with us some ideas for the abstractions of this crate
Dependencies
~5–8.5MB
~141K SLoC