103
Let's talk about Zig
(programming.dev)
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Follow the wormhole through a path of communities !webdev@programming.dev
How does zig solve the memory allocation failure issue? RAM isn't unlimited, it has to fail eventually?
It does not "solve" memory allocation failures, as its not a thing that can be solved. It exposes memory allocation in a way that forces you as a programmer to handle the possible error situation. You cannot just call
malloc
ornew
or what have you and the just move on as if nothing happens.Oh right, okay. I thought you meant that allocations just couldn't fail.
Instead you are just forced to handle it properly if it does fail. Would be very interested to test that in practice. C memory allocations are notoriously tolerant, and will happily let you allocate terabytes of memory that doesn't really exist until you try write to it.
I'll definitely have to give that a play at some point.
Ah, that is another thing that Zig does well (in my opinion). Instead of having a global allocation call, Zig uses an
allocator
interface interface, meaning you as the programmer can plug in different allocation strategies as you require. So depending on if you do or don't like that behavior, just pick the allocator accordingly, either for your whole program or just for parts of it.