https://github.com/artichoke/artichoke Skip to content Sign up * Why GitHub? Features - + Code review + Project management + Integrations + Actions + Packages + Security + Team management + Hosting + Mobile + Customer stories - + Security - * Team * Enterprise * Explore + Explore GitHub - Learn & contribute + Topics + Collections + Trending + Learning Lab + Open source guides Connect with others + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing Plans - + Compare plans + Contact Sales + Nonprofit - + Education - [ ] [search-key] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} artichoke / artichoke * Watch 39 * Star 1.8k * Fork 66 Artichoke is a Ruby made with Rust www.artichokeruby.org/ MIT License 1.8k stars 66 forks Star Watch * Code * Issues 101 * Pull requests 3 * Actions * Security * Insights More * Code * Issues * Pull requests * Actions * Security * Insights trunk 9 branches 0 tags Go to file Code Clone HTTPS GitHub CLI [https://github.com/a] Use Git or checkout with SVN using the web URL. [gh repo clone artich] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching Xcode If nothing happens, download Xcode and try again. Go back Launching Visual Studio If nothing happens, download the GitHub extension for Visual Studio and try again. Go back Latest commit @lopopolo lopopolo Merge pull request #993 from artichoke/dependabot/cargo/ smallvec-1.6.0 ... 2d67d85 Jan 1, 2021 Merge pull request #993 from artichoke/dependabot/cargo/ smallvec-1.6.0 Bump smallvec from 1.5.1 to 1.6.0 2d67d85 Git stats * 3,927 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Test for memory leaks with LeakSanitizer in CI Dec 28, 2020 .vscode Add VSCode launch config May 13, 2020 artichoke-backend Address clippy violations with Rust 1.49.0 Dec 31, 2020 artichoke-core Do a sweep through markdown docs Dec 24, 2020 fuzz Integrate spinoso-regexp into artichoke-backend Dec 30, 2020 scolapasta-hex Enable clippy::needless_borrow lint Nov 23, 2020 scolapasta-string-escape Add Literal::empty constructor to scolapasta-string-escape Dec 30, 2020 spec-runner Revendor mruby at artichoke/mruby@artichoke-vendor.6 Dec 30, 2020 spinoso-array Add rustfmt.toml and set max line length to 119 Dec 16, 2020 spinoso-env Add rustfmt.toml and set max line length to 119 Dec 16, 2020 spinoso-exception Fixup some deviations from preferred style Dec 16, 2020 spinoso-math Add rustfmt.toml and set max line length to 119 Dec 16, 2020 spinoso-random Address clippy violations with Rust 1.49.0 Dec 31, 2020 spinoso-regexp Split Regexp source from derived config Dec 30, 2020 spinoso-securerandom Fixup clippy warnings in test targets Dec 28, 2020 spinoso-symbol Add Literal::empty constructor to scolapasta-string-escape Dec 30, 2020 spinoso-time Add rustfmt.toml and set max line length to 119 Dec 16, 2020 src Amortize double pointer deref on Artichoke State Dec 27, 2020 .clang-format Add a clang-format configuration Jul 19, 2020 .editorconfig Switch to Rake for dev environment orchestration Feb 21, 2020 .eslintignore Only prettier ignore subdirectories of vendor Aug 20, 2019 .gitignore Transition main branch to be 'trunk' Dec 16, 2020 .prettierignore Ignore .vscode folder from prettier May 13, 2020 .prettierrc.yaml Lint YAML with yamllint Sep 4, 2020 .rubocop.yml Lint YAML with yamllint Sep 4, 2020 .ruby-version Bump ruby version May 28, 2019 .yamllint.yaml Lint YAML with yamllint Sep 4, 2020 BUILD.md Do a sweep through markdown docs Dec 24, 2020 CONTRIBUTING.md Do a sweep through markdown docs Dec 24, 2020 Cargo.lock Bump smallvec from 1.5.1 to 1.6.0 Jan 1, 2021 Cargo.toml Integrate spinoso-regexp into artichoke-backend Dec 30, 2020 Gemfile Bump rubocop from 1.6.1 to 1.7.0 Dec 28, 2020 Gemfile.lock Bump rubocop from 1.6.1 to 1.7.0 Dec 28, 2020 LICENSE Initial commit Apr 7, 2019 README.md Update cargo install instructions to declare 'trunk' branch Dec 18, 2020 RUBYSPEC.md Convert spec-runner configuration file from YAML to TOML Dec 23, 2020 Rakefile Fixup clippy warnings in test targets Dec 28, 2020 VISION.md Do a sweep through markdown docs Dec 24, 2020 build.rs Add rustfmt.toml and set max line length to 119 Dec 16, 2020 clippy.toml Stop disabling clippy::doc_markdown lint Nov 22, 2020 deny.toml Add exception for cfg-if 0.1 to cargo-deny config Dec 22, 2020 rust-toolchain Upgrade Rust toolchain to 1.49.0 Dec 31, 2020 rustfmt.toml Add rustfmt.toml and set max line length to 119 Dec 16, 2020 View code README.md Artichoke Ruby GitHub Actions Discord Twitter Crate API API trunk Artichoke Ruby logo 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 WebAssembly playground 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 Cargo You can install a pre-release build of Artichoke using cargo, Rust's package manager, by running: cargo install --git https://github.com/artichoke/artichoke --branch trunk --locked artichoke To install via cargo install or to checkout and build locally, you'll need Rust, clang, and Ruby. BUILD.md has more detail on how to set up the compiler toolchain. Docker Artichoke is available on Docker Hub. You can launch a REPL by running: docker run -it docker.io/artichokeruby/artichoke airb Usage Artichoke ships with two binaries: airb and artichoke. airb 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 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. USAGE: artichoke [FLAGS] [OPTIONS] [--] [programfile] FLAGS: --copyright print the copyright -h, --help Prints help information -V, --version Prints version information OPTIONS: -e ... one line of script. Several -e's allowed. Omit [programfile] --with-fixture file whose contents will be read into the `$fixture` global ARGS: Design and Goals Artichoke is designed to enable experimentation. The top goals of the project are: * Support WebAssembly as a build target. * Support embedding and executing Ruby in untrusted environments. * Distribute Ruby applications as single-binary artifacts. * Implement Ruby with state-of-the-art dependencies. * Experiment with VMs to support dynamic codegen, ahead of time compilation, parallelism and eliminating the GIL, and novel memory management and garbage collection techniques. 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. Good first issues are labeled E-easy. Discussion If you'd like to engage in a discussion outside of GitHub, you can join Artichoke's public Discord server. License 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. About Artichoke is a Ruby made with Rust www.artichokeruby.org/ Topics artichoke ruby language programming-language rust rust-application Resources Readme License MIT License Releases No releases published Packages 0 No packages published Contributors 29 * @lopopolo * @artichoke-ci * @tkbky * @lopopolo-stripe * @cdeler * @Elang89 * @johnwahba * @felipecsl * @aivenaivenaiven * @afaur + 18 contributors Languages * Rust 89.9% * Ruby 9.4% * Other 0.7% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Help * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.