• Juice@midwest.social
    link
    fedilink
    arrow-up
    5
    ·
    3 months ago

    Is Rust as close to the metal as C? Seems like there would still be a need for C. I could see Rust replacing Java as something that’s so ceremonial and verbose, but from my limited perspective as a sometimes java dev, having only the most glancing experience with C, it seems like C would be hard to replace because of what it is. Buy I honestly don’t know much about Rust either, I just think JS is so finicky and unpredictable whereas web assembly seems extremely fast and stable.

    • themoken@startrek.website
      link
      fedilink
      arrow-up
      7
      ·
      edit-2
      3 months ago

      Rust can create native binaries but I wouldn’t call it close to the metal like C. It’s certainly possible to bootstrap from assembly to Rust but, unlike C, every operation doesn’t have a direct analog to an assembly operation. For example Rust needs to be able to dynamically allocate memory for all of its syntax to be intact.

      • Ephera@lemmy.ml
        link
        fedilink
        arrow-up
        7
        ·
        3 months ago

        For example Rust needs to be able to dynamically allocate memory for all of its syntax to be intact.

        Hmm, you got an example of what you mean?

        Rust can be used without allocations, as is for example commonly done with embedded.
        That does mean, you can’t use dynamically sized types, like String, Vec and PathBuf, but I wouldn’t consider those part of the syntax, they’re rather in the std lib…

        • themoken@startrek.website
          link
          fedilink
          arrow-up
          2
          ·
          3 months ago

          So you’re right that this is a bit arbitrary because the line between the standard lib and the language is blurry, but someone writing Rust is going to expect Vec to work, it doesn’t even require an extra “use” to get it.

          Perhaps a better core example would be operator overloading (or really any place using traits). When looking at “a + b” in Rust you have to be aware that, depending on the types involved, that could mean anything.

          Anyway, I love Rust, it just doesn’t have the 1:1 relationship with the assembly output that C basically still has.

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

      I mean, the simple proof is that Rust has been growing by leaps and bounds in the embedded world, which is the closest to bare metal you get. It’s also being used in the Linux kernel and Windows, and there are several projects building new kernels in pure Rust. So yeah, it’s safe to say that it’s as close to the metal as C.

      Also, the comparison to Java is understandable if you’ve only been exposed to Rust by the memes, but it doesn’t hold up in practice. Rust has a lot more syntax than C (although that’s not saying much), but it’s one of the most expressive languages on the market today.

    • frezik@midwest.social
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      3 months ago

      It’s slightly less close to the metal as C. Array bounds checks are always going to cost you something, for example. However, if you look at the speed of numeric computation in C, Rust, and Go, they’re all in the same order of magnitude performance compared to things like Python or JavaScript (not including things like PyPi, which is C with extra steps).

      • Juice@midwest.social
        link
        fedilink
        arrow-up
        2
        ·
        3 months ago

        Wow thanks so much for breaking that down for me! The discussions I’ve been having here and the information devs are sharing is really kicking me off the fence about learning Rust

        • frezik@midwest.social
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          3 months ago

          Eh, I’d still go for it. I find the Rust compiler tends to amplify my impostor syndrome–it tells you all the ways you are objectively being stupid. I know that’s not really selling it, but it’s doing that stuff for a reason. I’m especially hopeful that it becomes the standard way to do things with microcontrollers; that’s about the only place I write C/C++ at all.