News for hackers. Stuff that matters.
Re:Why is Zig so Cool? by ajross on Saturday November 08, 2025 @06:08AM (#45855842)
> Also, a line number is often helpful

That's not error data, that's (one level of) a stack trace. And you can do that in zig, but not by putting call stack data into error return codes.

The conflation between exception handling and error flagging (something that C++ did largely as a mistake, and that has been embraced by managed runtimes like Python or Java) is actually precisely what this feature is designed to untangle. Exception support actually turns out to have very non-trivial impact on the generated code, and there's a reason why languages like Rust and Zig don't include them.

Re:Why is Zig so Cool? by dns_snek on Saturday November 08, 2025 @08:14AM (#45856456)
[delayed]
Re:Why is Zig so Cool? by kps on Saturday November 08, 2025 @10:42AM (#45857444)
Another way to look at this example is that, for the parser, this is not an error. The parser is doing its job correctly, providing an accurate interpretation of its input, and for the parser, this is qualitatively different from something that prevents it doing its job (say, running out of memory).
Re:Why is Zig so Cool? by skybrian on Saturday November 08, 2025 @11:09AM (#45857668)
At the next level up, though, there might be code that expects to be able to read a JSON config file at a certain location, and if it fails, it’s reasonable to report which file it tried to read, the line number, and what the error was.
Re:Why is Zig so Cool? by kps on Saturday November 08, 2025 @02:44PM (#45859374)
Sure, but that's a different level with different considerations. The JSON parser shouldn't care about things like ‘files’ with ‘locations’; maybe it's running on some little esp8266 device that doesn't have such things.