-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
So you want to be considered by T-libs? #10
Comments
Prior verification efforts of the Rust standard library of interest:
...uh, you most certainly do not need to read all of these or anything, you just might find them informative since they discuss correctness and incorrectness of Rust code, and especially unsafe Rust code, extensively. The last is most novel and also most unproven but at the same time is the Rust model of operational semantics being experimented with after a hell of a lot of experimentation. |
@workingjubilee, thank you for sending me those! I will be sure to check them out. |
Regarding point 3, I own a Raspberry Pi 4 (has the armv8a that is a superset of aarch64 -https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/), which has an aarch64 architecture. Would soundness on this machine be an adequate check? |
It would be a useful start, at least. One of the things about the RPi that makes it not quite the same as say, an M1, is that it doesn't run a very deep pipeline with hundreds of instructions in flight, so there's no huge stalls that might trash performance in the worst case scenario. But also, it's still interesting, because the RPi lacks a straightforward implementation of |
Yes, I hope that would be sufficent as I do not have access to, for example, and M1. The only ARM devices I have are my RPis. Like you said, hopefully those benchmarks with the RPi will provide some contrast to more powerful and complex processors. |
I have a diverse array of CPUs, including some very exotic architectures that Rust supports, and I will be happy to run some benchmarks on my machines once you've done some initial testing. Including an M1. |
Thank you for the offer! I would really appreciate it - perhaps after #9 is closed. Maybe you can submit the results via pull request? Again, thank you! |
I believe that point 3 has been resolved - See this new benchmark file which includes a benchmark on an AArch63 platform. However, if you can test |
Point 10 is NA because I directly allocate an array of |
Point 8 is also NA because of my handling of dangling |
Point 6 is not a problem for |
Point 7 is resolved because we have an |
Point 9 is resolved because we already have an overflow check. |
Regarding section/point 4 (API nicheness), I believe that Trc's usefulness comes from it's major performance gains, as can be seen in the benchmarks. However, because Trc is currently outside of the Regarding
Because the design of @workingjubilee, I would appreciate your thoughts on this, particularly regarding any workarounds I can use to implement |
Before it is worth putting in the queue for review:
Arc
rust-lang/rust#108706Arc::get_mut
rust-lang/rust#51780Weak::as_ptr
rust-lang/rust#80365arc::Weak::upgrade
does not account for overflow rust-lang/rust#30031From<&[T]> for Rc
creates underaligned reference rust-lang/rust#54908In addition you must validate that it remains sound and fast even when used on "weak memory model" platforms. PowerISA (aka POWER aka PowerPC) is the weakest I know of for modern CPUs, but in a pinch, testing on AArch64 should flush out most problems, and is more important because we support aarch64-unknown-linux-gnu as a tier 1 platform. That makes its soundness in implementation of consequently higher concern, though we do take correctness seriously for tier 2 platforms, we're just humans with priorities.
Finally, and this is the most subjective evaluation: There has to be a reason to actually include it in std instead of just leaving it as an external crate. It's not good enough for it to simply be faster in a few cases. We often reject new API simply if it is too confusing or niche to choose when to use it.
The text was updated successfully, but these errors were encountered: