No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-28 17:19:13 -04:00
.github/workflows bootstrap no-std runtime 2026-07-27 17:30:22 -04:00
src support hosted dependent tests (#17) 2026-07-28 17:19:13 -04:00
.gitignore bootstrap no-std runtime 2026-07-27 17:30:22 -04:00
Cargo.lock bootstrap no-std runtime 2026-07-27 17:30:22 -04:00
Cargo.toml support hosted dependent tests (#17) 2026-07-28 17:19:13 -04:00
LICENSE bootstrap no-std runtime 2026-07-27 17:30:22 -04:00
README.md support hosted dependent tests (#17) 2026-07-28 17:19:13 -04:00
rust-toolchain.toml bootstrap no-std runtime 2026-07-27 17:30:22 -04:00

vibe-rt

vibe-rt is the minimal no_std, libc-free x86_64 Linux userspace runtime shared by vibeOS programs. It provides process entry and direct Linux syscall wrappers without a C runtime.

Provided interfaces

  • _start integration through the entry! macro
  • byte-preserving argument and environment iterators
  • console and file-descriptor reads and writes
  • TCP listen/accept, outbound TCP/UDP, and read timeouts
  • file open, directory reads, create, remove, atomic rename, fsync, mode changes, dup2, chdir, and getcwd
  • filesystem mounting
  • fork, execve, child waits, process IDs, user IDs, sleep, and exit
  • parent-death signaling
  • filesystem sync and reboot
  • print!, println!, and eprintln!
  • compiler memory and byte-comparison symbols required by libc-free binaries

The API returns raw Linux error numbers through Errno; it does not try to be a general Unix compatibility layer.

Build and test

Rust 1.94.0 is selected by rust-toolchain.toml.

cargo build --release
cargo test

The tests exercise startup-stack parsing, environment lookup, error decoding, and filesystem wrappers on the Linux host.

Downstream crates can enable the hosted feature while running their standard test binaries to let std provide the exception-handling personality.

Programs use entry! instead of the standard Rust runtime:

#![no_main]
#![no_std]

use vibe_rt::{Args, Env, entry};

entry!(main);

fn main(_args: Args<'_>, _env: Env<'_>) -> i32 {
    vibe_rt::println!("hello from vibeOS");
    0
}

Scope

The runtime currently targets x86_64 Linux only. It intentionally has no allocator, threads, dynamic linking, libc compatibility, or stable API guarantee.

License

MIT