paperbot · PL 论文追踪

全部论文 待读 收藏

P1 On-the-Fly Static Analysis via Dynamic Bidirected Dyck Reachability

基于动态双向 Dyck 可达性的即时静态分析
POPL 8(POPL)2024匹配度 6/10 · 该论文属于静态分析算法(双向 Dyck 可达性、指针/别名分析)的核心 PL 工作,兼具理论最优界与工程实现和大规模加速的实证评估,契合用户对'理论形式化+工程实现''工业落地''问题驱动'的偏好,也是 PL→AI(在分析/Agent 程序中应用静态分析)方向上可复用的基础设施。但它本身不涉及 LLM/Agent,也不涉及浮点程序分析或贝叶斯程序分析,因此未命中用户研究画像的真正交叉核心。引用 7 inbox
Shankaranarayanan Krishna, Aniket Lal, Andreas Pavlogiannis, Omkar Tuppe
crossref: 2026-09-10

AI 速览

一句话:提出每次更新 O(n·α(n)) 的动态双向 Dyck 可达性算法,用于即时静态分析并实现千倍加速。

静态分析常可归约为 Dyck 可达性,双向图则用于建模可变堆数据上的数据流,并是需求驱动指针/别名分析的常见形式。已有离线最优算法耗时为 O(m+n·α(n)),最坏 O(n^2),难以应对源代码持续增删带来的在线更新。本文提出面向双向 Dyck 可达性的动态算法,每次更新的最坏时间复杂度为 O(n·α(n)),优于 O(n^2),并在某些设置下达到最优。作者实现了该算法,在即时数据依赖与别名分析上,与最优离线算法和全动态 Datalog 求解器比较,性能始终最佳,取得约 1000 倍加速,单次更新耗时几乎不可察觉。

问题
如何在代码持续增删的动态图中,高效维护双向 Dyck 可达性,以支持按需/即时静态分析?
方法
提出一种针对双向 Dyck 可达性的动态算法,单次更新最坏 O(n·α(n)),优于离线算法在动态场景下的 O(n^2) 处理开销。
评估
实现该算法并在即时数据依赖与别名分析上评估,与最优离线算法及全动态 Datalog 求解器对比,取得最高约 1000 倍加速,单次更新耗时几乎不可感知。
原文摘要(Abstract)

Dyck reachability is a principled, graph-based formulation of a plethora of static analyses. Bidirected graphs are used for capturing dataflow through mutable heap data, and are usual formalisms of demand-driven points-to and alias analyses. The best (offline) algorithm runs in O ( m + n · α ( n ) ) time, where n is the number of nodes and m is the number of edges in the flow graph, which becomes O ( n 2 ) in the worst case. In the everyday practice of program analysis, the analyzed code is subject to continuous change, with source code being added and removed. On-the-fly static analysis under such continuous updates gives rise to dynamic Dyck reachability , where reachability queries run on a dynamically changing graph, following program updates. Naturally, executing the offline algorithm in this online setting is inadequate, as the time required to process a single update is prohibitively large. In this work we develop a novel dynamic algorithm for bidirected Dyck reachability that has O ( n · α ( n ) ) worst-case performance per update, thus beating the O ( n 2 ) bound, and is also optimal in certain settings. We also implement our algorithm and evaluate its performance on on-the-fly data-dependence and alias analyses, and compare it with two best known alternatives, namely (i) the optimal offline algorithm, and (ii) a fully dynamic Datalog solver. Our experiments show that our dynamic algorithm is consistently, and by far, the top performing algorithm, exhibiting speedups in the order of 1000X. The running time of each update is almost always unnoticeable to the human eye, making it ideal for the on-the-fly analysis setting.

链接与引用

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

BibTeX
@article{paperbot2652,
  title = {On-the-Fly Static Analysis via Dynamic Bidirected Dyck Reachability},
  author = {Shankaranarayanan Krishna and Aniket Lal and Andreas Pavlogiannis and Omkar Tuppe},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {POPL},
  year = {2024},
  doi = {10.1145/3632884}
}