Zig: The Modern Alternative to C

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

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • 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.

    InfluxDB logo
  • 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.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • 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

  • Buzz: A lightweight statically typed scripting language

    6 projects | news.ycombinator.com | 26 Dec 2023
  • Some Thoughts on Zig

    9 projects | news.ycombinator.com | 21 Jul 2022
  • Why the use of semicolons?

    4 projects | /r/Zig | 8 Jul 2022
  • Terra Programming Language Releases Version 1.0.0

    5 projects | /r/programming | 8 Jun 2022
  • Is there a way to build Zig libraries to be used by Zig instead of as C libraries?

    5 projects | /r/Zig | 30 May 2022