2 个不稳定版本
0.2.0 | 2023年6月2日 |
---|---|
0.1.0 | 2023年5月28日 |
#1454 在 开发工具
21MB
1.5K SLoC
Exers 💻
Exers 是一个用于在不同语言和运行时中编译和运行代码的 Rust 库。
使用示例
fn main() {
// Imports...
let code = r#"
fn main() {
println!("Hello World!");
}
"#;
let compiled_code = RustCompiler.compile(&mut code.as_bytes(), Default::default());
let result = WasmRuntime.run(&compiled_code, Default::default()).unwrap();
}
支持的语言 📚
语言 | 支持运行时 | 所需依赖 |
---|---|---|
Rust | Wasm, 本地 | Rustc |
C++ | Wasm, 本地 | clang++ |
Python | 本地 | python3, Cython(可选) |
Java | 无 | --- |
C# | 无 | --- |
Go | 无 | --- |
Ruby | 无 | --- |
可用的运行时 🏃♂️
运行时 | 状态 |
---|---|
WASM | 已实现 |
本地 | 已实现 |
隔离 | 开发中,不工作 |
Firecracker | 未开始 |
Docker/Podman | 未开始 |
贡献 🤝
如果您想为此项目做出贡献,请保持我的代码风格和格式。我使用 rustfmt
格式化我的代码。请确保您的代码可以编译并通过所有测试。如果您想添加新的语言或运行时,请记得编写测试和良好地注释代码。
提交应遵循 常规提交规范。
要求 📋
WASM
如果您想使用 WASM 运行时,您需要为 rustc 安装 wasm32-wasi
目标。您可以通过运行 rustup target add wasm32-wasi
来完成此操作。
对于 C++,您需要安装 wasi-sdk
或其他 WASI sdk/libc,并将 WASI_SDK
环境变量指定为指向 sdk。
本地
本地运行时只需要您要使用的语言的依赖项。
附加功能 ✨
wasm-llvm
此功能允许您为 WASM 运行时使用 LLVM 后端。LLVM 提供更好的性能,但编译时间更长。
cython
此功能允许您为 Python 运行时使用 Cython。这使得代码执行更快,但需要安装 Cython。
示例 📄
示例位于 examples
目录中。要运行它们,您需要安装您要使用的语言的所需依赖项。然后,您可以使用 cargo run --example <example_name>
运行示例。
Dockerfile 🐳
该项目包含一个Dockerfile,可用于构建一个包含所有语言和运行时所需依赖项的Docker镜像。这个镜像可以用作创建您自己的镜像的基础 😄。我目前正在努力缩小镜像的大小(目前约为2GB),并允许您选择想要包含的语言和运行时。
警告:我尚未测试该镜像,因此它可能不适用于某些语言和运行时。
依赖项
~3–18MB
~256K SLoC