Anonymous user
Rust: Difference between revisions
m
Reverted edits by Melina148 (talk) to last revision by Adavis07
[unchecked revision] | [unchecked revision] |
(Add more libraries) |
|||
(27 intermediate revisions by 20 users not shown) | |||
Line 1:
'''Rust''' is a systems language sponsored by Mozilla, focused on three things: safety, speed, and concurrency. It accomplishes many of these goals through strong compile-time checks, allowing for very little overhead at runtime. Performance is comparable to C or C++, while being free of many of the problems caused by things like dangling pointers, buffer overflows, and iterator invalidation.
While Rust is very much a "curly-brace" language, it also takes many cues from ML. Almost everything is an expression, and there is a very strong type system
Rust provides a mechanism to subvert its safety checks when necessary, by adding an 'unsafe' annotation to portions of your code. This allows you full access to raw pointers, while controlling exactly how they are used. Often, Rust code that uses unsafe will do so as an implementation detail, allowing for them to expose a safe interface.
Line 7:
== Operating System Development ==
Rust has a comparable amount of runtime to C and C++, and has set up its standard library to be amenable towards OS development. Specifically, the standard library
Every Rust compiler is a cross-compiler, which makes setup easier.
== Active Projects ==
* [https://github.com/Andy-Python-Programmer/aero A mature POSIX OS]
* [https://os.phil-opp.com/ "Writing an OS in Rust"]
* [https://osblog.stephenmarz.com/ Tutorial: RISC-V OS using Rust]
* [https://github.com/thepowersgang/rust-barebones-kernel Meaty Bare-Bones]
* [https://github.com/
** An xv6-like operating system
** RISC-V based with multi-core support
* [https://github.com/thepowersgang/rust_os Tifflin]
** Multiboot image for x86_64
** has VFS and userland
* [http://www.redox-os.org Redox]
** One of the largest and most active Rust OS projects
* [https://
** optimized for embedded devices
** isolates drivers and applications
* [http://intermezzos.github.io/ intermezzOS]
** Small kernel + book, specifically for learning OSDev through Rust
** on hiatus indefinitely
* [https://github.com/ryanra/RustOS Ryanra's RustOS]
** Uses libcore/collections/alloc
* [https://github.com/QuiltOS/QuiltOS QuiltOS]
** Forked from Ryanra's RustOS
** Main goal is demoing OS Dev libraries written in Rust.
* [https://source.that.world/source/rux Rux]
* [https://github.com/nebulet/nebulet Nebulet]
** Has an end goal of running [[WebAssembly]] in the kernel for a performance increase
* [https://github.com/theseus-os/Theseus Theseus]
** An experimental OS written in Rust
* [https://github.com/vinc/moros MOROS]
** A simple hobby OS with a text-based user interface
== Past Projects ==
Rust went through a long and public development process
* [https://github.com/charliesome/rustboot RustBoot]
Line 40 ⟶ 55:
* [https://github.com/Arcterus/kRnel kRnl]
* [https://github.com/mahrz/rv6 rv6]
* [https://github.com/hackndev/zinc Zinc]
Line 45 ⟶ 61:
* [https://github.com/gz/rust-x86 libx86]: Library to program x86 hardware.
* [https://github.com/
* [https://github.com/rust-osdev/bootloader bootloader]: A rust bootloader.
* <strike>[https://github.com/Tobba/libcpu libcpu]: Library to program CPUs.</strike> Now absorbed into libx86.
* [https://github.com/gz/rust-slabmalloc slabmalloc]: Low-level memory allocator for liballoc.
* [https://github.com/gz/rust-multiboot multiboot]: Library to read multiboot layout.
* [https://github.com/mvdnes/
* [https://github.com/nathan7/libfringe fringe]: Context switching agnostic to how stacks are allocated.
Line 60 ⟶ 78:
* [http://os.phil-opp.com/ Blog Series: Writing an OS in Rust]
* [http://www.randomhacks.net/2015/11/11/bare-metal-rust-custom-target-kernel-space/ Retarget your compiler so interrupts are not evil]
* [[BOOTBOOT]] loader has an example 64 bit higher half kernel in Rust
* [https://github.com/rust-osdev rust-osdev on GitHub]
[[Category:Languages]]
|