origin-studio

An alternative `std`-like implementation built on origin

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

origin-stdio is an alternative [std]-like implementation built on [origin].

At this time, it only works on Linux (x86-64, aarch64, riscv64, 32-bit x86), requires Rust nightly, lacks full std compatibility, and is overall experimental. But it supports threads and stuff.

Quick start:

In an empty directory, on Linux, with Rust nightly, run these commands: sh 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 run --quiet

This will produce a crate and print "Hello, world!".

Yes, you might say, I could have already done that, with just the first and last commands. But this version uses origin to start and stop the program, and [rustix] to do the printing.

And beyond that, origin-studio uses origin to start and stop threads, [rustix-futex-sync] and [lock_api] to do locking for threads, [rustix-dlmalloc] to do memory allocation, and [unwinding] to do stack unwinding, so it doesn't use libc at all.

Similar crates

Other alternative implementations of std include [steed], [tiny-std] and [veneer].

[mustang] is a crate that uses origin to build a libc implementation that can slide underneath existing std builds, rather than having its own std implementation.

Why?

Right now, this is a demo of how to use origin. If you're interested in seeing this grow into something specific, or interested in seeing projects which might be inspired by this, please reach out!