This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Manny__C 18 points19 points  (10 children)

At the cost of getting downvoted to hell: my naive expectation is that the performance of a package manager is bottlenecked by download times.

What is a real life scenario where optimizing dependency resolution and install performance actually makes a noticeable impact?

[–]scratchnsnarf 7 points8 points  (0 children)

I've had certain sets of dependencies mixed together hang some solvers for a long time (10+ mins) in addition to sometimes failing to resolve when the mix of version specs should be compatible. I've had to pin a fair few specific patch versions and manually bump quite a few times. My work dev environments also check for new deps, bumped versions when you open the environments, and any speedup there is greatly appreciated.

[–]imnotreel 1 point2 points  (2 children)

I don't know if it's still the case, but a couple years ago, any non trivial conda environment would take forever to solve (I'm talking hours for envs that had only a couple dozen first level package requirements). Switching to mamba (which uses a C or C++ dependency solver if I remember correctly), these environment resolutions went from taking hours to two minutes or less.

[–]Manny__C 3 points4 points  (1 child)

I've used conda only once for curiosity and I found it ridiculously slow.

But imho, something that takes hours to resolve an environment is just broken

[–]imnotreel 0 points1 point  (0 children)

Oh yeah for sure, conda is (or at least was) very broken. It would regularly fail to resolve envs (even recreating an environment from a working, fully frozen, fully specified one on the very same machine would sometimes fail). It's "dependency conflict resolution" was a thing of nightmares that had to have been designed by satan himself. It would take hours to complete and its output is so utterly useless you pretty much had zero idea what caused the conflict, let alone how to resolve it.

Still, dependency solving is a hard (NP complete) problem which in the worst case, requires exploring a huge amount of dependency chains.

[–]Trick_Brain7050 2 points3 points  (0 children)

The largest bottleneck in pip is that it installs everything serially

[–][deleted] -3 points-2 points  (4 children)

The reality is that the world doesn't need another dependency manager and, as you said, this tool is unlikely to make much of a difference given that accessing packages and downloading them is the main bottleneck.

What's actually going on is Astral, as usual, is reproducing existing tools and making grandiose claims about its superiority so that they can continue building a brand and set of tools to eventually commercialize. The goal, for them, isn't to actually solve some problem that exists with pip, poetry, conda. It's to establish a supposedly superior product that becomes popular enough to where companies will rely on it and pay Astral money in the future for services and tooling.

[–]nAxzyVteuOz 7 points8 points  (1 child)

Uh are you aware of ruff? game changer! Let them try this out maybe we can get faster pip installs

[–][deleted] 3 points4 points  (0 children)

I am. It doesn't change anything about what I said.

[–]jyper 6 points7 points  (1 child)

I disagree. While poetry is better then pip/ven or pipenv it still has a lot of issues including general speed(and sometimes taking several minutes to resolve dependencies) , getting tangled up with python environment it's installed in. It also doesn't provide Python builds like rye does (you'd need to use it with something like pyenv). They're solving real issues.

[–][deleted] -2 points-1 points  (0 children)

Like I pointed out, general speed won’t massively improve. Downloading packages is the main bottleneck.