#linux #thread #startup #origin #std #locking

已删除 origin-stduio

用Rust编写的程序启动和线程支持

0.1.0 2023年8月26日

#28 in #origin

Apache-2.0…

175KB
3K SLoC

origin-studio

基于origin构建的类似`std`的实现

Github Actions CI Status zulip chat crates.io page docs.rs docs

origin-stdio 是一个基于 std 的类似实现,构建在 origin 上。

目前,它仅在Linux上运行,需要Rust nightly版本,缺乏完整的 std 兼容性,总体上处于实验阶段。但它支持线程等功能。

快速开始

在Linux上,使用Rust nightly版本,在空目录中运行以下命令

cargo init
cargo add origin_studio
cargo add compiler_builtins --features=mem
echo 'fn main() { println!("cargo:rustc-link-arg=-nostartfiles"); }' > build.rs
sed -i '1s/^/#![no_std]\n#![no_main]\norigin_studio::no_problem!();\n\n/' src/main.rs
cargo +nightly run --quiet

这将生成一个crate并打印 "Hello, world!"。

是的,你可能会说,我可以用仅前一个和最后一个命令做到这一点。但这个版本使用 origin 来启动和停止程序,使用 rustix 来进行打印。除此之外,它还使用 origin 来启动和停止线程,rustix-futex-sync 来进行线程的锁定,以及 rustix-dlmalloc 来进行内存分配,因此完全不使用 libc。

依赖关系

~8–17MB
~293K SLoC