3 ms·
Atm the barriers are all the unstable features you need to rely on as well as rust and LLVM bugs. The LLVM bug I've encountered makes it impossible to properly
by zaarn 8y ago
Atm the barriers are all the unstable features you need to rely on as well as rust and LLVM bugs.
The LLVM bug I've encountered makes it impossible to properly handle interrupts with error codes unless you use [naked], which is unreliable in my experience.
The Rust bugs are on one hand a None variable being initialized to a Some() value and a bug where rust injects a few instructions between inline assembly that corrupt the stack.
These problems can usually be worked around in some ways, it's annoying and means the rust compiler is not quite there yet.
However, with rust it's easier to reason about why an error occured than in C, atleast in my experience, although some things can only be found out by trial and error (corrupted stack or hitting undefined instructions), as a result I would predict that Rust could result in a lot more fun designs and architectures than simply writing a Microkernel (Redox).
- steveklabnik 8y ago> a None variable being initialized to a Some() value Did you file a bug about this? this seems extremely bad.
- zaarn 8y agoNo, I'm waiting on a fix for the other bugs first since I've monkey patched this one so far by using some unsafe.
- pcwalton 8y ago> The Rust bugs are on one hand a None variable being initialized to a Some() value Wait. There has to be more going on there than just that—perhaps it's some interaction with naked functions?—or else we'd be seeing crashes everywhere from this.
- zaarn 8y agoWell, there is only a single place were this happens reproducable. All other None values are fine in the same binary. The variable is not touched by any code I haven't verified over this. I don't have any naked functions in the relevant binary either.