minirust
minirust copied to clipboard
A precise specification for "Rust lite / MIR plus"
Currently MiniRust defines how pointers are encoded and decoded pretty precisely. This might be too restrictive for CHERI so we might have to figure out a way to leave this...
Rust has a bunch of operators that we do not support yet: - [x] BitOr, BitXor (on integers and Booleans) - [x] Shl, Shr - [x] Cmp - [x] checked...
This occurs for instance [here](https://github.com/minirust/minirust/blob/c91adf155212f6197631cb560247ec604b1f003d/tooling/minimize/tests/pass/union.rs#L73), via the PartialEq impl for arrays of integers.
Currently we use the standard library that is shipped with rustc. This means if a function is already codegen'd, we fail as we cannot access its MIR. Instead we need...
This may need changes to how rustc types are translated to MiniRust types, and/or changes in MiniRust itself -- I am not sure. But it is crucial to properly model...
SetDiscriminant can be a NOP when writing the discriminant of the niched variant in a niche-optimized enum. We still want it to be UB to call SetDiscriminant with such a...
Currently, we don't support unwinding. That's a missing feature that should be added. :)
Currently, well-formedness knows nothing about intrinsics, so all their type-checking happens during execution. This leads to a large fraction of `intrinsics.rs` being concerned with type-checking arguments and return types, which...
We should find better ways to translate these: ```rust // those are IGNORED currently. rs::TerminatorKind::Drop { target, .. } | rs::TerminatorKind::Assert { target, .. } => Terminator::Goto(self.bb_name_map[&target]), ```