system-interface<strong>Extensions to the Rust standard library</strong>
A Bytecode Alliance project
<a href="https://github.com/bytecodealliance/system-interface/actions?query=workflow%3ACI"><img src="https://github.com/bytecodealliance/system-interface/workflows/CI/badge.svg" alt="Github Actions CI Status" /></a>
<a href="https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="zulip chat" /></a>
<a href="https://crates.io/crates/system-interface"><img src="https://img.shields.io/crates/v/system-interface.svg" alt="crates.io page" /></a>
<a href="https://docs.rs/system-interface"><img src="https://docs.rs/system-interface/badge.svg" alt="docs.rs docs" /></a>
system-interface adds extensions to the Rust standard library, seeking to
stay within the style of [std], while exposing additional functionality:
fs::FileIoExt] - Extra support for working with files, including
all the features of [std::io::Read], [std::io::Write],
[std::io::Seek], and [std::os::unix::fs::FileExt], but with both
POSIX-ish and Windows support, and with additional features, including
read and write with all combinations of _vectored, _at, and
_exact/_all. If you've ever wanted something like
[read_exact_vectored_at], [write_all_vectored_at], or any other
combination, or even [read_to_end_at] or [read_to_string_at],
they're all here, and they work on Windows too!io::IsTerminal] - Test whether a given I/O handle refers to a terminal
(aka a tty).io::ReadReady] - Query the number of bytes ready to be read immediately
from an I/O handle.io::Peek] - Read from an I/O handle without consuming the data.Everything in this crate is portable across popular POSIX-ish platforms and Windows.
Many of system-interface's features correspond to features in WASI, and are
designed to work with [cap-std], however it's not specific to WASI and can be
used with regular [std] too. To separate concerns, all sandboxing and
capability-oriented APIs are left to cap-std, so this crate's features are
usable independently.
Support for async-std and socket2 is temporarily disabled until those crates contain the needed implementations of the I/O safety traits.
$ claude mcp add system-interface \
-- python -m otcore.mcp_server <graph>