I’m talking about things like “python3-blabla” and “libsomething”. How bad would it be if nobody used these library-packages and everyone just added all kinds of libraries as part of an application’s package?

  • echo64@lemmy.world
    link
    fedilink
    arrow-up
    3
    arrow-down
    2
    ·
    1 year ago

    Yeah, this is what windows and osx do. Two games/apps don’t share the same dlls. The os can do some stuff to reduce memory footprint if they do, but it requires them to be the same version, effectively the same dll.

    Generally apps on windows and osx do not share libraries between apps, they ship the libraries they need and run them.

    • Tb0n3@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      7
      arrow-down
      1
      ·
      1 year ago

      Some do, but there absolutely system wide libraries installed from things like dotnet, and included in the system. Just like with Linux though some software was built against an old incompatible library and has to include it, or has its own proprietary ones.

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

        You’re presenting it like most libraries an application will use are system libraries, and a few exceptional cases they will bundle a dll. This is absolutely not the case, the vast majority of libraries are bundled.

    • Skull giver@popplesburger.hilciferous.nl
      link
      fedilink
      arrow-up
      3
      arrow-down
      1
      ·
      1 year ago

      The biggest difference between Windows/macOS and Linux is that you don’t need extra libraries for most programs. There’s the occasional C/C++ runtime (that does get shared whenever possible) and a few proprietary DLLs for things like games and Qt, but the OS itself already contains everything. That’s why Linux/BSD has a wide range of package managers to update system components, while Windows just updates itself as if it’s one big piece of software.

      You don’t need to manually specify a version of GnuTLS/BoringSSL/OpenSSL, because every target your application is deployed onto is guaranteed to have a TLS library. You don’t need to bother with picking a GUI library because the SDK provides you with all the GUI controls you need. Sometimes the existing libraries are too old (i.e. when Chrome wants to do modern TLS on old systems) or they’re products you paid (i.e. highly efficient video codecs, compression engines) so you ship them along.

      The packaged APIs aren’t always better (dealing with COM can be a real pain) but you probably don’t need anything that isn’t already installed on the most barebones version of the OS.