Was catching up on reading and found two interesting, yet contrarian to Zig way, blog posts by two reputable PL people:
I personally disagree with both but can see their points. For Zig community it is important to understand that these views are prevalent across adepts of other languages and public advocacy for Zig way (self-hosted compiler, own linker, codegen, etc) is not a trivial thing.
I think most of the points boil down to “focus on the language and don’t waste time on other things”.
This is definitely great advice for someone who is in the early years of language development, and can save them a lot of time.
But I think Zig the language is mature and stable enough to go further.
And honestly the fact that the Zig team had the courage to go beyond just building a normal compiler is also one of its main selling points. For example, if Zig didn’t do cross compilation out of the box I would probably never have tried it out.
This is a good advice in theory and bad advice in practice. This is why most of languages coming from academia are stillborn. Ignore “implementation details” and end up with a great concepts and no path forward for performance or/and portability.
I think you could argue Zig already went through this “phase 1”, and the work being done now is more of a “phase 2” thing.
In his Roadmap 2024 webcast Andrew explicitly mentioned that, if required, he is willing to modify language to make sure that the compiler implementation is performant and supports incremental compilation. This means that the “phase 1” is not fully settled yet.
I think we mean two different things. What I meant was, phase 1 of Zig used already available tooling (LLVM) to come up with a working (but not yet ready or stabilised) version of the language. We are now in phase 2, where the team is reworking how Zig is implemented and coming up with their own tooling – still within the context of an evolving language.