‹ BackHN Continuity

Thread

What Zig felt like, coming from Rust

282 points · 351 comments · ksec

  1. weinzierl · · focus · HN ↗
    Two additional points:

    1. Tooling (as an extension to the mentioned IDE support point). Zig and Rust are both praised for their tooling and I think rightfully so. The C/C++ interop story and the cross-compiling story in Zig are great. From the standpoint of a working practitioner though I think Rust is way ahead. Not surprising given that Zig is much younger, but something to keep in mind.

    2. Compile Time Stuff: Here Zig is praised and Rust not so much. I think this is undeserved. Rust has much higher aspirations for their compile time features, namely that outcome must be identical regardless when the code runs. This is a very useful property but makes the task much harder and fundamentally incomparable with Zig comptime.

    1. chaz72 · · focus · HN ↗
      Are you saying that you think that Zig does not produce identical outcomes for comptime code regardless of when the code runs? What do you mean?
      1. bruckie · · focus · HN ↗
        I assumed that it meant that if you ran code at compile time or at runtime, the results should be exactly the same given the same inputs.
        1. chaz72 · · focus · HN ↗
          And they believe Zig comptime wouldn’t do that? For the same inputs? I’d love an example.
          1. vlovich123 · · focus · HN ↗
            Traditional stuff in this space are:

            * floating point differences between the build machine and the target. By far the most common

            * endiannes - code assumes little median runs on big endian

            There’s other more subtle issues that can crop up but those are the big two.

            Not saying I agree though - those can happen anyway when you run on two different machines anyway.

            1. smj-edison · · focus · HN ↗
              Doesn't comptime run under the target's float and endianness semantics? I need to check, but I believe they emulate the target when evaluating.
              1. vlovich123 · · focus · HN ↗
                Endianness yes, but float no. They just force software ieee754. It gives you exact bit accuracy on all build machines but it results in math that would differ between build time and run time depending if the function is evaluated as const or not
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.