
ouma - a hardened Linux libc written entirely in Rust
Hi everyone! I've been writing a libc for my GNU/Linux distro that focuses on being secure, correct and safe.
I try to minimize the usage of unsafe keywords to raw pointer referencing, slice creation from raw pointers, variadic argument manipulation and inline assembly.
For now my libc has a working locale, fast string to number conversion and vice versa, working printf and multibyte conversion functions.
There are still bugs and the project is early in development, though they are being caught.
Unlike redox's relibc, ouma is written entirely in rust with some bits of assembly (yes, even strtold returns valid long double values according to the architecture abi on Linux).
Aside from writing the entire libc in a memory safe language I also want to support modern compiler mitigations that require libc support such as shadow call stack, Intel CET, cross DSO cfi aka CFI for dynamic libraries.
Anyway, the links to the project are here:
GitHub: https://github.com/rseclinux/ouma
Codeberg: https://codeberg.org/gnu2/ouma
If you are willing to contact me, you can mail me at: theexanori@gmail.com
edit: I've made ouma specifically to force people to open source their entire projects if they are willing to use it. I do NOT state it as musl alternative in terms of being corporate/commercial friendly libc implementation. I want users of my libc and other projects to be sure that their software that is linked against ouma is free as freedom, does not hide anything behind the scenes because I personally believe that with transparency comes the security and by extension privacy as well. There might be issue with lgplv2 projects but I think I will write a linking exception for them