| ▲ | EPWN3D 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. 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. | ||||||||
| ▲ | onlyrealcuzzo 2 hours ago | parent | next [-] | |||||||
> 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. Doesn't Apple have a nice `defer { }` block for cleanup? Did you include that in lib0xc? I didn't see in on your README. | ||||||||
| ||||||||
| ▲ | anthk 3 hours ago | parent | prev [-] | |||||||
Wouldn't the last case (void *) hurt embedded C development, or retrogaming with direct memory access and pointers? | ||||||||
| ||||||||