Re:The C3 Programming Language
by MarsIronPI on Saturday January 03, 2026 @06:09PM
(#46482719)
> That's a valid trade-off to make. But it's unexpected for a language that bills itself as "The Ergonomic, Safe and Familiar Evolution of C".
No, I think this is a very ergonomic feature. It fits nicely because it allows better compilers to use the constraints to optimize more confidently than equivalently-smart C compilers.
Re:The C3 Programming Language
by bryanlarsen on Saturday January 03, 2026 @08:50PM
(#46483957)
I'll give you "more ergonomic" if you'll give me "less safe".
Re:The C3 Programming Language
by fc417fc802 on Saturday January 03, 2026 @09:51PM
(#46484322)
I'd argue it's no less safe than the status quo, just easier to use. The standard "assert" can be switched off. There's "__builtin_unreachable". My personal utility library has "assume" which switches between the two based on NDEBUG.
C is a knife. Knives are sharp. If that's a problem then C is the wrong language.
Re:The C3 Programming Language
by bryanlarsen on Sunday January 04, 2026 @01:34AM
(#46485542)
But people are looking at C3, Odin & Zig because they've determined that C is the wrong language for them; many have determined that it's too sharp. C3 has "safe" in its title, they're expecting fewer sharp edges.
I'm not asking for useful optimizations like constraints to go away, I'm asking for them to be properly communicated as being sharp. If you use "unsafe" incorrectly in your rust code, you invite UB. But because of the keyword they chose, it's hardly surprising.
That's a valid trade-off to make. But it's unexpected for a language that bills itself as "The Ergonomic, Safe and Familiar Evolution of C".
Those pre/post-conditions are written by humans (or an LLM). Occasionally they're going to be wrong, and occasionally they're not going to be caught in testing.
It's also unexpected for a feature that naive programmers would expect to make a program more safe.
To be clear this sounds like a good feature, it's more about expectations management. A good example of that done well is Rust's unsafe keyword.