• ZILtoid1991@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

    Issue is, Rust is not a drop-in replacement for C. The memory safety features are just one part, and since Rust is also a “weakly” functional language, thus its prefered to write such code with it.

    • lad@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      4 months ago

      Anything that is drop-in replacement for C (or C++ for that matter) is going to be awful because of the same compatibility burden, imo

    • CanadaPlus@lemmy.sdf.org
      link
      fedilink
      arrow-up
      0
      ·
      4 months ago

      Yeah, it’s not a small change. If there was a simpler way to make C memory-safe, it would have been done decades ago. It’s just a different language too, which is fair given how much younger it is.

      • ZILtoid1991@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        4 months ago

        D kind of did that (C pointers are still an option, alongside with the preferred dynamic arrays, which has the memory safety features), and once I’ve seen a C compiler fork that retroactively added D-style memory safety features, although they also very much insisted on the “const by default” mantra.

        • CanadaPlus@lemmy.sdf.org
          link
          fedilink
          arrow-up
          0
          ·
          4 months ago

          I think this is one of those things where there’s no “kind of”. Pointers were added for a reason, you’re probably not going to implement a database very well without them. If you use them, at some scale you’re inevitably going to have memory bugs. Technically, if you were to only use hardcoded printfs, C is memory safe too.

      • ssm@lemmy.sdf.org
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        4 months ago

        If there was a simpler way to make C memory-safe, it would have been done decades ago.

        We’ve had compile time sanitizers (-fsanitize=blah in gcc/clang) and runtime sanitizers (valgrind) for ages. I don’t know how they stack up against rust’s compile time sanitizers, but it’s something.