GitHub - artichoke/artichoke: ? Artichoke is a Ruby made with Rust
source link: https://github.com/artichoke/artichoke
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Artichoke Ruby
Artichoke is a Ruby implementation written in Rust. Artichoke aspires to be compatible with Ruby 2.6.3.
Why Artichoke?
Artichoke is a work-in-progress. When functional, Artichoke will improve upon MRI in the following ways:
- ❌True parallelism with no GIL.
- ❌Optional multi-threading.
- ❌Deterministic garbage collection.
- ✅ Single binary distribution (all Ruby sources from core and stdlib are
embedded in
artichoke
executable). - ❌WebAssembly build target. Partially supported with the wasm32-unknown-emscripten target on the playground.
- ❌MRI-compatible C API.
- ❌mruby-compatible
C API (all 311
MRB_API
functions). - ❌Emoji identifiers (classes, modules, methods, variables) ?.
- ❌Optional Standard Library.
- ✅Native Rust extensions exposed via
require
of virtual files. - ❌Filesystem access is either via the system or via an in-memory virtual filesystem.
Artichoke will deviate from MRI in the following ways:
- The only supported encodings are UTF-8, maybe UTF-8, and binary.
- Ruby source files are always interpreted as UTF-8.
ruby/spec
Artichoke intends to pass 100% of ruby/spec with the
exception of specs for non-UTF-8 encodings. To view current progress on
ruby/spec compliance, see
scripts/spec-compliance.sh
or the tracking
milestones for ❌language, ❌Core, and ❌Standard Library.
Try Artichoke
You can try Artichoke in your browser. The Artichoke Playground runs a WebAssembly build of Artichoke.
If you would prefer to run a local build, set up a Rust toolchain and launch an interactive Artichoke shell with:
cargo run -p artichoke-frontend --bin airb
Contributing
Artichoke aspires to be a Ruby 2.6.3-compatible implementation of the Ruby programming language. There is lots to do.
If Artichoke does not run Ruby source code in the same way that MRI does, it is a bug and we would appreciate if you filed an issue so we can fix it.
If you would like to contribute code ????, find an issue that looks interesting and leave a comment that you're beginning to investigate. If there is no issue, please file one before beginning to work on a PR.
Discussion
If you'd like to engage in a discussion outside of GitHub, you can join Artichoke's public Discord server.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK