frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Package Managers à la Carte: a formal model of dependency resolution

https://arxiv.org/abs/2602.18602
22•avsm•3d ago

Comments

Onavo•1h ago
I will make it simpler to understand. There is only one thing that make or breaks package resolution: do you support diamond dependencies and when.

A diamond dependency is when you have package A depending on package B and C. B depends on package D@v1 while C depends on D@v2. V1 and V2 are incompatible versions of D. This is a classic dependency conflict problem and whether you can resolve it automatically and bundle both packages into the final codebase/binary is the most important architectural decision of the package manager.

Package managers/ecosystems that support diamond dependencies in most circumstances:

Npm (as long as it's not a peer dep), Golang, Rust, Java/.NET (with shading enabled, it's not turned on by default).

With diamond dependency support, in most circumstances you can have arbitrary depth /complexity of dependency resolution.

If you don't support diamond dependencies (basically the rest of the world, Python, Ruby, Dart, Elixir, most lisps in their default setup, statically linked C/C++ in default configurations, maybe Zig too, I am not sure about that one), your dependency tree size is severely limited and it becomes a pseudo SAT problem in some cases if you want optimal dependency resolution.

This is the core algorithmic and architectural limit on package managers. Almost everything else is just implementation and engineering details. Stuff like centralized vs non centralized repos, package caching proxies, security hashes, chains of trust, vendoring, SLSA/SBOM etc. can all be bolted on as an after thought but supporting conflicting upstream dependencies simultaneously requires compliance on the bundler/transpiler/compiler level.

It's also why some languages lend themselves better to tools like Bazel that micromanages every single dependency you have while others do not.

jaen•14m ago
The paper does make this distinction under the "Concurrent Versions" property.

Allowing concurrent versions though opens you up to either really insidious runtime bugs or impossible-to-solve static type errors.

This happens eg. when you receive a package.SomeType@v1, and then try to call some other package with it that expects a package.SomeType@v2. At that point you get undefined runtime behavior (JavaScript), or a static type error that can only be solved by allowing you to import two versions of the same package at the same time (and this gets real complicated real fast).

Also, global state (if there is any) will be duplicated for the same package, which generally also leads to very hard-to-discover bugs and undefined behavior.

Onavo•56s ago
Good points. Practically speaking though global state is rarely an issue unless it's the underlying framework (hence peer deps).

Modern languages are mostly lexically scoped and global variables have fallen out of favor outside of embedded unless it's a one off script.

krbaccord•32m ago
Geo-tagging even deviations on Street Maps.

à la Carte, the formal way is contingent on whether intermediate representation of dependencies, are "enable[d] as translation between distinct package managers."

We Will Not Be Divided

https://notdivided.org
1455•BloondAndDoom•7h ago•500 comments

How do I cancel my ChatGPT subscription?

https://help.openai.com/en/articles/7232927-how-do-i-cancel-my-chatgpt-subscription
605•tobr•2h ago•154 comments

Croatia declared free of landmines after 31 years

https://glashrvatske.hrt.hr/en/domestic/croatia-declared-free-of-landmines-after-31-years-12593533
214•toomuchtodo•5h ago•28 comments

Rust Is Just a Tool

https://lewiscampbell.tech/blog/260204.html
58•JuniperMesos•2h ago•34 comments

Don't use passkeys for encrypting user data

https://blog.timcappalli.me/p/passkeys-prf-warning/
133•zdw•5h ago•69 comments

Cash issuing terminals

https://computer.rip/2026-02-27-ibm-atm.html
54•zdw•3h ago•1 comments

OpenAI agrees with Dept. of War to deploy models in their classified network

https://twitter.com/sama/status/2027578652477821175
552•eoskx•5h ago•282 comments

Show HN: I ported Manim to TypeScript (run 3b1B math animations in the browser)

https://github.com/maloyan/manim-web
93•maloyan•2d ago•13 comments

