| ▲ | valorzard 4 hours ago | ||||||||||||||||||||||
This might be a dumb question, but using this + clang bounds-safety, whats the difference between this and something like Zig or Odin. What do you think C would need in order to reach the user experience of those languages? | |||||||||||||||||||||||
| ▲ | EPWN3D 3 hours ago | parent [-] | ||||||||||||||||||||||
> This might be a dumb question, but using this + clang bounds-safety, whats the difference between this and something like Zig or Odin. I really need to learn more about Zig, but from what I know, there are still worlds of possibilities that a modern, well-designed language offers over something like lib0xc. Zig's ability to evaluate any expression at compile-time is one such example. But generally, lib0xc gives you bounds-safety everywhere it can. Languages like Zig and Rust give you type-safety to their own degrees, which I think is a superset. > What do you think C would need in order to reach the user experience of those languages? Not really having direct user experience, it's hard for me to say. But if I what I can give you is a list of features that would make large parts of lib0xc irrelevant: 1. Protocols/traits 2. Allocating from a caller's stack frame (think, returning the result of `alloca` to the caller) 3. printf format specifiers for stdint.h types and for octet strings 4. Ability to express function parameter lists as structures 5. New sprintf family that returns a value which is always less than or equal to the size passed (no negative values) Basically, I think that the C standard should be working aggressively to cut down on the use cases for heap allocation and `void *`. And I think that the bounds safety annotations should become first-class language features. | |||||||||||||||||||||||
| |||||||||||||||||||||||