Zig SHOWTIME
Kelley asserts compiler slowness is the primary bottleneck driving Zig's issue backlog, making non-LLVM native code generation and breaking language changes necessary prerequisites before locking in version 1.0.
AI-assisted summary of [#36] Zig Roadmap 2024 - Andrew Kelley — original source. Check the original for full context.
Source published:
Key ideas
- Zig 0.12 marks a shift away from arbitrary release dates toward strict issue resolution, aiming to be the first release downstream projects like Mach and TigerBeetle can reliably pin to, backed by a planned bugfix-only 0.12.1 release. (4:03)
- To clear a backlog of over 1,200 open bugs, Zig's top strategic priority is radically accelerating compiler speed by ditching LLVM dependencies and implementing native non-LLVM backends alongside custom incremental compilation. (8:33)
- The Zig Software Foundation launched its 2024 fundraiser, noting that an additional $10,000 per month would allow existing core team contractors to increase their hours and significantly accelerate development toward version 1.0. (21:11)
- The sequential path to Zig 1.0 prioritizes compiler speed and malleable language design first, followed by stabilizing the standard library, drafting a formal language specification, and finally tagging 1.0. (24:21)
Detailed notes
## Background Published on YouTube by Zig SHOWTIME on January 26, 2024, this live broadcast features Zig creator Andrew Kelley outlining the language's development roadmap for 2024 alongside host Loris Cro. The video description highlights the Zig Software Foundation's 2024 financial report and accompanying fundraiser, alongside announcements for the Software You Can Love (SYCL) 2024 conference in Milan.
## TL;DR Andrew Kelley presents the strategy for the upcoming Zig 0.12 release and beyond, establishing compiler performance as the essential flywheel required to eliminate bugs and boost developer velocity. To achieve radical compilation speeds, Zig is actively transitioning away from LLVM by developing native code generation backends, custom linkers, and an incremental compilation model powered by a flat, pointer-free internal memory architecture. The presentation outlines the sequential progression toward Zig 1.0—moving from compiler speed and language malleability to standard library stabilization and formal specification drafting—while reviewing foundation finances and addressing community questions regarding async/await, developer tooling, and enterprise adoption.
## Atmosphere & style The broadcast strikes an engaging balance between casual open-source hangouts and rigorous systems engineering discussions, transitioning naturally from jokes about eccentric snack foods and skateboarding to deep architectural debates. Hosts Loris Cro and Andrew Kelley maintain a transparent, unpretentious dialogue, candidly addressing logistical hurdles, moving houses, and the financial pressures of sustaining open-source development. Watching the presentation feels like sitting in on an intimate, unfiltered engineering check-in, underscored by Kelley's profound personal gratitude toward the donors who fund independent development.
## Bulletin - [04:03](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=243s) Zig 0.12 marks a shift away from arbitrary release dates toward strict issue resolution, aiming to be the first release downstream projects like Mach and TigerBeetle can reliably pin to, backed by a planned bugfix-only 0.12.1 release. - [08:33](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=513s) To clear a backlog of over 1,200 open bugs, Zig's top strategic priority is radically accelerating compiler speed by ditching LLVM dependencies and implementing native non-LLVM backends alongside custom incremental compilation. - [21:11](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1271s) The Zig Software Foundation launched its 2024 fundraiser, noting that an additional $10,000 per month would allow existing core team contractors to increase their hours and significantly accelerate development toward version 1.0. - [24:21](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1461s) The sequential path to Zig 1.0 prioritizes compiler speed and malleable language design first, followed by stabilizing the standard library, drafting a formal language specification, and finally tagging 1.0.
## Key takeaways - [04:03](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=243s) The Zig 0.12 release prioritizes resolving outstanding downstream blockers over calendar deadlines so external production projects can confidently pin to it. - [08:33](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=513s) Compiler compile time is the primary bottleneck slowing down bug resolution; near-instant compilation creates a compounding developer feedback loop that accelerates bug fixes. - [11:30](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=690s) Achieving radical build performance requires ditching LLVM as the primary bottleneck in debug builds in favor of Zig's custom native backends. - [12:30](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=750s) Zig's incremental compilation requires an in-house linker, an in-house code generator, and an internal memory architecture serialized directly to disk via single syscalls without pointer fixups. - [12:30](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=750s) Andrew Kelley is explicitly willing to break language semantics and introduce new syntax restrictions whenever necessary to make incremental compilation and fast build times possible. - [17:38](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1058s) Exhaustive changelogs are being discontinued for 0.12 in favor of concise migration notes detailing breaking syntax changes and headline features to reduce maintainer burnout. - [21:11](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1271s) Unrestricted recurring donations remain the foundation's favored revenue stream because they preserve operational autonomy and avoid the administrative overhead of targeted feature bounties. - [24:21](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1461s) Reaching Zig 1.0 follows a strict dependency order: optimizing compiler speed while semantics remain malleable, standardizing the standard library, publishing a language specification, and finally tagging 1.0. - [27:28](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1648s) The true signal of stability for cautious prospective adopters is the publication of the draft language specification rather than the arbitrary 1.0 version tag. - [27:28](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1648s) Zig plans to investigate source-level version declarations to avoid Python 2-to-3 migration pitfalls, allowing compilers to seamlessly build multiple dialect versions within a single project. - [30:00](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1800s) Async/await cannot return until native backends are fully realized, as LLVM coroutine intrinsics force unwanted hidden memory allocations and degrade compiler optimizations. - [01:01:23](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3683s) Early in-tree language server integration is treated as a productivity maintenance tax that slows compiler refactoring, postponing compiler-level tooling hooks until internal architectures settle. - [46:58](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=2818s) A 30,000-line overhaul of Zig's intern pool was completed in a single month by three engineers, demonstrating the practical malleability and refactorability of large Zig codebases compared to legacy C++ projects like LLVM. - [47:56](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=2876s) Zig is investigating fast optimization techniques, such as the 'sea of nodes' intermediate representation used in the Cuik C compiler, to ensure future optimization passes remain exceptionally rapid. - [50:12](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3012s) Engineers seeking to introduce Zig into workplace environments are advised to rewrite low-risk internal developer tools rather than trying to pitch the language directly for critical production systems. - [55:08](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3308s) Language edge cases like parameter passing aliasing are deprioritized until stabilization because real-world production feedback shows they cause negligible friction compared to everyday bugs.
## Detailed walkthrough ### [00:54](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=54s) Announcements: Fundraiser and Software You Can Love Milan 2024
Loris opens Zig SHOWTIME episode 36, noting humorously that he forgot to update the stream title beforehand and will adjust it after the introduction. Before handing the floor to the main session, he highlights two major announcements for the Zig community:
First, the Zig Software Foundation published its 2024 financial report and launched an accompanying fundraiser on the official Zig website (`ziglang.org`). Loris urges viewers to read through the breakdown to see exactly where project funding is allocated and to consider contributing. As he explains, the influx of contributors and expanding scope of work mean that additional funding directly impacts development velocity: “more money would definitely help us reach Zig 1.0 sooner.”
Second, Loris announces Software You Can Love (SYCL) 2024, scheduled for May 14–17, 2024, in Milan, Italy (`sycl.it`). The event provides an opportunity to meet Andrew Kelley, several members of the Zig core team, and active community contributors. A call for speakers is currently open, and Richard Feldman—creator of the Roc programming language—is confirmed to attend alongside other functional programming practitioners, though SYCL retains its own distinct identity beyond traditional paradigm borders.
Loris introduces Andrew with an affectionate, offbeat recap: Andrew is not only the Benevolent Dictator for Life (BDFL) of Zig and president of the Zig Software Foundation, but also an avid competitive player of the arcade game *Killer Queen* and a skateboarder. Recalling a recent visit to Andrew's home city in the United States, Loris shares that after visiting a skate park, Andrew introduced him to an unorthodox culinary combination—french fries loaded with cheese curds, peanut butter, and jelly.
[04:03](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=243s) Kicking Off and the 0.12 Release Focus
Andrew takes the stage with a deadpan joke, impersonating Ginger Bill (creator of Odin) and inviting the audience to sample his new beer, before thanking Loris and remarking that it has been quite a while since he last streamed or presented publicly. Reflecting on donations submitted through the foundation's Every.org page, Andrew shares a comment left by one supporter: “here's some money you're doing a good job but please tell us more updates like every month we want to know what's going on.” Acknowledging the request as completely fair, he sets out to walk through the upcoming roadmap.
Andrew begins by clarifying the strategy behind the upcoming 0.12 release. Navigating to the GitHub milestone tracker, he explains that while he occasionally trims items from milestones to postpone them, the approach for 0.12 differs fundamentally from past cycles. Rather than rushing to hit an arbitrary calendar date, the focus is squarely on resolving key issues so downstream projects can comfortably rely on the release:
> “for this particular Milestone the focus is on actually getting these things done and not on a particular due date so it's kind of a different one this time because I think this this Milestone it's going to be the first one where I think a lot of projects are going to feel comfortable pinning to it”
To organize this, Zig maintains a tracking wiki where external projects can register themselves as important third-party dependents. Andrew highlights Mach and TigerBeetle as examples: - **Mach:** The Mach team maintained a dedicated issue tracking blockers; several have been addressed, and Andrew wants the remaining short-term items resolved before tagging 0.12. - **TigerBeetle:** Contains both long-term initiatives and near-term bugs. Andrew notes that while long-term requests cannot make this cycle, bug fixes and short-term items take priority, with some completed recently.
Addressing why progress on the milestone appeared to slow down during January, Andrew reveals that he moved residences that month. The constant friction of moving disrupted his deep focus, leaving him with fragmented blocks of time suitable only for processing pull requests. Zig reached a historic milestone of over 200 open pull requests, but after grinding through the queue for two weeks, Andrew brought that figure down to 94. His plan is to whittle down PRs slightly further before temporarily setting them aside to focus exclusively on finishing the 0.12 milestone blockers.
[08:33](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=513s) The Flywheel: Compiler Speed as the Path to Zero Bugs
Looking beyond the 0.12 release, Andrew pivots to the defining challenge facing Zig: an issue tracker burdened by 1,227 open bugs. He highlights the sheer arithmetic of the situation: solving just one bug per day would take more than four years without ever making headway against incoming reports.
To solve more than one bug per day, Andrew arrives at what he considers the foundational bottleneck:
> “the realization that I had is that the compil is too damn slow that's why that's why we have bugs because it takes too long to fix them”
Using an "investing in your economy" analogy inspired by real-time strategy games like *Age of Empires* or deck builders, Andrew explains that debugging follows an iterative feedback loop: code editing, compiling, and testing. When compile times eat up the majority of that loop, engineering velocity drops off a cliff. Shrinking the compilation phase down to near-instantaneous execution frees up daily programming hours to be spent writing tests and modifying code, which in turn dramatically accelerates bug resolution. While this realization might seem obvious at first glance, Andrew argues that deep contemplation leads back to that exact root truth:
> “Priority One get people set so that they can pin and not have experience breaking changes all the time with 0.12 release next priority we need to make this compiler the fastest programming language that anyone can use that's the next priority”
```mermaid flowchart TD accTitle: Developer Feedback Loop accDescr: The cycle of debugging showing how slow compilation throttles editing and testing.
subgraph SLOW["Slow Compilation Loop"] A1["Edit Code"] --> B1["Slow Compilation (Bottleneck)"] B1 --> C1["Run Tests"] C1 --> A1 end
subgraph FAST["Optimized Economy Loop"] A2["Edit Code"] --> B2["Near-Instant Compilation"] B2 --> C2["Run Tests & Reproduce Bugs"] C2 --> A2 end ```
[11:30](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=690s) Performance Angles: Ditching LLVM and the Native x86 Backend
To execute on this speed initiative, Andrew shares a Kanban-style performance tracking dashboard outlining Zig's angles of attack. The primary strategy to unlock radical compiler speed is straightforward: eliminate the dependency on LLVM.
Because LLVM constitutes the overwhelming bottleneck in total build time, Andrew emphasizes that replacing it is non-negotiable. Substantial progress was poured into this effort throughout the 0.12 release cycle. Although he does not have the exact percentage of passing behavior tests on hand, the native backends have advanced to where developers can already run and test the custom x86 backend directly, marking a critical step toward an ultra-fast, self-contained toolchain.
[12:30](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=750s) Non-LLVM Backend and the Mechanics of Incremental Compilation
Andrew Kelley explains that the Zig backend can now completely bypass LLVM for code generation, yielding significantly faster compilation speeds. While it is not yet passing all behavior tests, it has reached a state where developers can start experimenting with it. Certain projects can already perform debug builds entirely without LLVM. This experimental backend lands in Zig 0.12, with plans to make it increasingly practical over time.
Turning to incremental compilation, Kelley identifies it as Zig's true breakthrough: “This feature is something unique to Zig because you just can't do it on accident; you have to design for it since the beginning.” Implementing incremental compilation the way Zig envisions requires ditching external tools entirely. A project cannot rely on a system assembler; it requires an in-house code generator paired directly with an in-house linker. The compiler's entire internal memory architecture had to be overhauled. Zig eliminated internal pointers across all compiler types and values, restructuring the data into flat integer arrays formatted like an on-disk database. Storing or loading compiler state requires no pointer fixups or custom serialization logic: it serializes and deserializes via a single syscall (`memcpy`) directly between disk and runtime memory.
```mermaid flowchart LR accTitle: Zig In-Memory Compiler State to Disk accDescr: Flat integer arrays in compiler memory are serialized directly to disk via memcpy with zero pointer fixups.
subgraph Memory["Compiler Memory State"] A["Flat Array of Types"] B["Flat Array of Values"] end
subgraph Persistence["On-Disk Serialization"] C["Single Syscall (memcpy)"] D["Exact Memory Layout on Disk"] end
Memory --> C --> Persistence ```
Kelley underscores that fundamental architecture takes precedence over minor language features because he is willing to alter language semantics to make the compiler fast: “If we're willing to break the language, which I absolutely am, then when you run into a design dead end when trying to make incremental compilation happen, you just break everyone's code, change the language, add a new restriction: 'Sorry, you can't do this because we have to make incremental compilation work.'” Because mature languages like C and C++ cannot break backwards compatibility or rip out core abstractions, they cannot retroactively replicate this design. Kelley terms it Zig's unreleased "killer feature." Once in place, it will unlock massive productivity improvements for game developers, terminal developers, JavaScript runtime authors, database engineers, and the Zig compiler team itself, dramatically speeding up bug resolution.
[17:38](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1058s) Release Planning: 0.11.1, 0.12 Pinning, and Streamlined Release Notes
Addressing minor releases, Kelley confirms he will tag a `0.11.1` release by cherry-picking safe commits that pass continuous integration. However, he warns that it will offer limited utility: the `master` branch has diverged so significantly that many major fixes cannot backport cleanly. Most users seeking stability will find the upcoming `0.12` release far more bug-free than `0.11.1`. Conversely, for `0.12`, the Zig Software Foundation intends to fully support enterprise and production pinning by providing a dedicated, bugfix-only `0.12.1` release. Kelley urges anyone planning to pin to `0.12` to audit the 0.12 milestone on GitHub immediately and ping him about any blocker bugs that might prevent adoption.
Kelley also announces an overhaul of their release notes process, acknowledging that exhaustive changelogs have become unsustainable. Attempting to document every single commit has placed undue burden on the maintainers. For `0.12`, the release notes will narrow focus:
- Direct focus on language modifications and syntax adjustments. - Complete, unambiguous documentation of all breaking changes so developers have a single reference guide for migrating codebases from `0.11` to `0.12`. - Highlights of major headline features, deliberately omitting exhaustive minutiae.
Kelley emphasizes that trimming the scope of the notes reduces dev team burnout while giving users a concise, readable upgrade guide.
[21:11](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1271s) ZSF Finances, Core Team Funding, and Individual Donations
Segueing from the 0.13 roadmap into finances, Kelley discusses the fundraiser banner posted on the Zig homepage and the comprehensive financial report he compiled after auditing the foundation's accounts. While user adoption, bug reports, and community support requests have surged, incoming financial contributions have leveled off.
Kelley notes that two key Zig core team developers specifically want to bill more hours directly to the project:
> “If ZSF had like 10 grand more per month, we would be able to put that money to like a 100% efficient use: like that money would go directly towards contractors who I'm thinking of in my head right now who would do incredible work, and if we could do that, that's like a major boost in how good Zig is going to be very quickly, and if we can't do that, it's just going to take longer to get to 1.0.”
Highlighting an income breakdown chart, Kelley points out that direct individual donations—combined with Benevity and similar matching platforms—account for roughly one-third of the foundation's total revenue. He identifies individual patrons as ZSF's favored income stream, noting that while no single person provides an overwhelming sum, individual community backers collectively preserve the foundation's operational independence and keep it true to its open-source mission.
[24:21](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1461s) The Order of Operations for Reaching Zig 1.0
Wrapping up the discussion on project finances, Andrew Kelley emphasizes how much low administrative overhead matters. Keeping overhead minimal allows the team to stay laser-focused on building a great compiler and shipping releases rather than chasing bureaucratic tasks. He expresses deep gratitude to individual contributors—noting that while single donations might seem negligible to donors, their cumulative impact is massive—alongside the corporate sponsors whose larger capital injections accelerate progress toward milestones.
Turning to the road toward Zig 1.0, Kelley outlines the strict sequential dependency needed to reach production readiness. Compiler performance comes first: accelerating compilation speeds directly amplifies internal development velocity, allowing the core team to iterate much faster on every other part of the project. Furthermore, Kelley rejects the common pedantic claim—frequently encountered in mid-2000s Python IRC channels—that languages themselves cannot be fast or slow, only implementations can. Languages impose hard constraints on optimization, code generation, and memory representations; therefore, languages have inherent speed limits. Kelley insists on keeping the syntax and semantics malleable until the compiler can achieve maximum speed: “I'm absolutely willing to bend the language to make it more amenable to a fast compiler or to optimizations so that's why working on this comes first because we can't solidify the language until we know that the language is good enough to make a fast compiler.”
```mermaid flowchart LR accTitle: Zig 1.0 Development Progression accDescr: Sequence of four steps leading to the Zig 1.0 release. A["1. Fast Compiler & Language Malleability"] --> B["2. Solidify Standard Library"] B --> C["3. Draft Language Specification"] C --> D["4. Tag Zig 1.0 Release"] ```
Once compiler speed and language design stabilize, the next milestone is solidifying the standard library. As of early 2024, the standard library remains an experimental playground with uneven quality: core data structures like `ArrayList` and `ArrayHashMap` along with low-level OS abstractions are relatively robust, while other modules need overhaul. Once standard library foundations lock in, the team will produce an official draft of the language specification, which finally paves the way to tag 1.0.
[27:28](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1648s) Stability Before 1.0 and Multi-Version Source Code
Kelley addresses prospective users who hesitate to touch Zig until 1.0 arrives out of fear of breaking changes. While he understands the desire for a settled target, waiting for the 1.0 tag misses the critical window where practical feedback matters most. Before 1.0, Zig will enter a prolonged period of high stability. Early adopters who invest during that period provide essential real-world stress testing, giving the core team an opportunity to address critical flaws before freezing backwards compatibility forever.
Furthermore, Kelley questions whether the 1.0 milestone will be as momentous as people anticipate, largely because breaking changes between versions can be managed far better than past industry cautionary tales suggest. Reflecting on the painful multi-year transition between Python 2 and Python 3, Kelley argues that the Python team suffered a failure of imagination: source files could simply have declared their target version, enabling the interpreter to handle both semantics cleanly. Zig intends to explore source-level version declarations, letting the compiler seamlessly compile and link 1.0 code, 2.0 code, or pre-1.0 code within the same build. For prospective users who are waiting on the sidelines, the real inflection point to watch for is not the arbitrary 1.0 tag, but the publication of the draft language specification.
- Early adopters should jump in during the pre-1.0 stabilization phase to help catch structural design defects before breaking changes are locked out. - Declaring target Zig language versions in source code can allow future compilers to run older dialect semantics side-by-side. - The appearance of the formal language specification draft marks the true milestone for API and syntactic stability.
[30:00](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=1800s) Q&A: The Technical Barriers Facing Async/Await
Opening the Q&A segment, Loris Cro relays an immediate question from user bitWatcher regarding the status and future of Zig’s `async`/`await`. Kelley admits he should have included a dedicated slide and affirms his deep personal affinity for the paradigm: “Deep in my heart I love async/await because the idea is that you can express your intent precisely: you can say I want to start this, I want to start this, I want to start this, and then later you say now I need these results, then later I need that result.” Recalling his extensive background writing single-threaded event loops with callbacks in early Node.js, Kelley describes that programming model as exceptionally cozy and emphasizes that his ultimate goal remains bringing that ergonomics to statically typed, ahead-of-time (AOT) compiled systems languages.
However, realizing production-grade async in Zig requires solving multiple massive technical roadblocks: 1. **Incompatibility with LLVM:** LLVM’s built-in coroutine intrinsics (originally designed by Gor Nishanov) are fundamentally unsuited for Zig’s goals. They perform poorly, lower into slow code, and enforce hidden, implicit allocations via `malloc` that violate Zig’s zero-hidden-allocation philosophy. Working around these intrinsics using manual state structs obliterates LLVM’s downstream optimization passes. To generate high-performance async code, Zig must rely on its own custom native code generation backends. 2. **Missing Debugger Infrastructure:** System debuggers like GDB and LLDB cannot cleanly represent async stack frames or suspended execution states within standardized debug formats like DWARF or CodeView. Zig would likely need to build bespoke debugging tooling to deliver an acceptable developer experience. 3. **Language Semantics and Cancellation:** Solving async cancellation cleanly without overhead or leaks presents complex language design hurdles that require careful, ground-up architectural work.
Kelley explains that Zig's earlier async implementation—which underwent three distinct iterations—served as a successful research experiment that mapped out event loop boundaries, lowering requirements, and LLVM shortcomings. He refuses to reintroduce a superficial, half-baked version just to check a feature box. Async will return once Zig's self-hosted backends and tooling can support it properly.
[34:31](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=2071s) Donor Bounties vs. Unrestricted Recurring Funding
Loris Cro reinforces Kelley's points on async, highlighting the elegance of Zig’s original design where a single codebase could flexibly support both blocking and asynchronous execution models when engineered correctly.
Cro then shifts to a recent announcement published on the Zig website regarding "Donor Bounties"—a mechanism designed to let external donors sponsor specific features and milestones while fitting into the Zig Software Foundation's operational model. Responding to a chat message hoping donor bounties will provide steady cash flow, Cro clarifies the Foundation's funding priorities. While donor bounties are a welcome structured alternative to ad-hoc bounty platforms, unrestricted recurring donations remain vastly superior for the project's health: “Sure, although for us the, you know, recurring donation that is not tied to anything that doesn't have any, you know, management overhead—like just money that can directly go to people doing work—that's still our preferred way of getting donation money by far.” General recurring funds give the foundation complete freedom to pay core developers to tackle foundational compiler work and bug fixes rather than diverting focus into managing milestone checklists.
[03:59:57](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=14397s) Donor Bounties vs. No-Strings-Attached Donations
Loris Cro elaborates on how the Zig Software Foundation approaches targeted funding. While the project encountered issues in the past, Loris explains that there are genuinely well-intentioned supporters who simply want a specific minor feature or fix prioritized because it directly matters to their work, and they are happy to contribute funds specifically for that outcome. The foundation's donor bounty approach serves as a way of channeling that natural impulse constructively without altering the core donation philosophy: donors support Zig, and they trust the core team to allocate funds where they make the most sense.
Andrew Kelley reinforces this position, stating that unrestricted funding remains the ideal: “No strings attached donations is still our favorite kind of donation.” He emphasizes that donor bounties are not being pitched as a new default model for everyone to follow. Rather, it is merely an accommodating mechanism designed to work with a small handful of donors who asked for it, allowing the foundation to help them out without compromising the overall project direction.
[04:01:23](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=14483s) Tooling, Language Servers, and Developer Velocity
```mermaid flowchart TD accTitle: Trade-off between High-Leverage Improvements and Maintenance Taxes accDescr: Diagram illustrating how compiler performance improvements act as perpetual velocity multipliers while early language server integration acts as a maintenance tax.
subgraph Velocity["Velocity Multipliers"] A["Compiler Performance Work"] --> B["Faster Iteration Cycles"] B --> C["Compounding Team Productivity"] end
subgraph Tax["Maintenance Taxes"] D["Embedded Language Server (LSP)"] --> E["Tied to Internal AST & Memory Layouts"] E --> F["Refactoring Tax on Every Compiler Change"] end ```
A viewer asks whether developer tooling—specifically language servers like ZLS—has an explicit place on the roadmap or whether it will remain an external community effort. Andrew explains that his written roadmap serves as the primary guiding force for his own efforts, but any community member can effectively influence Zig's trajectory via pull requests. If a volunteer contributes clean, working code that solves an outstanding problem, it will be reviewed and merged promptly, regardless of whether it originally sat behind other milestones. Furthermore, Andrew maintains a personal rule for himself and the ZSF contractors: anyone is free to detour from the master plan whenever motivation flags, provided the alternative task is still productive. Switching temporarily to side tasks like `zig reduce` or tooling updates provides a much-needed breath of fresh air while keeping overall momentum alive.
Loris notes that Zig's tooling ecosystem is currently split between exceptionally mature infrastructure and early-stage components. The C/C++ integration and `build.zig` build system are already remarkably robust; Loris even built a static site generator entirely driven by a `build.zig` graph. Conversely, tools like ZLS and autodoc struggle with complex `comptime` evaluation because they are not the compiler itself. While basic navigation (such as "Go to Definition" and "Find References") works smoothly in daily development, full comprehension of heavy `comptime` constructs requires deep architectural support from the compiler engine down the road.
Andrew adds a critical software engineering observation regarding developer velocity and maintenance overhead:
> “Some kinds of things when you get them done, they increase your velocity, and some things are a tax, and that's an example of a tax.”
Making the compiler fundamentally faster compounds productivity forever. Conversely, integrating an in-tree language server early creates an ongoing maintenance burden: every internal compiler refactor or memory layout adjustment would force engineers to update extra surface area. Because Andrew personally uses Vim rather than LSP, maintaining early language server integration within the compiler would represent an unmitigated productivity tax rather than a workflow aid, meaning the investment must wait for the right strategic window.
- **Build System Maturity**: The build system and cross-compilation pipeline are already mature enough to serve as the entire execution engine for complex third-party tools like static site generators. - **ZLS and Autodoc Limitations**: Current community tools duplicate compiler logic and therefore cannot fully resolve arbitrary compile-time code execution (`comptime`). - **Strategic Timing**: Advanced compiler hooks for tooling will arrive only after foundational compiler architecture changes settle.
[04:08:25](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=14905s) The Intern Pool Refactor: Landing a 30,000-Line Change
A viewer identified as `scoop018` asks about the intern pool changes in the compiler, characterizing them as a deep, brutal gutting of central data structures and asking whether landing the patch was an exercise in unexpected roadblocks or sheer drudgery. Andrew pulls up the original pull request, noting that it comprised nearly 30,000 lines of non-vendored code written and edited primarily by himself, with key help from Jacob and Matthew.
Despite the sheer scale of touching so many foundational structures across the compiler, Andrew reveals that the migration went surprisingly according to plan without major surprises. The refactor took about a month of focused work. While a few pointer-invalidation footguns slipped into early designs and had to be restructured, the overall effort proceeded smoothly from start to finish. Andrew highlights that while minor fallout bugs inevitably followed a change of this magnitude, the smooth execution demonstrated how reworkable and refactorable idiomatic Zig code is in practice, allowing deep architectural gutting without leaving developers scratching their heads.
[46:58](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=2818s) Zig's Malleability Compared to C++ and LLVM
Reflecting on the massive 30,000-line compiler refactoring, Andrew Kelley contrasts Zig’s internal flexibility with the inertia of large legacy C++ projects like LLVM. In massive C++ codebases, developers often recognize architectural mistakes—such as retaining typed pointers instead of transitioning to opaque, untyped pointers—yet the sheer friction of the codebase makes resolving them nearly impossible. Andrew points out that when LLVM finally completed its migration to opaque pointers, the effort took roughly five years and involved hundreds of engineers. By comparison, executing an equivalent 30,000-line overhaul in Zig took him just a single month with the assistance of two contributors.
Andrew uses this contrast to underscore how maintainable and responsive Zig remains even as its codebase scales. Rather than hardening into a rigid state where radical architectural improvements become prohibitive, Zig preserves its malleability:
> “I think it's a good example of what how Zig is actually pretty hackable pretty pretty malleable after you've even even after you've accumulated a lot of code.”
[47:56](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=2876s) The Future of Compiler Optimizations and the Sea of Nodes
A viewer asks about future compiler optimizations, inquiring when community members can start contributing optimization passes, whether Zig will introduce an entirely separate Intermediate Representation (IR), and if any design work has already begun. Andrew explains that while he does not yet know if a new IR will be required, it might behoove the project to establish the optimization pipeline early—even before the core team is ready to fully flesh it out—simply to unlock contributions from developers passionate about compiler backends.
Currently, Andrew has been investigating the architecture of Cuik, a fast C compiler developed by a researcher going by the handle Negate. Negate has researched building compilers that are not merely fast at compiling, but fast while performing optimizations, largely through a “sea of nodes” IR representation. Andrew expresses enthusiasm about diving deeper into Negate's strategy, noting that adopting such an approach might entice Negate to contribute directly to Zig. However, building out an optimization framework remains a significant undertaking, requiring dedicated regression testing for individual passes, pipeline introspection, and specialized tooling before community contributions can be seamlessly integrated.
```mermaid flowchart TD accTitle: Zig Compiler Optimization Pipeline Plans accDescr: Pipeline showing current compiler stages leading to planned introspection tooling and experimental optimization passes.
subgraph Front ["Current Pipeline"] AST["Zig Source / AST"] AIR["AIR / ZIR"] end
subgraph Planned ["Planned Optimization Layer"] Tools["Pipeline Introspection & Test Harness"] Opt["Optimization Passes (Sea of Nodes / Cuik Model)"] end
subgraph Back ["Code Generation"] Machine["Machine Code / Linker"] end
Front --> Tools Tools --> Opt Opt --> Machine ```
[50:12](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3012s) Persuading Companies to Adopt Zig Before 1.0
After a $50 donation to the Zig Software Foundation from Hector Jam, a viewer asks how to convince an employer to adopt Zig over C in production given that the language currently lacks a finalized formal specification. Andrew’s immediate, playful response is to “ask for forgiveness instead of permission,” noting that for engineers early in their careers, this can be practical advice. For those navigating corporate environments more cautiously, he advises introducing Zig in low-risk internal developer tooling rather than user-facing production systems. If an engineer completes their daily work and uses side time to rewrite an internal utility in Zig—making it visibly faster or adding a helpful capability—colleagues and management typically welcome the improvement without scrutinizing the underlying language:
> “People are gonna say oh great you know thank you they don't even care whether it's for n Zig or not.”
Loris Cro elaborates that while language specifications are significant in the long run, their absence rarely hinders daily engineering, citing multiple popular programming languages that achieved mass adoption without formal specs. Furthermore, obsessing over a "1.0" tag reduces nuanced engineering tradeoffs down to a single semantic version number. Loris points to Node.js, which remained on the `0.8.x` and `0.10.x` branches for years while powering entire businesses; although users agitated for a 1.0 release and even forked the project, companies successfully bet their infrastructure on it because it proved stable in practice. Real-world evaluation relies on hands-on prototyping and developing a solid mental model of Zig’s trade-offs rather than waiting for a superficial version label.
[54:31](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3271s) Community Donations and "Captain Undefined Behavior"
Between questions, Loris and Andrew acknowledge donations pouring into the Zig Software Foundation, including a $50 contribution from Palmo and $100 from Spear Online. The live chat sparks laughter when a donor appears under the pseudonym “Captain Undefined Behavior,” referencing a recurring viewer and community running joke. Andrew laughs off the moniker:
> “I'm not afraid of Captain undefined behavior in Zig it's called illegal Behavior anyway.”
[55:08](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3308s) Addressing Martin Wickham’s Talk and Real-World Priorities
For the final question of the broadcast, Loris raises an issue repeatedly submitted by viewers regarding Martin Wickham’s presentation at the Software You Can Love Vancouver conference. The talk highlighted edge cases surrounding parameter passing, memory aliasing, and theoretical footguns in Zig's semantics. Andrew confirms there is no new update on the issue because it simply does not cause widespread issues in production code, rendering it a lower priority until the team enters the final stabilization phase before 1.0.
Andrew acknowledges that while the issue has become a sensation in online developer circles, he refuses to hastily ship a stopgap measure just to appease tech hype:
> “I don't want to just react to you know it being a Hot Topic and throw some Band-Aid in there I'm gonna do it right um and I still I still think I have a chance to solve the problem in a way that not only avoids the potential foot gun but also um makes you able to write optimal code that can be perfectly optimized.”
Properly resolving the issue requires uninterrupted language design experiments that Andrew has deliberately postponed until he can dedicate his full attention to them. Looking to commercial users who actually document their operational hurdles—such as the TigerBeetle team and Matt Cole—Andrew points out that while TigerBeetle does list parameter aliasing on their roadmap issues, it is ranked below higher-impact practical problems, such as unexpected illegal behavior triggered by the default `+` operator. He reiterates that real-world production feedback matters far more to language priorities than the fast-moving news cycle of online tech forums. As the stream winds down, Andrew expresses his heartfelt gratitude to all the supporters and donors who make full-time work on Zig possible.
[58:25](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3505s) Andrew's Gratitude for Full-Time Zig Development and Donor Trust
Reflecting on his journey, Andrew Kelley expresses sincere gratitude for the opportunity to dedicate himself completely to the language for several years. He reflects on how deeply meaningful the work is to him, sharing how much joy he finds in directly supporting developers and polishing the programming experience. As Andrew puts it: “I love serving users and I love making everyone happy and trying to make everyone's code good um and I really appreciate that people trust us with their um with their donations to make that happen for them so thank you.” For Andrew, the financial contributions from the community represent far more than funding; they are a profound vote of confidence that allows the core team to focus wholeheartedly on building reliable, high-quality software for everyone.
[58:50](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=3530s) Stream Wrap-Up and Community Thank-Yous
Loris Cro steps in to conclude the broadcast, thanking the audience for tuning in to review the 2024 Zig roadmap. Rather than confining the conversation solely to the dedicated Zig SHOWTIME Discord server, Loris encourages viewers to join any part of the broader Zig community to continue the dialogue, noting that the roadmap discussions are broadly relevant and engaging across all platforms. As the stream winds down to outro music, Loris gives a final shout-out to community members making live contributions to the Zig Software Foundation fundraiser, spotlighting donors like hejam, who contributed an additional $50, and ElCob32, before bidding everyone farewell until the next episode of Zig SHOWTIME.
- Viewers are encouraged to take ongoing roadmap and technical discussions to any Zig community forum or the Zig SHOWTIME Discord. - Loris highlighted last-minute donations directly on stream, including a $50 contribution from hejam and support from ElCob32.
## Notable quotes > [03:59:57](https://www.youtube.com/watch?v=5eL_LcxwwHg&t=14397s) No strings attached donations is still our favorite kind of donation. — Andrew Kelley
## Mentioned Andrew Kelley, Loris Cro, Ginger Bill, Richard Feldman, Jacob, Matthew, Negate, Martin Wickham, Matt Cole, Zig, Zig Software Foundation, Software You Can Love, Roc, Mach, TigerBeetle, LLVM, Odin, Node.js, Python, C, C++, ZLS, Cuik, GDB, LLDB, Every.org, Benevity, Killer Queen
## Video description Links: https://ziglang.org/news/2024-financials/#2024-financial-report-and-fundraiser https://sycl.it
0:00 Intro 3:00 Talk 30:15 Q&A
[Source](https://www.youtube.com/watch?v=5eL_LcxwwHg)