• m4m4m4m4@lemmy.world
    link
    fedilink
    arrow-up
    23
    ·
    3 months ago

    If you make your own he’s looking forward to seeing it.

    Not a programmer whatsoever but I’ve heard about Zig and people comparing it to Rust, what’s the deal with it?

    • khorovodoved@lemm.ee
      link
      fedilink
      arrow-up
      33
      ·
      edit-2
      3 months ago

      Zig is indeed designed specifically for such tasks as system programming and interoperability with C code. However it is not yet ready for production usage as necessary infrastructure is not yet done and each new version introduces breaking changes. Developers recomend waiting version 1.0 before using it in any serious project.

    • PushButton@lemmy.world
      link
      fedilink
      arrow-up
      27
      ·
      3 months ago

      Zig is “c”, but modern and safe.

      The big selling points compared to Rust are:

      • A better syntax
      • No hidden control flow
      • No hidden memory allocation
      • Really great interop with C (it’s almost as if you just include the C code as you would in a C code base…)
      • Fast compile time
      • it’s more readable
      • it’s simpler to learn

      The syntax is really close to the C language; any C programmer can pick up Zig really fast.

      IMO Zig is a far better choice to go in the kernel than Rust.

      Linux has tried to include CPP in it, and it failed.

      So imagine if trying to fit in a C-like cousin failed, how far they are to fit an alien language like Rust…

      For more information: https://ziglang.org/learn/why_zig_rust_d_cpp/

      • Giooschi@lemmy.world
        link
        fedilink
        English
        arrow-up
        23
        ·
        3 months ago

        Zig is “c”, but modern and safe.

        Zig is safer than C, but not on a level that is comparable to Rust, so it lacks its biggest selling point. Unfortunately just being a more modern language is not enough to sell it.

        So imagine if trying to fit in a C-like cousin failed

        C++ was not added to Linux because Linus Torvalds thought it was an horrible language, not because it was not possible to integrate in the kernel.

        • khorovodoved@lemm.ee
          link
          fedilink
          arrow-up
          8
          ·
          edit-2
          3 months ago

          Zig has other selling points, that are arguably more suitable for system programming. Rust’s obsession with safety (which is still not absolute even in rust) is not the only thing to consider.

            • steeznson@lemmy.world
              link
              fedilink
              arrow-up
              4
              ·
              3 months ago

              UB is only one class of error though. I get nervous when people talk about re-writing battle hardened code which has been used - and reviewed by the community - for decades because there are going to be many subtleties and edge cases which are not immediately apparent for any developer attempting a re-implementation.

              • teolan@lemmy.world
                link
                fedilink
                arrow-up
                2
                ·
                3 months ago

                Like sudo that has had zero days lurking for 10 years?

                I’m not advocating for reimplementing stuff for no good reason though.

              • Auli@lemmy.ca
                link
                fedilink
                English
                arrow-up
                1
                ·
                3 months ago

                You mean old code that has bugs that are no just being discovered. Battle hardened code and many eyeballs means nothing.

      • teolan@lemmy.world
        link
        fedilink
        arrow-up
        13
        ·
        3 months ago

        Zig is a very new and immature language. It won’t be kernel-ready for at l’East another 10 years.

        a better syntax

        That’s pretty suggestive. Rust syntax is pretty good. Postfix try is just better for example.

        Zig also uses special syntax for things like error and nullability instead of having them just be enums, making the language more complex and less flexible for no benefit.

        Syntax is also not everything. Rust has extremely good error messages. Going through Zig’s learning documentation, half the error messages are unreadable because I have to scroll to see the actual error and data because it’s on the same line as the absolute path as the file were the error comes from

        No hidden memory allocation

        That’s a library design question, not a language question. Rust for Linux uses its own data collections that don’t perform hidden memory allocations instead of the ones from the standard library.

        it’s more readable

        I don’t know, Rust is one of the most readablelangueage for me.

        Fast compile time

        Is it still the case once you have a very large project and make use of comptime?

        it’s simpler to learn

        Not true. Because it doesn’t have the guardrails that rust has, you must build a mental model of where the guardrails should be so you don’t make mistakes. Arguably this is something that C maintainers already know how to do, but it’s also not something they do flawlessly from just looking at the bugs that regularly need to be fixed.

        Being able to write code faster does not equate being able to write correct code faster.

        Really great interop with C

        Yes, because it’s basically C with some syntax sugar. Rust is a Generational change.

      • Fonzie!@ttrpg.network
        link
        fedilink
        arrow-up
        4
        ·
        3 months ago

        Linux has tried to include CPP in it, and it failed.

        So imagine if trying to fit in a C-like cousin failed, how far they are to fit an alien language like Rust…

        But that wasn’t about the syntax, but about the fastnesses, size and control, want it? Things that shouldn’t be much of an issue to Rust.

    • theshatterstone54@feddit.uk
      link
      fedilink
      arrow-up
      17
      ·
      3 months ago

      Zig is feasible for systems programming and some, (most notably, the Primeagen in one video) claim it should have gone into the kernel instead of Rust, but I don’t know Zig so I don’t feel qualified to comment beyond that.