Skip to content

diegopacheco/artichoke

Β 
Β 

Repository files navigation

Artichoke Ruby

CircleCI Core documentation Virtual filesystem documentation mruby backend documentation mruby-sys documentation

Artichoke is a Ruby implementation written in Rust. Artichoke aspires to be source-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:

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.
  • No equivalent C API, which means C extensions are unsupported.

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.

About

πŸ’Ž Artichoke is a Ruby made with Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 63.7%
  • Ruby 33.2%
  • C 1.0%
  • HTML 0.8%
  • Shell 0.7%
  • JavaScript 0.5%
  • C++ 0.1%