X-Git-Url: https://git.ralfj.de/web.git/blobdiff_plain/338c1acdf25f60a2336d1d41bb747948390d165e..13622f8642fc071bedf32dba3efbd50a5906032c:/ralf/_posts/2019-07-14-uninit.md?ds=sidebyside diff --git a/ralf/_posts/2019-07-14-uninit.md b/ralf/_posts/2019-07-14-uninit.md index f454bfd..d3fb0fe 100644 --- a/ralf/_posts/2019-07-14-uninit.md +++ b/ralf/_posts/2019-07-14-uninit.md @@ -1,6 +1,7 @@ --- title: '"What The Hardware Does" is not What Your Program Does: Uninitialized Memory' categories: rust +forum: https://internals.rust-lang.org/t/what-the-hardware-does-is-not-what-your-program-does-uninitialized-memory/10561 --- This post is about uninitialized memory, but also about the semantics of highly optimized "low-level" languages in general. @@ -53,7 +54,7 @@ However, if you [run the example](https://play.rust-lang.org/?version=stable&mod ## What *is* uninitialized memory? How is this possible? -The answer is that every byte in memory cannot just have a value in `0..256`, it can also be "uninitialized". +The answer is that every byte in memory cannot just have a value in `0..256` (this is Rust syntax for a left-inclusive right-exclusive range), it can also be "uninitialized". Memory *remembers* if you initialized it. The `x` that is passed to `always_return_true` is *not* the 8-bit representation of some number, it is an uninitialized byte. Performing operations such as comparison on uninitialized bytes is undefined behavior. @@ -113,4 +114,6 @@ I hope C/C++ will come around to do the same, and there is some [great work in t If you want to do me a favor, please spread the word! I am trying hard to combat the myth of "what the hardware does" in Rust discussions whenever I see it, but I obviously don't see all the discussions---so the next time you see such an argument, no matter whether it is about uninitialized memory or [concurrency](http://hboehm.info/boehm-hotpar11.pdf) or [out-of-bounds memory accesses](https://github.com/rust-lang/rust/issues/32976#issuecomment-446775360) or anything else, please help by steering the discussion towards "what the Rust abstract machine does", and how we can design and adjust the Rust abstract machine in a way that it is most useful for programmers and optimizing compilers alike. +As usual, if you have any comments, suggestions or questions, [let me know in the forums](https://internals.rust-lang.org/t/what-the-hardware-does-is-not-what-your-program-does-uninitialized-memory/10561). + #### Footnotes