There was a time where this debate was bigger. It seems the world has shifted towards architectures and tooling that does not allow dynamic linking or makes it harder. This compromise makes it easier for the maintainers of the tools / languages, but does take away choice from the user / developer. But maybe that’s not important? What are your thoughts?

  • 0x0@programming.dev
    link
    fedilink
    English
    arrow-up
    4
    ·
    1 year ago

    Disk space and RAM availability has increased a lot in the last decade, which has allowed the rise of the lazy programmer, who’ll code not caring (or, increasingly, not knowing) about these things. Bloat is king now.

    Dynamic linking allows you to save disk space and memory by ensuring all programs are using the only one version of a library laying around, so less testing. You’re delegating the version tracking to distro package maintainers.

    You can use the dl* family to better control what you use and if the dependency is FLOSS, the world’s your oyster.

    Static linking can make sense if you’re developing portable code for a wide variety of OSs and/or architectures, or if your dependencies are small and/or not that common or whatever.

    This, of course, is my take on the matter. YMMV.

    • unique_hemp
      link
      fedilink
      arrow-up
      5
      ·
      1 year ago

      Except with dynamic linking there is essentially an infinite amount of integration testing to do. Libraries change behaviour even when they shouldn’t and cause bugs all the time, so testing everything packaged together once is overall much less work.

      • 0x0@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        1 year ago

        Which is why libraries are versioned. The same version can be compiled differently across OSs, yes, but again, unless it’s an obscure closed library, in my experience dependencies tend to be stable. Then again all dependencies i deal with are open source so i can always recompile them if need be.

        More work? Maybe. Also more control and a more efficient app. Anyway i’m paid to work.

        • unique_hemp
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          More control? If you’re speaking from the app developer’s perspective, dynamic linking very much gives you less control of what is actually executed in the end.

          • o11c@programming.dev
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            The problem is that the application developer usually thinks they know everything about what they want from their dependencies, but they actually don’t.

    • uis@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Static linking can make sense if you’re developing portable code for a wide variety of OSs

      I doubt any other OS supports linux syscalls