Comment by petabyt

1 year ago

Fast compile times in Zig? Last time I tried it was super slow. Has anything changed in recent years?

Its honestly pretty dang good now. I can bootstrap Zig from C in about 3-5 minutes, and then use the self-hosted stage3 compiler to compile Zig very quickly (under 1 minute iirc) Once the cache kicks in, its even faster. I guess my overall gauge on this is the impression I get. Zig build times never annoy me and I never think about it... especially compared to clang, gcc and Rust.

Compared to Rust its blazingly fast. Compared to Go compilation its slower.

  • Non it’s not. I known its not a benchmark but just try a zig init and build their hello world. It takes significantly longer

    • ```sh

      sweet@nadeko ~ $ mkcd test

      sweet@nadeko ~/test $ zig init

      info: created build.zig

      info: created build.zig.zon

      info: created src/main.zig

      info: created src/root.zig

      info: see `zig build --help` for a menu of options

      sweet@nadeko ~/test $ time zig build

      zig build 5.08s user 0.58s system 119% cpu 4.745 total

      # cached

      sweet@nadeko ~/test $ time zig build

      zig build 0.01s user 0.03s system 132% cpu 0.026 total

      # after rewriting the main function to call a function that takes a pointer to another function

      sweet@nadeko ~/test $ time zig build

      zig build 0.02s user 0.03s system 136% cpu 0.032 total

      ```

    • The first time you run the toolchain for a given target, it compiles stuff that is then stored in a global cache.

    • think this has something to do with zig building part of the std which other languages ship as binaries. incremental compilation will remove this small overhead.

Their x86 backend seems to be more complete, bypassing LLVM and allowing for fast debug builds.

  • Rust has a Cranelift-based backend that you can use for that.

    • It sadly helps a lot less than you would hope. A true dev backend can be many times faster than llvm to compile code. Crane lift is more like a 1.5x or 2x. Not to mention a lot of time is spent in the rust frontend.