Apache License 2.0

项目介绍

mattwparas/steel 是一个托管在 GitHub 上的开源项目,主要使用 Rust 编写,采用 Apache License 2.0 许可证,目前获得 2.6k 个 Star、147 次 Fork。

仓库全名
mattwparas/steel
开源许可证
Apache License 2.0
Star 数
2.6k
Fork 数
147
未关闭 Issue
99

README 摘要

Steel An embeddable and extensible scheme dialect built in Rust. Try it on the Playground · Read the Steel book (WIP) About Steel is an embeddable scheme interpreter, with a standalone interpreter/REPL included as well. The language is implemented as a bytecode virtual machine. At the moment, it is mostly compliant with R5RS, only missing let-syntax support. Support for R7Rs is underway. Warning The API is…

完整内容见 GitHub 原始 README 或本页 。

常见问题

steel 用什么语言开发?

主要使用 Rust 编写,采用 Apache License 2.0 许可证,目前有 2.6k 个 Star。

steel 可以免费商用吗?

仓库采用 Apache License 2.0 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 steel 的源码?

可以直接克隆仓库:git clone https://github.com/mattwparas/steel.git,默认分支为 master;安装与运行步骤见仓库 README。

steel 最近还在维护吗?

仓库最近一次更新为 14 小时前,当前有 99 个未关闭 Issue;Star 数为 2.6k,可作为社区活跃度的参考。

简要分析

热度分
2962
价值分
1630
活跃状态
活跃

语言占比

Dockerfile
Lua
Nix
Python
Racket
RenderScript
Rust
Scheme
Shell

Release

README

Steel

An embeddable and extensible scheme dialect built in Rust.

Actions Status Actions Status Coverage Status Discord Chat Matrix Chat

Try it on the Playground · Read the Steel book (WIP)

About

Steel is an embeddable scheme interpreter, with a standalone interpreter/REPL included as well. The language is implemented as a bytecode virtual machine. At the moment, it is mostly compliant with R5RS, only missing let-syntax support. Support for R7Rs is underway.

Warning The API is relatively stable, however it may change at any time while pre 1.0. Care will be taken to keep things backwards compatible where possible.

Features

  • R5RS support
  • Modules, using require and provide much like Racket.
  • syntax-rules and syntax-case macros.
  • Easy integration with native Rust functions and structs, either through embedding or via FFI.
  • Higher order Contracts
  • Built in immutable data structures, including:
    • lists
    • vectors
    • hashmaps
    • hashsets

For more details, see the book.

Getting Started

This github repository contains a CLI interpreter. To try it out on the online playground, go to the Steel playground. To get started using a REPL with the crates, make sure you first have Rust installed.

Then, clone the repo and run the following command:

cargo run

This will launch a REPL instance that looks something like this:

Full install

If you’d like to install everything, just run the following command:

cargo xtask install

This will install:

  • The steel interpreter, steel
  • The package manager, forge
  • The dylib installer, cargo-steel-lib (also available via the interpreter)
  • The steel language server
  • The standard library, found under the cogs directory
Nix

Steel can also be installed with Nix. Add the following to your Home Manager config:

home.packages = [
  pkgs.steel
];

Packages

If you would like to customize the location of installed packages, please set the STEEL_HOME environment variable. Steel currently follows XDG if present, and otherwise assumes the default of $HOME/.steel if the STEEL_HOME environment variable is not already set.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

评论

暂无评论