Linux people doing Linux things, it seems.

  • Giooschi@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    ·
    2 months ago

    “safe by default” can be done by starting your files with @safe:

    Last time I heard about that it was much more limited than Rust, for example it even disallowed taking references to local variables. Has something changed since then?

    • ZILtoid1991@lemmy.world
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      2 months ago

      D has many memory safety features. For local variables, one should use pointers, otherwise ref does references that are guaranteed to be valid to their lifetime, and thus have said limitations.

      • Giooschi@lemmy.world
        link
        fedilink
        English
        arrow-up
        5
        ·
        2 months ago

        For local variables, one should use pointers, otherwise ref does references that are guaranteed to be valid to their lifetime, and thus have said limitations.

        Should I take this to mean that pointers instead are not guaranteed to be valid, and thus are not memory safe?

        • ZILtoid1991@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          2 months ago

          Pointers are not guaranteed to be safe. DIP1000 was supposed to solve the issue of a pointer referencing to a now expired variable (see example below), but it’s being replaced by something else instead.

          int* p;
          {
            int q = 42;
            p = &q;
          }
          writeln(*p);     //ERROR: This will cause memory leakage, due to q no longer existing
          
          • Giooschi@lemmy.world
            link
            fedilink
            English
            arrow-up
            3
            ·
            2 months ago

            Pointers are not guaranteed to be safe

            So I guess they are forbidden in @safe mode?

            but it’s being replaced by something else instead

            Do you know what is the replacement? I tried looking up DIP1000 but it only says “superceded” without mentioning by what.

            This makes me wonder how ready D is for someone that wants to extensively use @safe though.