asterinas/framework
Zhang Junyang f703d915cd Solve the haunting i386 data layout in Linux legacy boot 2024-06-21 10:57:08 +08:00
..
aster-frame Update the multiboot2 dependency 2024-06-21 10:57:08 +08:00
libs Solve the haunting i386 data layout in Linux legacy boot 2024-06-21 10:57:08 +08:00
README.md Rename jinux to asterinas in documentation and code 2023-12-26 11:49:24 +08:00

README.md

Asterinas Framework

Asterinas Framework is a Rust OS framework that facilitates the development of and innovation in OS kernels written in Rust.

An overview

Asterinas Framework provides a solid foundation for Rust developers to build their own OS kernels. While Asterinas Framework origins from Asterinas, the first ever framekernel, Asterinas Framework is well suited for building OS kernels of any architecture, be it a framekernel, a monolithic kernel, or a microkernel.

Asterinas Framework offers the following key values.

  1. Lowering the entry bar for OS innovation. Building an OS from scratch is not easy. Not to mention a novel one. Before adding any novel or interesting feature, an OS developer must first have something runnable, which must include basic functionalities for managing CPU, memory, and interrupts. Asterinas Framework has laid this groundwork so that OS developers do not have to deal with the most low-level, error-prone, architecture-specific aspects of OS development themselves.

  2. Enhancing the memory safety of Rust OSes. Asterinas Framework encapsulates low-level, machine-oriented unsafe Rust code into high-level, machine-agnostic safe APIs. These APIs are carefully designed and implemented to be sound and minimal, ensuring the memory safety of any safe Rust callers. Our experience in building Asterinas has shown that Asterinas Framework is powerful enough to allow a feature-rich, Linux-compatible kernel to be completely written in safe Rust, including its device drivers.

  3. Promoting code reuse across Rust OS projects. Shipped as crates, Rust code can be reused across projects---except when they are OSes. A crate that implements a feature or driver for OS A can hardly be reused by OS B because the crate must be no_std and depend on the infrastructure APIs provided by OS A, which are obviously different from that provided by OS B. This incompatibility problem can be resolved by Asterinas Framework as it can serve as a common ground across different Rust OS projects, as long as they are built upon Asterinas Framework.

  4. Boost productivity with user-mode development. Traditionally, developing a kernel feature involves countless rounds of coding, failing, and rebooting on bare-metal or virtual machines, which is a painfully slow process. Asterinas Framework accelerates the process by allowing high-level OS features like file systems and network stacks to be quickly tested in user mode, making the experience of OS development as smooth as that of application development. To support user-mode development, Asterinas Framework is implemented for the Linux platform, in addition to bare-mental or virtual machine environments.

Framework APIs

TODO

Implementation status

TODO

Roadmap and plan

TODO