Artichoke Ruby

? Artichoke is a Ruby made with Rust
Under MIT License
By artichoke

rust ruby webassembly language programming-language wasm rust-crate artichoke rust-application ruby-language

Artichoke Ruby

Artichoke is a Ruby implementation written in Rust and Ruby. Artichoke intends
to be MRI-compatible and targets Ruby 2.6.3. Artichoke provides a
Ruby runtime implemented in Rust and Ruby.

Try Artichoke

Artichoke Ruby Wasm Playground

You can try Artichoke in your browser. The Artichoke
Playground runs a WebAssembly build of Artichoke.

Install Artichoke
Prebuilt nightly binaries

Download a prebuilt binary from artichoke/nightly. Binaries are
available for Linux, Linux/musl, macOS, and Windows.

These daily binaries track the latest trunk branch of Artichoke.

Binaries are also distributed through ruby-build. To install with rbenv:

$ rbenv install artichoke-dev


You can install a pre-release build of Artichoke using cargo, Rust's package
manager, by running:

$ cargo install --git --branch trunk --locked artichoke

To install via cargo install or to checkout and build locally, you'll need
Rust, clang, and Ruby. has more detail on
how to set up the compiler toolchain.


Artichoke is available on Docker Hub.

You can launch a REPL by running:

docker run -it airb


Artichoke ships with two binaries: airb and artichoke.


airb is the Artichoke implementation of irb and is an interactive Ruby shell
and REPL.

airb is a readline-enabled shell, although it does not persist history.


artichoke is the ruby binary frontend to Artichoke.

artichoke supports executing programs via files, stdin, or inline with one or
more -e flags.

Artichoke can require, require_relative, and load files from the local
filesystem, but otherwise does not yet support local filesystem access. A
temporary workaround is to inject data into the interpreter with the
--with-fixture flag, which reads file contents into a $fixture global.

$ artichoke --help
artichoke 0.1.0-pre.0
Artichoke is a Ruby made with Rust.

artichoke [FLAGS] [OPTIONS] [--] [programfile]...

--copyright print the copyright
-h, --help Prints help information
-V, --version Prints version information

-e ... one line of script. Several -e's allowed. Omit [programfile]
--with-fixture file whose contents will be read into the $fixture global


Design and Goals

Artichoke is designed to enable experimentation. The top goals of
the project are:


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

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. Good first issues are labeled


If you'd like to engage in a discussion outside of GitHub, you can join
Artichoke's public Discord server.


artichoke is licensed with the MIT License (c) Ryan Lopopolo.

Some portions of Artichoke are derived from third party sources. The READMEs in
each workspace crate discuss which third party licenses are applicable to the
sources and derived works in Artichoke.