I don't usually like participating in bikeshedding, but the @ annotation feels like PHP's $ to me in that I don't see why it needs to exist. The language design could've easily just left that out and I don't think anything would be lost.
Other than that, I'm definitely excited for Zig as a potential C++ replacement.
Built-in names are essentially reserved words, and there are dozens of them. The @ prefix ensures you don't step on user's variable names, and that you can add new built-ins without making breaking changes.
My belief is that it is about builtin functions that are provided by the compiler versus part of the standard library. They are documented in the language reference [0] versus in the standard library documentation [1].
Although namespacing them keeps them out from under a programmer's feet, which is a significant benefit, it does seem like this would make it harder to find stuff.
@cmpxchgStrong, @wasmMemorySize and @embedFile are completely unrelated, but since they're all builtins they're neighbours.
one side benefit is that at lot of @ code is "dangerous shit" so it draws your eye during code review. You will want to code review the "dangerous shit" that GPT-5 gives you.
ptato|2 years ago
andrepd|2 years ago
tleb_|2 years ago
[0]: https://ziglang.org/documentation/master/
[1]: https://ziglang.org/documentation/master/std/
kristoff_it|2 years ago
The symbol namespaces builtins, as those are the only identifiers that aren't declared in the file (either directly or by using `@import`).
tialaramex|2 years ago
throwawaymaths|2 years ago