Zig's New Relationship with LLVM
Zig is one of the most interesting languages I&#x27;ve seen in a very long time, and possibly the first radical breakthrough in low-level programming design in decades. Maybe it will become a big success and maybe it will tank, but after having two visions for low-level programming -- that of C&#x27;s &quot;syntax-sugared Assembly&quot;, or that of C++&#x27;s &quot;zero-cost abstractions&quot; whose low-level, low-abstraction code appears high level on the page, once you get all the pieces to fit (Rust, while introducing the ingenious borrow checking, still firmly follows C++&#x27;s design philosophy and can be seen as a C++ that checks your work) -- Zig shows a third way by rethinking, from the ground up, how low-level programming could and should be done.<p>It manages to address all of C++&#x27;s biggest shortcomings, which, in my view, are 1. language complexity, 2. compilation time, 3. safety -- in this order -- and it does so in a language that is arguably simpler than C, can be fully learned in a day or two (although the full implications of the design might take longer to sink in), and also inspires a new approach to partial evaluation, replacing generics and value templates, concepts&#x2F;traits&#x2F;typeclasses, constexprs&#x2F;procedural macros, macros (or, at least, the &quot;good parts&quot; of macros) and conditional compilation with a single, simple feature.