Zig: The Modern Alternative to C

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • zig

    General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

    I agree. I gave Zig a fair shake, even went so far as to find the compiler PR that automatically adds `_ = foo` to your source code while compiling[1] and set up the VSCode extension with autofix. I couldn't get used to seeing the `_ =` appear and disappear all over my code while I was typing.

    Also with the usual warnings approach, you can rely on compiler/IDE/pre-commit tooling to find unused variables - they'll all nag you until it's fixed. With Zig's autofix approach, those problems are immediately silenced and you don't have any help from the compiler or tooling to find unused variables. It's quite an ironic outcome if you think about it.

    [1]: https://github.com/ziglang/zig/pull/12803

  • libxev

    libxev is a cross-platform, high-performance event loop that provides abstractions for non-blocking IO, timers, events, and more and works on Linux (io_uring or epoll), macOS (kqueue), and Wasm + WASI. Available as both a Zig and C API.

    https://github.com/mitchellh/libxev

    - one from the Tigerbeetle DB

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • tigerbeetle

    The distributed financial transactions database designed for mission critical safety and performance.

    https://github.com/tigerbeetledb/tigerbeetle/tree/main/src/i...

    They both use kernel concurrency features (io_uring/epool on Linux, kqueue on MacOS).

  • sokol-tools

    Command line tools for use with sokol headers

    In practice it works very well though, I experimented replacing cmake with build.zig for a 'not-quite-trivial' C++ project, and tbh for cross-platform code that's a lot nicer wrestling with cmake and all the C/C++ compiler toolchain differences:

    https://github.com/floooh/sokol-tools/blob/master/build.zig

  • bash2048

    Bash implementation of 2048 game (by JosefZIla)

    In a way I feel that everything is an alternative to everything and at the same time nothing is.

    As you said it all depends on the circumstances. But I don't really see Zig competing with Go. They both can do mostly the same things, but they both approach them from quite a different sides.

    For example bash is being used in:

    - gaming (https://github.com/JosefZIla/bash2048)

    - web apps (https://github.com/avleen/bashttpd)

    - networking

    - CLIs

    - distributed systems (https://github.com/frameable/aviary.sh)

    - crypto (https://armedia.com/blog/blockchain-program-written-bash/ https://github.com/grondilu/bitcoin-bash-tools)

    - systems programming (https://github.com/damphat/kv-bash)

    - language tooling

    Some of those make more sense than others. However we all talk about a mythical general case. For every language there are niches that are covered by it more significantly. For Go it would probably be web backend. It doesn't mean it is only suited to this one niche, it is used in everything. In general it is used there more. I don't believe that Rust sees the most use in the same niche to the same order that Go sees it.

    Is Rust or Zig an alternative to php, awk or Lisp? In practice I don't really think so.

    I guess it all depends on one's definition of "alternative". I don't think that a statistical Go programmer would see Zig as a real alternative. Statistical C programmer might see it as a Go alternative, but that probably would not be a question he would ask.

  • bashttpd

    A web server written in bash

    In a way I feel that everything is an alternative to everything and at the same time nothing is.

    As you said it all depends on the circumstances. But I don't really see Zig competing with Go. They both can do mostly the same things, but they both approach them from quite a different sides.

    For example bash is being used in:

    - gaming (https://github.com/JosefZIla/bash2048)

    - web apps (https://github.com/avleen/bashttpd)

    - networking

    - CLIs

    - distributed systems (https://github.com/frameable/aviary.sh)

    - crypto (https://armedia.com/blog/blockchain-program-written-bash/ https://github.com/grondilu/bitcoin-bash-tools)

    - systems programming (https://github.com/damphat/kv-bash)

    - language tooling

    Some of those make more sense than others. However we all talk about a mythical general case. For every language there are niches that are covered by it more significantly. For Go it would probably be web backend. It doesn't mean it is only suited to this one niche, it is used in everything. In general it is used there more. I don't believe that Rust sees the most use in the same niche to the same order that Go sees it.

    Is Rust or Zig an alternative to php, awk or Lisp? In practice I don't really think so.

    I guess it all depends on one's definition of "alternative". I don't think that a statistical Go programmer would see Zig as a real alternative. Statistical C programmer might see it as a Go alternative, but that probably would not be a question he would ask.

  • aviary.sh

    Minimal distributed configuration management in bash

    In a way I feel that everything is an alternative to everything and at the same time nothing is.

    As you said it all depends on the circumstances. But I don't really see Zig competing with Go. They both can do mostly the same things, but they both approach them from quite a different sides.

    For example bash is being used in:

    - gaming (https://github.com/JosefZIla/bash2048)

    - web apps (https://github.com/avleen/bashttpd)

    - networking

    - CLIs

    - distributed systems (https://github.com/frameable/aviary.sh)

    - crypto (https://armedia.com/blog/blockchain-program-written-bash/ https://github.com/grondilu/bitcoin-bash-tools)

    - systems programming (https://github.com/damphat/kv-bash)

    - language tooling

    Some of those make more sense than others. However we all talk about a mythical general case. For every language there are niches that are covered by it more significantly. For Go it would probably be web backend. It doesn't mean it is only suited to this one niche, it is used in everything. In general it is used there more. I don't believe that Rust sees the most use in the same niche to the same order that Go sees it.

    Is Rust or Zig an alternative to php, awk or Lisp? In practice I don't really think so.

    I guess it all depends on one's definition of "alternative". I don't think that a statistical Go programmer would see Zig as a real alternative. Statistical C programmer might see it as a Go alternative, but that probably would not be a question he would ask.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • bitcoin-bash-tools

    Set of bitcoin-related bash functions

    In a way I feel that everything is an alternative to everything and at the same time nothing is.

    As you said it all depends on the circumstances. But I don't really see Zig competing with Go. They both can do mostly the same things, but they both approach them from quite a different sides.

    For example bash is being used in:

    - gaming (https://github.com/JosefZIla/bash2048)

    - web apps (https://github.com/avleen/bashttpd)

    - networking

    - CLIs

    - distributed systems (https://github.com/frameable/aviary.sh)

    - crypto (https://armedia.com/blog/blockchain-program-written-bash/ https://github.com/grondilu/bitcoin-bash-tools)

    - systems programming (https://github.com/damphat/kv-bash)

    - language tooling

    Some of those make more sense than others. However we all talk about a mythical general case. For every language there are niches that are covered by it more significantly. For Go it would probably be web backend. It doesn't mean it is only suited to this one niche, it is used in everything. In general it is used there more. I don't believe that Rust sees the most use in the same niche to the same order that Go sees it.

    Is Rust or Zig an alternative to php, awk or Lisp? In practice I don't really think so.

    I guess it all depends on one's definition of "alternative". I don't think that a statistical Go programmer would see Zig as a real alternative. Statistical C programmer might see it as a Go alternative, but that probably would not be a question he would ask.

  • kv-bash

    key/value database written in bash script (permanent variables in shell)

    In a way I feel that everything is an alternative to everything and at the same time nothing is.

    As you said it all depends on the circumstances. But I don't really see Zig competing with Go. They both can do mostly the same things, but they both approach them from quite a different sides.

    For example bash is being used in:

    - gaming (https://github.com/JosefZIla/bash2048)

    - web apps (https://github.com/avleen/bashttpd)

    - networking

    - CLIs

    - distributed systems (https://github.com/frameable/aviary.sh)

    - crypto (https://armedia.com/blog/blockchain-program-written-bash/ https://github.com/grondilu/bitcoin-bash-tools)

    - systems programming (https://github.com/damphat/kv-bash)

    - language tooling

    Some of those make more sense than others. However we all talk about a mythical general case. For every language there are niches that are covered by it more significantly. For Go it would probably be web backend. It doesn't mean it is only suited to this one niche, it is used in everything. In general it is used there more. I don't believe that Rust sees the most use in the same niche to the same order that Go sees it.

    Is Rust or Zig an alternative to php, awk or Lisp? In practice I don't really think so.

    I guess it all depends on one's definition of "alternative". I don't think that a statistical Go programmer would see Zig as a real alternative. Statistical C programmer might see it as a Go alternative, but that probably would not be a question he would ask.

  • unzig

    Zig with Unused Variables

    It already exists. You’ll just have to compile it yourself which is relatively easy.

    https://github.com/markisus/unzig

  • v

    Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io

    Vlang, is a newer programming language that also has the classic C style for loops. https://github.com/vlang/v/blob/master/doc/docs.md#c-for

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts