Linux people doing Linux things, it seems.

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

    That’s why I often recommend D instead.

    Has a much more C-style syntax, except much more refined from the years of hindsight. The catch? No corporate backing, didn’t jump on the “immutable by default” trend when functional programming evangelists said for loops are a bad practice and instead we should just write recursive functions as a workaround, memory safety is opt-in (although “safe by default” can be done by starting your files with @safe:), some of the lead devs are “naive centrists” who want to “give everyone a chance at coding even if they’re bad people (nazis)”, implementing new changes to the lang has slowed down significantly up until the departure of Adam D Ruppe and the drama surrounding it, etc.

    • Giooschi@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      3 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
        ·
        3 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
          ·
          3 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
            ·
            3 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
              ·
              3 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.