5 ms·
Then by all means reject it, way better than blowing up in production.
by wamaral 9y ago
Then by all means reject it, way better than blowing up in production.
- jerf 9y agoYou just destroyed all C code in the world. At that level of paranoia, you've basically defined a brand new language, and if you're going to do that, why make it C at all? Smart people with a ton of experience in C have already examined the possibility of defining a C dialect with much less undefined behavior in it. In fact, I believe it's been seriously tried more than once by independent groups. And the result has been the same each time; initial excitement and optimism gives way to total failure. It's simply way too deeply ingrained in the definition of C, backed by all the code in the world written in C. If you want less undefined behavior, your only choice is to leave C.
- wamaral 9y agoOP was talking about a compiler option, that most likely would not break anything unless you enable the flag. As for choice, I'll take "here's what happens" vs "your code is in the hands of fate now" any day. Glad we do have choice.
- sullyj3 9y agoI can't tell if this is satirical, but to be clear, you're proposing to disallow addition?
- wamaral 9y agoRather define the behaviour of what happens when addition of two ints exceed the maximum allowed value.
- rspeer 9y agoYou're changing your plan here. Maybe you could at least concede that the issue of UB is difficult and is not going to be solved by saying "why don't they just" on HN?
- sp332 9y agoYou could test whether overflow is going to happen first. Or use a math library that explicitly overflows with predictable results.
- dullgiulio 9y agoI know very few languages that do that. Even Rust doesn't when compiled for release. All for performance reasons.
- steveklabnik 9y agoSome additional points: * It's not UB in Rust, it's guaranteed to be two's compliment overflow. * It's still a "program error" and debug builds are required to panic. * Non-debug builds are allowed to either panic or do the overflow, for performance reasons, as you mention. If it was feasible to always panic we'd do that; the current wording allows us to change it to do so in the future if it becomes feasible. * If you want to do a checked add, you can, it's just not the default.
- sp332 9y agoI might have lost the point in this long thread, but I'm pretty sure the suggestion was just to add it as an optional flag.