I have been reading about this new language for a while. It’s a C competitor, very slim language with very interesting choices, like supporting cross platform compilation out of the box, supports compiling C/C++ code (and can be used as a drop in replacement for C) to the point in can be used as replacement of ©make and executables are very small.

But, like all languages, adoption is what makes the difference. And we don’t know how it goes.

Is anyone actually using Zig right now? Any thoughts?

  • ck_@discuss.tchncs.de
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    It promises more correct code. As an example, most rust code and in fact most crates you will find will treat a memory allocation failure as an irrecoverable error, ie. your program will just crash.

    In Zig, such error classes are not supposed to exist by definition, making the resulting programs more robust.

      • ck_@discuss.tchncs.de
        link
        fedilink
        arrow-up
        6
        ·
        1 year ago

        It does not “solve” memory allocation failures, as its not a thing that can be solved. It exposes memory allocation in a way that forces you as a programmer to handle the possible error situation. You cannot just call malloc or new or what have you and the just move on as if nothing happens.

        • CameronDev@programming.dev
          link
          fedilink
          arrow-up
          3
          ·
          1 year ago

          Oh right, okay. I thought you meant that allocations just couldn’t fail.

          Instead you are just forced to handle it properly if it does fail. Would be very interested to test that in practice. C memory allocations are notoriously tolerant, and will happily let you allocate terabytes of memory that doesn’t really exist until you try write to it.

          I’ll definitely have to give that a play at some point.

          • ck_@discuss.tchncs.de
            link
            fedilink
            arrow-up
            5
            ·
            1 year ago

            Ah, that is another thing that Zig does well (in my opinion). Instead of having a global allocation call, Zig uses an allocator interface interface, meaning you as the programmer can plug in different allocation strategies as you require. So depending on if you do or don’t like that behavior, just pick the allocator accordingly, either for your whole program or just for parts of it.