{"id":13412209,"url":"https://github.com/artichoke/artichoke","last_synced_at":"2025-05-13T23:08:21.069Z","repository":{"id":37502983,"uuid":"199196552","full_name":"artichoke/artichoke","owner":"artichoke","description":"💎 Artichoke is a Ruby made with Rust","archived":false,"fork":false,"pushed_at":"2025-05-13T00:17:24.000Z","size":69036,"stargazers_count":3107,"open_issues_count":118,"forks_count":110,"subscribers_count":43,"default_branch":"trunk","last_synced_at":"2025-05-13T01:25:23.237Z","etag":null,"topics":["artichoke","language","programming-language","ruby","ruby-language","rust","rust-application","rust-crate","wasm","webassembly"],"latest_commit_sha":null,"homepage":"https://www.artichokeruby.org/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artichoke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-07-27T17:46:44.000Z","updated_at":"2025-05-10T21:29:05.000Z","dependencies_parsed_at":"2023-09-26T05:14:09.445Z","dependency_job_id":"0a9f768b-63d1-444d-8c24-03ea25b9c7b7","html_url":"https://github.com/artichoke/artichoke","commit_stats":{"total_commits":5480,"total_committers":56,"mean_commits":97.85714285714286,"dds":"0.18667883211678837","last_synced_commit":"d7c2756979f9a2e661bbd66902b5f3e73a6aa690"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Fartichoke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Fartichoke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Fartichoke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Fartichoke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artichoke","download_url":"https://codeload.github.com/artichoke/artichoke/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254041608,"owners_count":22004744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artichoke","language","programming-language","ruby","ruby-language","rust","rust-application","rust-crate","wasm","webassembly"],"created_at":"2024-07-30T20:01:22.155Z","updated_at":"2025-05-13T23:08:16.057Z","avatar_url":"https://github.com/artichoke.png","language":"Rust","funding_links":[],"categories":["Rust","Embed-Script/VM/","webassembly"],"sub_categories":["Lua"],"readme":"# Artichoke Ruby\n\n[![GitHub Actions](https://github.com/artichoke/artichoke/workflows/CI/badge.svg)](https://github.com/artichoke/artichoke/actions)\n[![Discord](https://img.shields.io/discord/607683947496734760)](https://discord.gg/QCe2tp2)\n[![Twitter](https://img.shields.io/twitter/follow/artichokeruby?label=Follow\u0026style=social)](https://twitter.com/artichokeruby)\n\u003cbr\u003e\n[![Crate](https://img.shields.io/crates/v/artichoke.svg)](https://crates.io/crates/artichoke)\n[![API](https://docs.rs/artichoke/badge.svg)](https://docs.rs/artichoke)\n[![API trunk](https://img.shields.io/badge/docs-trunk-blue.svg)](https://artichoke.github.io/artichoke/artichoke/)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.artichokeruby.org\"\u003e\n    \u003cimg alt=\"Artichoke Ruby logo\" height=\"200\" width=\"200\" src=\"https://www.artichokeruby.org/artichoke-logo.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nArtichoke is a Ruby implementation written in Rust and Ruby. Artichoke intends\nto be [MRI-compatible][ruby-spec] and targets [recent MRI Ruby][mri-target].\nArtichoke provides a Ruby runtime implemented in Rust and Ruby.\n\n## Try Artichoke\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://artichoke.run\"\u003e\n    \u003cimg alt=\"Artichoke Ruby WebAssembly playground\" style=\"max-width: 400px\" width=\"400\" src=\"https://artichoke.run/artichoke-playground-safari-revision-4938-light-mode.png\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n  \u003cem\u003eArtichoke Ruby Wasm Playground\u003c/em\u003e\n\u003c/p\u003e\n\nYou can [try Artichoke in your browser][playground]. The [Artichoke\nPlayground][playground-repo] runs a [WebAssembly] build of Artichoke.\n\n## Install Artichoke\n\n### Prebuilt nightly binaries\n\n[Download a prebuilt binary from artichoke/nightly][nightlies]. Binaries are\navailable for Linux, Linux/musl, macOS, and Windows.\n\nThese daily binaries track the latest trunk branch of Artichoke.\n\nBinaries are also distributed through [ruby-build]. To install with [rbenv]:\n\n```console\n$ rbenv install artichoke-dev\n```\n\n### Cargo\n\nYou can install a pre-release build of Artichoke using `cargo`, Rust's package\nmanager, by running:\n\n```console\n$ cargo install --git https://github.com/artichoke/artichoke --branch trunk --locked artichoke\n```\n\nTo install via `cargo install` or to checkout and build locally, you'll need\nRust and clang. [`BUILD.md`](BUILD.md) has more detail on\n[how to set up the compiler toolchain](BUILD.md#prerequisites).\n\n### Docker\n\n[Artichoke is available on Docker Hub][docker-hub].\n\nYou can launch a REPL by running:\n\n```sh\ndocker run -it docker.io/artichokeruby/artichoke airb\n```\n\n## Usage\n\nArtichoke ships with two binaries: `airb` and `artichoke`.\n\n### `airb`\n\n`airb` is the Artichoke implementation of `irb` and is an interactive Ruby shell\nand [REPL].\n\n`airb` is a readline-enabled shell, although it does not persist history.\n\n### `artichoke`\n\n`artichoke` is the `ruby` binary frontend to Artichoke.\n\n`artichoke` supports executing programs via files, stdin, or inline with one or\nmore `-e` flags.\n\nArtichoke can `require`, `require_relative`, and `load` files from the local\nfile system, but otherwise does not yet support local file system access. A\ntemporary workaround is to inject data into the interpreter with the\n`--with-fixture` flag, which reads file contents into a `$fixture` global.\n\n```console\n$ artichoke --help\nArtichoke is a Ruby made with Rust.\n\nUsage: artichoke [OPTIONS] [programfile] [arguments]...\n\nArguments:\n  [programfile]\n  [arguments]...\n\nOptions:\n      --copyright               print the copyright\n  -e \u003ccommands\u003e                 one line of script. Several -e's allowed. Omit [programfile]\n      --with-fixture \u003cfixture\u003e  file whose contents will be read into the `$fixture` global\n  -h, --help                    Print help\n  -V, --version                 Print version\n```\n\n## Design and Goals\n\nArtichoke is [designed to enable experimentation](VISION.md). The top goals of\nthe project are:\n\n- [Support WebAssembly as a build target][o-wasm].\n- Support embedding and executing Ruby in untrusted environments.\n- [Distribute Ruby applications as single-binary artifacts][a-single-binary].\n- [Implement Ruby with state-of-the-art dependencies][a-deps].\n- Experiment with VMs to support [dynamic codegen][a-codegen], [ahead of time\n  compilation][a-compiler], [parallelism and eliminating the\n  GIL][a-parallelism], and novel [memory management and garbage collection\n  techniques][a-memory-management].\n\n## Contributing\n\nArtichoke aspires to be an [MRI Ruby-compatible][mri-target] implementation of\nthe Ruby programming language. [There is lots to do][github-issues].\n\nIf Artichoke does not run Ruby source code in the same way that MRI does, it is\na bug and we would appreciate if you [filed an issue so we can fix\nit][file-an-issue].\n\nIf you would like to contribute code 👩‍💻👨‍💻, find an issue that looks interesting\nand leave a comment that you're beginning to investigate. If there is no issue,\nplease file one before beginning to work on a PR. [Good first issues are labeled\n`E-easy`][e-easy].\n\n### Discussion\n\nIf you'd like to engage in a discussion outside of GitHub, you can [join\nArtichoke's public Discord server][discord].\n\n## License\n\n`artichoke` is licensed with the [MIT License](LICENSE) (c) Ryan Lopopolo.\n\nSome portions of Artichoke are derived from third party sources. The READMEs in\neach workspace crate discuss which third party licenses are applicable to the\nsources and derived works in Artichoke.\n\n[ruby-spec]: https://github.com/ruby/spec\n[mri-target]:\n  https://github.com/artichoke/artichoke/blob/trunk/RUBYSPEC.md#mri-target\n[playground]: https://artichoke.run\n[playground-repo]: https://github.com/artichoke/playground\n[webassembly]: https://webassembly.org/\n[nightlies]: https://github.com/artichoke/nightly/releases/latest\n[docker-hub]: https://hub.docker.com/r/artichokeruby/artichoke\n[ruby-build]: https://github.com/rbenv/ruby-build\n[rbenv]: https://github.com/rbenv/rbenv\n[repl]: https://en.wikipedia.org/wiki/Interactive_Ruby_Shell\n[o-wasm]: https://github.com/artichoke/artichoke/labels/O-wasm-unknown\n[a-single-binary]: https://github.com/artichoke/artichoke/labels/A-single-binary\n[a-deps]: https://github.com/artichoke/artichoke/labels/A-deps\n[a-codegen]: https://github.com/artichoke/artichoke/labels/A-codegen\n[a-compiler]: https://github.com/artichoke/artichoke/labels/A-compiler\n[a-parallelism]: https://github.com/artichoke/artichoke/labels/A-parallelism\n[a-memory-management]:\n  https://github.com/artichoke/artichoke/labels/A-memory-management\n[github-issues]: https://github.com/artichoke/artichoke/issues\n[file-an-issue]: https://github.com/artichoke/artichoke/issues/new\n[discord]: https://discord.gg/QCe2tp2\n[e-easy]: https://github.com/artichoke/artichoke/labels/E-easy\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartichoke%2Fartichoke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartichoke%2Fartichoke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartichoke%2Fartichoke/lists"}