22

cross-posted from: https://sh.itjust.works/post/64685863

Lots of programming languages have their own package manager, separate from the distribution or OS package manager.

Going loosely from the TIOBE index:

  • Python has Pip
  • C# has NuGet
  • Javascript has npm for Node.js
  • Visual Basic also uses NuGet
  • R has a repository of packages that can be installed by running install.packages("something") in R
  • Rust has Cargo/Crates
  • Go has the go get command
  • Swift has its own package manager swift package
  • Ruby has RubyGems
  • Java has Maven and Gradle (not sure if they are full package managers, or build automation tools with dependency resolution)
  • PHP has Composer for managing libraries and dependencies
  • C and C++ are the only exceptions I can think of, off the top of my head; libraries are managed by, and coupled to, the operating system
top 12 comments
sorted by: hot top controversial new old
[-] hallettj@leminal.space 1 points 13 minutes ago

I agree that this doesn't seem necessary. Personally I think Nix would be a good candidate for dependency management that works consistently between languages. I think that may be partway set up for Haskell, and I've noticed that nixpkgs has a good collection of Python dependencies. But for most cases the Nix flow currently usually involves using the language's bespoke dependency manifest to generate a Nix expression that downloads dependencies from the language's bespoke package repo.

One advantage of Nix is that you don't need all packages in one repo. Nixpkgs is mostly geared for the NixOS Linux distro. Each language ecosystem could have its own repo if that makes the most sense, with Nix being the common connective language.

[-] arran4@aussie.zone 1 points 20 minutes ago

The OS package manager is basically the C/C++ package manager. :P They all have OS level aspirations. Don't let them.

[-] staircase@programming.dev 11 points 2 hours ago* (last edited 2 hours ago)

If you've ever tried using bazel, you might understand why writing a single package manager for multiple languages is a bad idea (at least, that's why I assume bazel is so god-awful)

[-] scottmeme@sh.itjust.works 1 points 20 minutes ago

You just gave me PTSD, fuck bazel

[-] Feyd@programming.dev 8 points 2 hours ago* (last edited 2 hours ago)

CPAN for perl was the first one and it was very successful so got copied.

separate from the distribution or OS package manager.

Because it is way easier to manage them this way rather than have every distro package repo also support them. Additionally, windows and Mac are also targets and they don't have built in package managers.

C and C++ are the only exceptions

It is not as popular but https://conan.io/ exists. Personally, I miss working in c++ because the lack of a built in package manager made people manage dependencies more thoughtfully. It was not without tradeoffs but I preferred that world to adding a dependency being one command away.

[-] terabyterex@lemmy.world 10 points 2 hours ago* (last edited 2 hours ago)

i dont understand why you are confused. are you suggesting they should be in the OS? so each library has to be managed at least 6 times and then the ides and language tools have to support all these different stores? i bet ci/cd would just be awesome

or are you suggesting that all language maintainers work together in harmony and support one another?

C and C++ dont have package managers because they are older than the concept.

[-] thingsiplay@lemmy.ml 9 points 2 hours ago

Because you don't want a single operating system manage the entirety of the Rust eco system. They need to be its own thing, so it can be used and managed by an individual team independent from any operating system.

[-] spj@sh.itjust.works 1 points 55 minutes ago

Reminder that TIOBE is ass and shouldn't be used for basically anything except for who to target advertising to.

[-] crystalwalrus@programming.dev 1 points 1 hour ago

lowers barriers to adoption of the language and its ecosystem

[-] CameronDev@programming.dev 1 points 1 hour ago

Do any serious portable project with C and you'll see why. You'll either need to vendor in all the code you want to link against, or you'll constantly have compilation issues when the OS provided library differs (or doesn't exist at all) from the one you have on your dev box.

[-] rumschlumpel@feddit.org 2 points 2 hours ago* (last edited 2 hours ago)

A language's packages need to be in lockstep with the language's version, and they usually depend on each other, too (to a much higher degree than they depend on programs/libraries from other languages, not counting stuff like C that many higher-level languages are built on).

[-] Reptorian@programming.dev 1 points 1 hour ago

Well, as a user of DSL (G'MIC), I'm happy without packages.

this post was submitted on 06 Aug 2026
22 points (100.0% liked)

Programming

27973 readers
266 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 3 years ago
MODERATORS