This problem of what exactly a color value means is mostly inconsequential when you have 8 bits per component, the difference in the denominator being either 255 or 256 makes the errors tiny, you must have really good…
I think they meant to write "There are about 4 billion TIMES more 64 bit integers than 32 bit integers".
Pretty nifty. As of now, the code doesn't compile: there's some stray "span" stuff in codegen.rs[1], and it's trying to format `Warning` which doesn't implement `Display` in main.rs[2]. Fixing these, it runs mostly as…
Nice write-up. Let me offer a nitpck: in the "Gradual underflow" section it says this about subnormal numbers: Bonus: we have now acquired extra armour against a division by zero: if ( x != y ) z = 1.0 / ( x - y ); But…
Yes, I agree. Like I said, it might be useful when dealing with something that is easier to express in (tail) recursion form instead of an iteration. Anyway, here's something more-or-less equivalent in Rust, which will…
I'm not sure how this would be useful in Rust, but macros and tail calls are what allows one to (for example) write iterative loops in Scheme, which doesn't have a native loop syntax. Maybe the same idea can be used in…
Shouldn't that be 0xc8c70ff0, since we're talking about a little-endian CPU? (according to this[1] the bytes in memory are F0 0F C7 C8). On the other hand, I probably wouldn't have recognized the F00F bug mention if you…
Being "not very inaccurate" is very different from publishing outright fabricated quotes, which is what Ars Technica did and later admitted to: https://arstechnica.com/staff/2026/02/editors-note-retractio...
Great stuff. It wouldn't be surprising if the RP2350 gets officially certified to run at something above the max supported clock at launch (150MHz), though obviously nothing close to 800MHz. That happened to the…
Yes. A number is transcendental if it's not the root of a polynomial with integer coefficients; that's completely independent of how you represent it.
We don't know that. We don't even know if there's selection bias. The article says the research was "focusing on 246 deceased drivers who were tested for THC", and that the test usually happens when autopsies are…
> The fact that the correct type signature, a pointer to fixed-size array, exists and that you can create a struct containing a fixed-size array member and pass that in by value completely invalidates any possible…
It's not intuitive, although arguably conforms to the general C philosophy of not getting in the way unless the code has no chance of being right. For example, both compilers do complain if you try to pass a literal…
It was always considered bad not (just) because it's ugly, but because it hides potential problems and adds no safety at all: a `[static N]` parameter tells the compiler that the parameter will never be NULL, but the…
> It probably shouldn't do that if you create a dynamic library that needs a symbol table but for an ELF binary it could, no? It can't do that because the program might load a dynamic library that depends on the…
> Special Relativity (non-accelerating frames of reference, i.e. moving at a constant speed) Sorry, but this is a pet peeve of mine: special relativity works perfectly well in accelerating frames of reference, as long…
That's not great context: China and India have huge populations, it's expected that they should be at the top. Better context can be found here[1] (countries by emission per capita). It's still not great because it…
> In C, sloppy programmers will [...] > In Rust, sloppy programmers will [...] You're comparing apples to oranges. Inexperienced people who don't know better will make safe, bloated code in Rust. Experienced people who…
It seems like you're trying to fix a social problem (programmers don't care about doing a good job) with a technical solution (change the programming languages). This simply doesn't work. People who write C code…
> Another respect is that C allows omitting curly braces after an if-statement, which makes bugs like https://www.codecentric.de/en/knowledge-hub/blog/curly-brace... possible. This is a silly thing to point to, and the…
> Kevin Weil had the two previous quotes in his context when he did his post and didn't consider the fact that readers would only see the first level, so wouldn't have Sebastien Bubek's post in mind when they read his.…
Eh, I wouldn't be so sure. Reading the DMCA, their code does seem to do what the law says you can't do[1]: "No person shall circumvent a technological measure that effectively controls access to a work protected under…
I don't understand why people think this is safer, it's the complete opposite. With that `char msg[static 1]` you're telling the compiler that `msg` can't possibly be NULL, which means it will optimize away any NULL…
Would that be wise? The implemented solution uses a temporary register to hold the full value being added to rsp. I don't know enough about how people use the go assembler, but I imagine it would be very surprising if…
There's no dropping of type requirements in Java, `var` only saves typing. When you use `var`, everything is as statically typed as before, you just don't need to spell out the type when the compiler can infer it. So…
This problem of what exactly a color value means is mostly inconsequential when you have 8 bits per component, the difference in the denominator being either 255 or 256 makes the errors tiny, you must have really good…
I think they meant to write "There are about 4 billion TIMES more 64 bit integers than 32 bit integers".
Pretty nifty. As of now, the code doesn't compile: there's some stray "span" stuff in codegen.rs[1], and it's trying to format `Warning` which doesn't implement `Display` in main.rs[2]. Fixing these, it runs mostly as…
Nice write-up. Let me offer a nitpck: in the "Gradual underflow" section it says this about subnormal numbers: Bonus: we have now acquired extra armour against a division by zero: if ( x != y ) z = 1.0 / ( x - y ); But…
Yes, I agree. Like I said, it might be useful when dealing with something that is easier to express in (tail) recursion form instead of an iteration. Anyway, here's something more-or-less equivalent in Rust, which will…
I'm not sure how this would be useful in Rust, but macros and tail calls are what allows one to (for example) write iterative loops in Scheme, which doesn't have a native loop syntax. Maybe the same idea can be used in…
Shouldn't that be 0xc8c70ff0, since we're talking about a little-endian CPU? (according to this[1] the bytes in memory are F0 0F C7 C8). On the other hand, I probably wouldn't have recognized the F00F bug mention if you…
Being "not very inaccurate" is very different from publishing outright fabricated quotes, which is what Ars Technica did and later admitted to: https://arstechnica.com/staff/2026/02/editors-note-retractio...
Great stuff. It wouldn't be surprising if the RP2350 gets officially certified to run at something above the max supported clock at launch (150MHz), though obviously nothing close to 800MHz. That happened to the…
Yes. A number is transcendental if it's not the root of a polynomial with integer coefficients; that's completely independent of how you represent it.
We don't know that. We don't even know if there's selection bias. The article says the research was "focusing on 246 deceased drivers who were tested for THC", and that the test usually happens when autopsies are…
> The fact that the correct type signature, a pointer to fixed-size array, exists and that you can create a struct containing a fixed-size array member and pass that in by value completely invalidates any possible…
It's not intuitive, although arguably conforms to the general C philosophy of not getting in the way unless the code has no chance of being right. For example, both compilers do complain if you try to pass a literal…
It was always considered bad not (just) because it's ugly, but because it hides potential problems and adds no safety at all: a `[static N]` parameter tells the compiler that the parameter will never be NULL, but the…
> It probably shouldn't do that if you create a dynamic library that needs a symbol table but for an ELF binary it could, no? It can't do that because the program might load a dynamic library that depends on the…
> Special Relativity (non-accelerating frames of reference, i.e. moving at a constant speed) Sorry, but this is a pet peeve of mine: special relativity works perfectly well in accelerating frames of reference, as long…
That's not great context: China and India have huge populations, it's expected that they should be at the top. Better context can be found here[1] (countries by emission per capita). It's still not great because it…
> In C, sloppy programmers will [...] > In Rust, sloppy programmers will [...] You're comparing apples to oranges. Inexperienced people who don't know better will make safe, bloated code in Rust. Experienced people who…
It seems like you're trying to fix a social problem (programmers don't care about doing a good job) with a technical solution (change the programming languages). This simply doesn't work. People who write C code…
> Another respect is that C allows omitting curly braces after an if-statement, which makes bugs like https://www.codecentric.de/en/knowledge-hub/blog/curly-brace... possible. This is a silly thing to point to, and the…
> Kevin Weil had the two previous quotes in his context when he did his post and didn't consider the fact that readers would only see the first level, so wouldn't have Sebastien Bubek's post in mind when they read his.…
Eh, I wouldn't be so sure. Reading the DMCA, their code does seem to do what the law says you can't do[1]: "No person shall circumvent a technological measure that effectively controls access to a work protected under…
I don't understand why people think this is safer, it's the complete opposite. With that `char msg[static 1]` you're telling the compiler that `msg` can't possibly be NULL, which means it will optimize away any NULL…
Would that be wise? The implemented solution uses a temporary register to hold the full value being added to rsp. I don't know enough about how people use the go assembler, but I imagine it would be very surprising if…
There's no dropping of type requirements in Java, `var` only saves typing. When you use `var`, everything is as statically typed as before, you just don't need to spell out the type when the compiler can infer it. So…