Dart 包管理器的版本解决算法被 Swift 语言采用

dart

#1

近年诞生的现代编程语言,大都自带包管理器,使开发者可以方便的管理依赖。Dart 自带包管理器 pub,Nodejs有 npm,Swift 也有包管理器 swift-package-manager 。包管理器的核心功能是管理依赖的版本,但这不并容易实现,比较典型的例子:Nodejs包管理器npm的早期版本,因为不太合理的设计,导致依赖文件夹(node_modules)高速膨胀,被戏称为"黑洞",如下图:


Dart 的包管理器 pub,采用的是PubGrub版本解决算法,它被作者称为下一代版本解决算法,并写有专门的文章详细阐述原理。而就在最近,苹果的Swift语言也宣布将采用PubGrub来改进包管理器:https://github.com/apple/swift-package-manager/pull/1918

以下链接是Natalie Weizenbaum的PubGrub算法文章: