4 ms·
It's comical to me how poor packaging solutions are across distributions and languages. It's all just namespace management at slightly different levels. Can an
by nixpulvis 5y ago
It's comical to me how poor packaging solutions are across distributions and languages. It's all just namespace management at slightly different levels.
Can anyone give me one good reason a programming language should bother with dependency management?
Nix has the right idea, but the execution is spotty and poorly documented IMO. Not to mention they have a serious problem with package naming, which strikes me as a glaring issue.
- nixpulvis 5y agoI'll start. A programming language with the ability to dispatch on version could be very interesting, and possibly allow for safer upgrades on a per function basis. Still it feels like this should be part of an interface between a PL and some other set of packaging options. A convention for where to place libraries (with versions) like /lib is basically the solution. But I guess the various communities don't really want to get into a turf war, so maybe it's /lib/ruby and /lib/python in addition to the rest?
- CamTin 5y agoPerl almost does this. Various CPAN packages have different "use" lines where they can declare themselves to be written in a particular version. These can all live together on an interpreter recent enough to know all the dialects. This is at the module level, rather than the function level though.
- nixpulvis 5y agoI'm imagining something like `foo@v2.3.1(x)`. Of course, `foo(x)` would still work, but it would probably just choose the top version, like how things generally work today. Integrate with signed VCS and call it a day.
- lacker 5y agoCan anyone give me one good reason a programming language should bother with dependency management? When a programming language tries to ignore dependency management, like Go and Python did for too long, an ecosystem will soon spring up of a bunch of informal third-party tools for managing dependencies, all of which are only partially compatible with each other. It works better when the designers of a programming language include dependency management in the design and promote one official way to do it, like C# or Rust. (I say this even though in general I prefer Go and Python to C# and Rust - you have to respect what the different tools do better.)
- nixpulvis 5y ago> an ecosystem will soon spring up of a bunch of informal third-party tools for managing dependencies, all of which are only partially compatible with each other. Start standardizing language agnostic interface, thus fixing the compatibility issue and I only see this as a good thing.
- rkeene2 5y agoAppFS [0] solves this by getting rid of the install step, which prevents many problems. [0] https://AppFS.net/ https://AppFS.net/ Disclaimers: I work for AWS, but not on the AWS CLI; AppFS is my own personal project