The Zig Programming Language

⟵ back to the homepage Last update: 2022/11/07
Commonly Asked Questions

When will Zig reach v1.0?

Zig will be tagged v1 once:

If you want to help us move forward faster, consider donating so that we can pay more contributors for their time.

Is Zig made by a big tech company?

No, Zig is supported by the Zig Software Foundation, a 501(c)(3) non-profit company. We will never concede board seats to any big tech company.

Learn more about the ZSF

Production-Ready Status

The Zig compiler toolchain is being used to cross-compile C/C++/ObjC by Uber and a few other companies.

The Zig programming language is not being used in production by any big company and it’s currently not recommended to use Zig for mission-critical software as the language is still under development and there are known bugs and even some miscompilations.

Some companies are preparing to be early adopters for when Zig becomes more suitable for production use. One example is Coil, which is working on TigerBeetle.

We know of some cases where Zig is being used in production despite its immaturity.

If you want to help us move forward faster, consider donating so that we can pay more contributors for their time.

Self-Hosting

Starting from version 0.10.0, Zig started shipping the self-hosted compiler.

Version 0.10.0 still also includes the bootstrap compiler, which can be enabled with -fstage1. Starting from 0.11.0 (not yet released at the moment of writing) the bootstrap compiler will be deleted and all code will have to be built using the self-hosted implementation.

Self-hosting is the first of a series of updates to Zig aimed at improving compilations speed and lowering memory usage (while compiling). See Zig Roadmap 2023 for more info.

Official Package Manager

Zig will have an official package manager. Its development will start after the release of the self-hosted compiler. For now the choices that will probably be part of the first design iteration are:

Andrew gave a talk at Software You Can Love 2022 on the subject.

Async/Await and Event Loop

Async/Await is implemented in the language but still lacks one important operator that would allow to await on multiple async frames at once. Aside from that, it’s already possible to write libraries that can work seamlessly in both blocking and evented I/O mode, like zig-okredis, as well as full-fledged evented applications like bork.

The event loop is part of the standard libary, which means that it will be eventually possible to use custom implementations with relative ease. The current implementation in the standard library is of PoC quality. Improvements on the event loop depend on finalizing the design of async/await.

// TODO: list some event loop implementations by the community

News about evented I/O support in Zig:

Standard Library

Currently the Zig standard library is the result of organic growth. While fairly complete and reasonably well designed, it was never the focus of the main development effort and as such it will occasionally have confusing corners and missing features.

The current plan is to start an official polishing effort at some point after development of the language itself nears completion. This means completing the transition to the self-hosted compiler implementation and also going through the current backlog of language features that are accepted but not yet implemented.

Standard Library Documentation

The official website lists in the Learn section a link to a build of the stdlib docs.

These docs are marked as beta and as such you should expect to find bugs and missing information. The automated doc system is being actively worked on and is accepting contributions.

While stdlib docs are already mostly usable, we still recommend you familiarize yourself with the stdlib source code, as it will help you make up for the current deficienties of the automated doc system.

For great justice!