• CanadaPlus@lemmy.sdf.org
    link
    fedilink
    arrow-up
    3
    ·
    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
      1
      ·
      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
        2
        ·
        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
      1
      ·
      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.

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

        About how an Excel spreadsheet with no formulas stacks up against a corporate accounting suite. Valgrind is how you find the bleeding once you inevitably introduce a memory bug. I don’t understand all the fsanitize options, but I’m guessing they aren’t a blanket solution, exactly because memory bugs have still been inevitable.

        This thread is making me wonder how many people actually understand what Rust does. It rigorously prevents any form of memory error at all in normal code, and unsafe blocks, where needed, tend to be tiny. It makes C segmentation faults look just as goofy as JavaScript type errors.