Comments (4)
Anecdote from the point of view of a user:
I started writing Zig about a year and a half ago and I distinctly remember that for the week or so I found the term "builtin" very overloaded and confusing, repeatedly mistaking @import("std").builtin
for @import("builtin")
until I eventually found my bearings.
The name std.builtin
makes sense from the point of view that it defines and exposes interfaces that support @
-prefixed built-in functions.
The generated builtin
module that provides information about the compiler and target, however, I think has a misleading name. Aside from the fact that it's always automatically generated by the compiler, there is nothing especially "built-in" about it, and it is functionally more similar to something like std.Build.Options
than the rule-breaking "you can't implement this in user space" functionality usually associated with the term. The documentation refers to builtin
as "compile variables", so I wonder if using a different name like compile_vars
, build_env
, comptime_env
, compilation
, etc. would help convey its purpose more clearly and make it less likely to get mixed up with std.builtin
.
from zig.
I have no idea how common is this approach:
const std = @import("std");
const math = std.math;
const os = std.os;
but I don't find this pattern convincing. I'd argue that, as a general rule, writing subspaces of std
out explicitly has a positive impact on the readability of the code.
from zig.
The mixin approach is not viable because the contents of @import("builtin.zig")
may differ between modules in one Zig compilation. And yes, for the record, there is a hard ban on introducing uses of usingnamespace
into the standard library for now.
from zig.
Slightly renaming is preferable.
- I propose add a 's' to one of them
const builtin = @import("builtin");
const builtins = @import("std").builtins;
- Rename
@import("builtin");
to@import("builtin_info");
or@import("builtin_constants");
We can do both 1. and 2. above.
from zig.
Related Issues (20)
- Can't link on PPC64LE HOT 1
- ErrorUnion typeInfo debug print causes GenericPoison HOT 3
- @cInclude("stdio.h") doesn't work for -Dtarget=wasm32-emscripten
- Unsure how to handle duplicate symbol linker error
- SIGTRAP When attempting to write to a runtime index in comptime variable HOT 1
- Undefined struct fields are initialized to 0 instead of 0xAA in debug mode (with llvm backend)
- zig fetch -h should include examples
- Zig build system incorrectly parses some depfiles generated by Rust on Windows
- implement std.Progress for single-threaded mode
- std.Progress: add byte unit flag and resource scope; support throughput calculation
- implement std.Progress IPC for WASI
- implement std.Progress IPC for Windows
- add support for targeting glibc 2.39
- Progress display is cut off horizontally on Windows HOT 2
- `zig fmt` outputs invalid syntax when formatting an error set with doc comments onto one line
- Latest master tarball is unable to build a stage4 zig HOT 3
- upperBound and lowerBound has inconsistent callback types HOT 1
- "offsetof" from C header does not handle union within struct HOT 2
- x86_64 backend miscomp
- When compiling for android, and linking libc, you will always hit a @compileError HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zig.