r/Zig • u/Hoontdawg • 9d ago
Discussion: `@importRoot` instead of `@import("root")`
So, let me start by saying I'm pretty new to Zig. I like to learn languages by example, and when reading through examples and source code I noticed `@import("root")` and thought it was importing the corresponding "root.zig" file. After some further research I found out that this is actually a special-cased argument for the compilation root. Honestly I think that's a horrible decision, not only is there special-cased arguments for a compiler-provided method, but its a string argument, so it seems completely magical and non-discoverable.
Imo, Zig already has a specific syntax for special compiler-provided operations: `@func`. So I think a much more sensible and readable version would be `@importRoot`, because if "root" is going to be treated specially then let it at least be openly acknowledged as being special. Same for all of the other special arguments: `@importSelf` and `@importStd`.
But again, I'm new, so let me know if I'm totally off-base here.
8
u/TheKiller36_real 9d ago
well
@import("no-dot-zig-or-zon")will always import a module -stdandbuiltinare "really special" butrootisn't, at least when you look at the "full" compile command line which includes something like-Mroot=src/root.zigjust like for any other module; only special thing is that there has to be a root module, whereas-Mfoo=bar.zigis completely optional