Skip to content

Add July update for Theseus OS #113

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 5, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions content/this-month/2022-07/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,37 @@ If you want to give it a spin, the crate is available on [crates.io](https://cra

This month, ...

### [Theseus OS](https://github.com/theseus-os/Theseus)

<span class="gray">(Section written by [Kevin Boos](https://www.theseus-os.com/kevinaboos/) ([@kevinaboos](https://github.com/kevinaboos))</span>

Theseus is a safe-language OS written from scratch in Rust that is in the process of migrating from pure academic research objectives to more general usability and legacy compatibility.

Theseus dynamically loads and links all components at runtime, and executes everything in a single address space and at a single privilege level.
With this, Theseus employs *intralingual* design principles to maximally leverage the strengths of the Rust language, allowing the compiler to both view and semantically understand (and thus extend its safety checks to) all components from top-level apps to low-level kernel entities.
Theseus strives to not only ensure isolation between different entity components and subsystems in the OS, but also to go further than language safety to provide various invariants that guarantee properties about most system-provided types.
For more, check out [the Theseus OS Book](https://www.theseus-os.com/Theseus/book/index.html) or our [academic papers and presentations](https://www.theseus-os.com/Theseus/book/misc/papers_presentations.html).

Theseus is fully open-source and always welcomes [contributions](https://www.theseus-os.com/Theseus/book/contribute/contribute.html) from anyone.

Over the past month (or two), Theseus OS made significant progress on a variety of topics:
* Finished the first known port of Wasmtime to `no_std`, enabling us to [run WASM binary workloads on Theseus](https://github.com/theseus-os/Theseus/pull/556) with relative ease.
* Importantly, this overcomes the classic limitation of safe-language OSes -- that all components must be written in that safe language -- to allow unsafe (e.g., C, C++) programs to run on Theseus in a sandboxed WASM environment.
* See our [blog post with more info](https://www.theseus-os.com/2022/06/21/wasmtime-complete-no_std-port.html) on this endeavor.
* Thanks to funding from Futurewei Technologies, Theseus Systems [hired two developers](https://www.theseus-os.com/2022/04/29/Theseus-Is-Hiring.html) to work on Theseus's next several milestones, [Nathan Royer](https://github.com/NathanRoyer) and [Klim Tsoutsman](https://github.com/tsoutsman/).,
* Thanks to everyone who reached out to us and participated in interviews; we received a lot more interest than expected!
* Began work on porting the Rust `std` library to Theseus.
* Designed a [completely new configuration interface based on cargo features](https://github.com/theseus-os/Theseus/pull/522), which enables one to easily include or exclude specific Theseus crates in a build of Theseus, but in a safe, dependency-aware manner.
* Significantly improved speed and memory usage of our runtime loader and linker:
* Introduced a [custom linker script and linker pass](https://github.com/theseus-os/Theseus/pull/562) that performs partial relinking of object files to merge their per-function/per-data sections together.
* This results in a **30-40%** reduction in object file size and a **15-18x** improvement in loading/linking times. For example, loading and linking the full Wasmtime project (60+ crates) now takes ~100ms instead of 15 seconds.
* [De-duplicated strings in our metadata](https://github.com/theseus-os/Theseus/pull/549) related to crate loading, which reduces heap usage by about 20%.
* Added support for [booting Theseus using the `limine` bootloader](https://github.com/theseus-os/Theseus/pull/541) and for [building Theseus on non-Debian Linux distributions like Fedora](https://github.com/theseus-os/Theseus/pull/536).
* Improved support for the [IXGBE ethernet NIC](https://github.com/theseus-os/Theseus/pull/523).
* [Sped up post-`rustc` build steps by about 15-20 seconds](https://github.com/theseus-os/Theseus/pull/565) with simple Makefile loop parallelization.

Check out the [Theseus OS blog](https://www.theseus-os.com/) for the latest details.

## Join Us?

Are you interested in Rust-based operating system development? Our `rust-osdev` organization is always open to new members and new projects. Just let us know if you want to join! A good way for getting in touch is our [gitter channel](https://gitter.im/rust-osdev/Lobby).
Expand Down