Originally posted by Zan Lynx
View Post
We have a lot of tools that are de facto standards in Rust development that just aren't a standard at all with C/C++. Everything we are using is bleeding edge, current generation types of tools compared to the very conservative tool set a typical C box is configured with. We make extensive use of ADTs (algebraic data types) and pattern matching extensively for all of our software, including error handling. The compiler ensures that references are never touched in a way that could break when you writing a fully multi-threaded and fully asynchronous filesystem. The lifetimes mechanism also ensures that you don't have any values dropped too soon when they are still needed by some references elsewhere in your code. The type system allows some interesting hacks that can make some forms of logic errors, compile-time errors. The author, Ticki, also wants to extend Rust's error checking capabilities even further ( http://ticki.github.io/blog/a-hoare-logic-for-rust/ ). This is the kind of guy that's working on TFS.
Basically, the most difficult parts of software development in a filesystem are taken care of in a manner most efficient, convenient, and safe. As for handling memory, that is why Ticki has created the Ralloc memory allocator for Redox and TFS. It has a few capabilities that the system allocator on Linux cannot do, and even has some nice security capabilities like optionally choosing to zero out memory that is dropped, with some nifty error handling and logging capabilities.
Comment