A new California law says all operating systems need to have age verification

https://www.pcgamer.com/software/operating-systems/a-new-california-law-says-all-operating-system...
562•WalterSobchak•17h ago•521 comments

OpenAI raises $110B on $730B pre-money valuation

https://techcrunch.com/2026/02/27/openai-raises-110b-in-one-of-the-largest-private-funding-rounds...
475•zlatkov•17h ago•522 comments

Smallest transformer that can add two 10-digit numbers

https://github.com/anadim/AdderBoard
145•ks2048•1d ago•63 comments

Statement on the comments from Secretary of War Pete Hegseth

https://www.anthropic.com/news/statement-comments-secretary-war
879•surprisetalk•7h ago•297 comments

U.S. and Israel Conduct Strikes on Iran

https://www.nytimes.com/live/2026/02/28/world/iran-strikes-trump
184•gammarator•1h ago•136 comments

Inferring Car Movement Patterns from Passive TPMS Measurements

https://dspace.networks.imdea.org/handle/20.500.12761/2011
6•wisdomseaker•53m ago•1 comments

Bootc and OSTree: Modernizing Linux System Deployment

https://a-cup-of.coffee/blog/ostree-bootc/
31•mrtedbear•5h ago•2 comments

Qt45: A small polymerase ribozyme that can synthesize itself

https://www.science.org/doi/10.1126/science.adt2760
79•ppnpm•8h ago•14 comments

The Eternal Promise: A History of Attempts to Eliminate Programmers

https://www.ivanturkovic.com/2026/01/22/history-software-simplification-cobol-ai-hype/
9•dinvlad•3d ago•1 comments

A better streams API is possible for JavaScript

https://blog.cloudflare.com/a-better-web-streams-api/
404•nnx•18h ago•139 comments

A Chinese official’s use of ChatGPT revealed an intimidation operation

https://www.cnn.com/2026/02/25/politics/chatgpt-china-intimidation-operation
199•cwwc•16h ago•122 comments

Package Managers à la Carte: a formal model of dependency resolution

https://arxiv.org/abs/2602.18602
22•avsm•3d ago•4 comments

NASA announces overhaul of Artemis program amid safety concerns, delays

https://www.cbsnews.com/news/nasa-artemis-moon-program-overhaul/
250•voxadam•16h ago•271 comments

5,300-year-old 'bow drill' rewrites story of ancient Egyptian tools

https://phys.org/news/2026-02-year-drill-rewrites-story-ancient.html
9•PaulHoule•2d ago•0 comments

Eschewing Zshell for Emacs Shell (2014)

https://www.howardism.org/Technical/Emacs/eshell-fun.html
28•pvdebbe•3d ago•12 comments

Time-Travel Debugging: Replaying Production Bugs Locally

https://lackofimagination.org/2026/02/time-travel-debugging-replaying-production-bugs-locally/
16•tie-in•2d ago•2 comments

Open source calculator firmware DB48X forbids CA/CO use due to age verification

https://github.com/c3d/db48x/commit/7819972b641ac808d46c54d3f5d1df70d706d286
172•iamnothere•17h ago•88 comments

Show HN: Claude-File-Recovery, recover files from your ~/.claude sessions

https://github.com/hjtenklooster/claude-file-recovery
79•rikk3rt•16h ago•30 comments

Show HN: Unfucked - version all changes (by any tool) - local-first/source avail

https://www.unfudged.io/
95•cyrusradfar•1d ago•51 comments

Inventing the Lisa user interface – Interactions

https://dl.acm.org/doi/10.1145/242388.242405
34•rbanffy•2d ago•2 comments

Let's discuss sandbox isolation

https://www.shayon.dev/post/2026/52/lets-discuss-sandbox-isolation/
139•shayonj•13h ago•44 comments

Can you reverse engineer our neural network?

https://blog.janestreet.com/can-you-reverse-engineer-our-neural-network/
286•jsomers•3d ago•185 comments