{"id":13559631,"url":"https://github.com/mattwparas/steel","last_synced_at":"2026-02-22T02:10:53.183Z","repository":{"id":39833622,"uuid":"241949362","full_name":"mattwparas/steel","owner":"mattwparas","description":"An embedded scheme interpreter in Rust","archived":false,"fork":false,"pushed_at":"2025-03-26T16:38:30.000Z","size":7772,"stargazers_count":1605,"open_issues_count":45,"forks_count":70,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-28T20:07:56.344Z","etag":null,"topics":["contracts","lisp","programming-language","racket","rust","scheme","scripting-language","transducers"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mattwparas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE-APACHE","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},"funding":{"github":"mattwparas"}},"created_at":"2020-02-20T17:39:28.000Z","updated_at":"2025-03-28T17:09:27.000Z","dependencies_parsed_at":"2023-02-15T20:45:33.997Z","dependency_job_id":"cfb50f1e-1888-4494-9320-3294b349b324","html_url":"https://github.com/mattwparas/steel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwparas%2Fsteel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwparas%2Fsteel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwparas%2Fsteel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwparas%2Fsteel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattwparas","download_url":"https://codeload.github.com/mattwparas/steel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247027695,"owners_count":20871572,"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":["contracts","lisp","programming-language","racket","rust","scheme","scripting-language","transducers"],"created_at":"2024-08-01T13:00:30.185Z","updated_at":"2026-02-13T01:53:19.480Z","avatar_url":"https://github.com/mattwparas.png","language":"Rust","funding_links":["https://github.com/sponsors/mattwparas"],"categories":["Rust","Languages","Tools and Utilities","Dev-Utilities"],"sub_categories":["Rust"],"readme":"# Steel\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg width=\"150px\" src=\"images/styled.png\"\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\nAn embeddable and extensible scheme dialect built in Rust.\n\n![Actions Status](https://github.com/mattwparas/steel/workflows/Build/badge.svg)\n![Actions Status](https://github.com/mattwparas/steel/workflows/Docker%20CI/badge.svg)\n[![Coverage Status](https://coveralls.io/repos/github/mattwparas/steel/badge.svg?branch=master)](https://coveralls.io/github/mattwparas/steel?branch=master)\n[![Discord Chat](https://img.shields.io/discord/1152443024715034675.svg?logo=discord\u0026label=discord)](https://discord.gg/WwFRXdN6HU)\n[![Matrix Chat](https://img.shields.io/matrix/steel:matrix.org?logo=element\u0026label=matrix)](https://matrix.to/#/#steel:matrix.org)\n\n\u003ca href=\"https://mattwparas.github.io/steel-playground/\"\u003e\n    \u003cb\u003eTry it on the Playground\u003c/b\u003e\n\u003c/a\u003e\n·\n\u003ca href=\"https://mattwparas.github.io/steel/book\"\u003e\n    \u003cb\u003eRead the Steel book (WIP)\u003c/b\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n## About\n\n`Steel` is an embeddable scheme interpreter, with a standalone interpreter/REPL\nincluded as well. The language is implemented as a bytecode virtual machine. At\nthe moment, it is mostly compliant with R5RS, only missing `let-syntax` support.\nSupport for R7Rs is underway.\n\n\u003e **Warning**\n\u003e The API is relatively stable, however it may change at any time while pre 1.0.\n\u003e Care will be taken to keep things backwards compatible where possible.\n\n\n## Features\n\n- [R5RS](https://standards.scheme.org/official/r5rs.pdf) support\n- Modules, using `require` and `provide` much like Racket.\n- `syntax-rules` and `syntax-case` macros.\n- Easy integration with native Rust functions and structs, either through\n  embedding or via FFI.\n- Higher order Contracts\n- Built in immutable data structures, including:\n  - lists\n  - vectors\n  - hashmaps\n  - hashsets\n\nFor more details, see the [book](https://mattwparas.github.io/steel/book).\n\n## Getting Started\n\nThis github repository contains a CLI interpreter. To try it out on the online\nplayground, go to the [Steel playground](https://mattwparas.github.io/steel-playground/).\nTo get started using a REPL with the crates, make sure you first have Rust\ninstalled.\n\nThen, clone the repo and run the following command:\n\n```bash\ncargo run\n```\n\nThis will launch a REPL instance that looks something like this:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/steel.gif\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n### Full install\n\nIf you'd like to install everything, just run the following command:\n\n```bash\ncargo xtask install\n```\n\nThis will install:\n\n- The steel interpreter, `steel`\n- The package manager, `forge`\n- The dylib installer, `cargo-steel-lib` (also available via the interpreter)\n- The steel language server\n- The standard library, found under the `cogs` directory\n\n#### Nix\n\nSteel can also be installed with Nix. Add the following to your Home Manager\nconfig:\n\n```nix\nhome.packages = [\n  pkgs.steel\n];\n```\n\n### Packages\n\nIf you would like to customize the location of installed packages, please set\nthe `STEEL_HOME` environment variable. Steel currently follows XDG if present,\nand otherwise assumes the default of `$HOME/.steel` if the `STEEL_HOME`\nenvironment variable is not already set.\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0\n  ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license\n  ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattwparas%2Fsteel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattwparas%2Fsteel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattwparas%2Fsteel/lists"}