paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Package Managers à la Carte: A Formal Model of Dependency Resolution

Package Managers à la Carte:依赖解析的形式化模型
ICFP 10(ICFP)2026匹配度 3/10 · 论文聚焦包管理器依赖解析的形式语义,属于PL/形式化方法,但未涉及静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户核心研究方向交叉有限;其跨生态依赖形式化对供应链分析仅有间接参考价值。引用 1 inbox
Ryan T. Gibb, Patrick Ferris, David Allsopp, Thomas Gazagnaire, Anil Madhavapeddy
crossref: 2026-09-10

AI 速览

一句话:提出 Package Calculus,统一包管理器依赖解析的核心语义,为跨生态依赖表达提供形式化基础。

包管理器种类繁多,各编程语言与操作系统都有各自方案,其依赖解析语义存在细微差异。这种碎片化使多语言项目难以精确表达跨语言生态的依赖,系统外部依赖常被隐式且无版本地处理,也遮蔽了供应链分析所需的完整依赖图。为此,作者提出 Package Calculus——一种统一包管理器依赖解析核心语义的形式化模型。论文通过一系列形式化归约,展示该核心足以建模现实世界中多样化的依赖表达语言。该演算为未来跨生态工具提供理论基础,可作为依赖表达的通用语言(lingua franca)。

问题
包管理器碎片化且依赖解析语义各异,导致跨语言生态依赖难以精确表达、系统依赖隐式无版本、供应链分析所需完整依赖图被遮蔽。
方法
提出 Package Calculus,通过形式化归约统一包管理器依赖解析的核心语义,并证明其足以建模现实依赖表达语言的多样性。
评估
以一系列形式化归约展示该演算的表达力,属于理论评估,为跨生态工具奠定形式基础。
原文摘要(Abstract)

Package managers are legion. Every programming language and operating system has its own solution, each with subtly different semantics for dependency resolution. This fragmentation prevents multilingual projects from expressing precise dependencies across language ecosystems; it leaves external system dependencies implicit and unversioned; and it obscures the full dependency graph that supply-chain analysis depends on. We present the Package Calculus, a formalism for dependency resolution that unifies the core semantics of package managers. Through a series of formal reductions, we show how this core is expressive enough to model the diversity of real-world dependency expression languages. The calculus provides the theoretical foundation for future cross-ecosystem tooling, as a lingua franca of dependency expression.

链接与引用

DOI 原文 · arXiv · PDF(开放获取) · DBLP

BibTeX
@article{abs-2602-18602,
  title = {Package Managers à la Carte: A Formal Model of Dependency Resolution},
  author = {Ryan T. Gibb and Patrick Ferris and David Allsopp and Thomas Gazagnaire and Anil Madhavapeddy},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {ICFP},
  year = {2026},
  doi = {10.1145/3828699}
}