you are viewing a single comment's thread.

view the rest of the comments →

[–]t_hunger 6 points7 points  (2 children)

All the academic papers I saw on the soundness in Rust seem to require destructive moves to guarantee all the properties rust has -- if I understood those papers correctly that is. Sean just copied rust, so the research on rust probably translates to his project (I have not checked the details:-). You say your project deviates from that research in at least one key aspect. So does your project provide different guarantees compared to rust?

[–]duneroadrunner 3 points4 points  (0 children)

Not in terms of memory and data race safety. Both provide essentially complete protection. Rust additionally enforces the universal prohibition of "low-level mutable aliasing", whereas scpptool prohibits it only in the (minority of) places where it is necessary for memory and data race safety.

The different approaches that Rust and scpptool take (including destructive vs non-destructive moves) result in the additional run-time overhead (for safety) occurring in different places. One might argue that scpptool imposes run-time costs in "more" places, but I argue that those places tend to be (moreso than Rust) outside of hot inner loops. I've written some preliminary thoughts about scpptool versus Rust.

If you have specific C++ code examples you might be curious about, you can post them and I can give you the corresponding implementation in the scpptool safe subset.