If we're going to move critical software infrastructure to memory safe code we're going to need to make some investments in tools. It needs to be as easy as possible to build safer software.
What We've Done
- We contracted with Rémy Rakic to spend six months improving Rust compile times, from January to September of 2022.
- We contracted with Ferrous Systems to for six months of engineering time to make various improvements to the bindgen tool. Work started in August of 2022. So far progress has been made on the following items:
- allowlist entries like allowlist_function show no warning when they don't match anything (fix merged)
- sort all items emitted based on their item type (fix merged)
- Support _Noreturn, [[noreturn]], __attribute__((noreturn)) (partial fixed merge, PRs for the rest open)
- Generate C code to export static inline functions (work in progress)
- Is it always necessary to put every function definition in a separate extern block? (work in progress)
- Multiple definitions when a pointer gets typedef’d to the same name as a struct (work starting soon)
- Rewrite Clang interface to use C++ libtooling API instead of libclang (work starting soon)
Both Rémy and Ferrous Systems continue to make progress in their work.
We plan to extend Rémy Rakic's contract to improve Rust compile times by an additional six months.