3 ms·
I thought Zig has a C compiler built in? Or is it just the Zig build system that's able to compile C, but uses an external compiler for that? Still a proper pr
by flossly 6mo ago
I thought Zig has a C compiler built in? Or is it just the Zig build system that's able to compile C, but uses an external compiler for that?
Still a proper programmer-flex to build another one.
- spiffyk 6mo agoZig actually bundles LLVM's Clang, which it uses to compile C with the `zig cc` command. But the long term goal seems to not be so tightly coupled to LLVM, so I'm expecting that to move elsewhere. They still do some clever stuff around compiler-rt, allowing it to be better at cross-compilation than raw Clang, but the bulk of it is mostly just Clang. There is also another C compiler written in Zig, Aro[1], which seems to be much more complete than TFA. Zig started using that as a library for its TranslateC functionality (for translating C headers into Zig, not whole programs) in 0.16. [1]: https://github.com/Vexu/arocc https://github.com/Vexu/arocc
- Pay08 6mo agoThey're not planning on dropping Clang.
- Meneth 6mo agoThey kinda are: "This issue is to fully eliminate LLVM, Clang, and LLD libraries from the Zig project." https://github.com/ziglang/zig/issues/16270 https://github.com/ziglang/zig/issues/16270
- flykespice 6mo agoI find that a very bold move, how will they reivent the wheel on the man-years of optimization work went into LLVM to their own compiler infrastructure?
- geodel 6mo agoAll that will still be available just not in main zig repo. Someone may have asked same question about LLVM when GNU compiler exist.
- convolvatron 6mo agoas a comment about a particular project and its goals and timelines, this is fine. as a general statement that we should never revisit things its pretty offensive. llvm makes a lot of assumptions about the structure of your code and the way its manipulated. if I were working on a language today I would try my best to avoid it. the back ends are where most of the value is and why I might be tempted to use it. we should really happy that language evolution has started again. language monoculture was really dreary and unproductive. 20 years ago you would be called insane for throwing away all the man-years of optimization baked into oracle, and I guess postgres or mysql if you were being low rent. and look where we are today, thousands of people can build databases.
- dnautics 6mo agoThey're just removing the obligate dependency. I'm pretty sure they will keep it around as a first-class supported backend target for compilation.
- jibal 6mo agoNo, the whole point is to eliminate dependencies that they have to maintain. "not obligate" really doesn't mean anything if it's available as a backend--the obligation is on the Zig developers to keep it working, and they want to eliminate that obligation. And the original question was "how will they reivent the wheel on the man-years of optimization work went into LLVM to their own compiler infrastructure?" -- the answer is that Andrew naively believes that they can recreate comparable optimization. There are a whole lot of misstatements about Zig and other matters in the comments here by people who don't have much knowledge about what they are talking about--much of the discussion of using low-level vs high-level languages for writing compilers is nonsense. And one person wrote of "Zig and D" as if those languages are comparable, when D is at least as high level as C++, which it was intended to replace.
- Pay08 6mo agoYes, as a backend. Clang as the `zig cc` frontend will stay (and become optional) to my knowledge.
- ulbu 6mo agolibraries, not processes.
- baranul 6mo agoOr maybe look at something like Zen C. A language without the baggage or change in direction. [1] https://github.com/zenc-lang/zenc https://github.com/zenc-lang/zenc
- spiffyk 6mo agoI expressly said "not be so tightly coupled to LLVM" because I know they're not planning on dropping it altogether. But it is the plan for LLVM and Clang not to be compiled into the Zig binary anymore, because that has proven to be very burdensome. Instead, the plan seems to be to "side-car" it somehow.