glass is a lot heavier and way more expensive (glass is made out of silicon).
There are a lot of different types of plastics the common ones use in packaging are LE-PE (light density polyethylene) and PP (polypropylene). They are both thermoplastic, they melt then heated. Silicone is also a form of plastic, it's thermoset (it chars effectively and it doesn't melt) - and it's awfully expensive. There are other plastic, e.g. nylon (PA6) that are still expensive but much cheaper than silicone.
This is done so that the programmer doesn't have to reason about it. Polonius makes the compiler accept code that's obviously valid, but the current borrow checker isn't sophisticated enough to declare it as safe.
I've bumped into this kind of problem when writing rust, at first it was hard to understand why the compiler doesn't accept my code.
This kind of control would drive me up the wall. If I write code and my logic is wrong I appreciate compiler being able to tell me to sod off. Doing it when the logic is perfectly valid is a turn off.
That's the draw of having a borrow checker, which is arguably the contributor to the biggest pain points of Rust. Everything is a tradeoff. Rust's "unsafe" blocks are also a tradeoff. To my understanding, Rice's theorem ensures that, for checking borrows, either all invalid programs and some valid programs are rejected, or all valid programs and some invalid programs are accepted. Given Rust's goal of overall safety, the conservative route (which rejects some valid programs) is favored.
Some languages require you to declare your variables, and if you use an undeclared variable, the compiler complains and refuses to emit any code. Is that a turn off for you, too?
The problem described in 2018 seems completely unrelated to downfall.
It looks like a potential optimization to the original spectre, doesn't even mention AVX gather instructions.
Yeah I admit that there are cheaper water coolers than Noctua that perform better. But the main issue I have is with water cooling itself (can burst or leak if unlucky or with poor maintenance, has a more limited life span, etc...)
E. g. filter_vec_avx2 doesn't declare the loop variable i and stores input elements into the output instead of their indices. Or from_u32x8 has a DataType instead of __m256i and [u32; __m256i] instead of [u32; 8].
Meaningless because (adequately cooled) modern desktop CPUs mostly run near their boost clock in single threaded loads and somewhere between base and boost in multithreaded.