PoTo: A Hybrid Andersen's Points-to Analysis for Python
<|reference_start|>PoTo: A Hybrid Andersen's Points-to Analysis for Python: As Python is increasingly being adopted for large and complex programs, the importance of static analysis for Python (such as type inference) grows. Unfortunately, static analysis for Python remains a challenging task due to its dynamic language features and its abundant external libraries. To help fill this gap, this paper presents PoTo, an Andersen-style context-insensitive and flow-insensitive points-to analysis for Python. PoTo addresses Python-specific challenges and works for large programs via a novel hybrid evaluation, integrating traditional static points-to analysis with concrete evaluation in the Python interpreter for external library calls. Next, this paper presents PoTo+, a static type inference for Python built on the points-to analysis. We evaluate PoTo+ and compare it to two state-of-the-art Python type inference techniques: (1) the static rule-based Pytype and (2) the deep-learning based DLInfer. Our results show that PoTo+ outperforms both Pytype and DLInfer on existing Python packages.<|reference_end|>
@article{rak-amnouykit2024poto:,
    title={PoTo: A Hybrid Andersen's Points-to Analysis for Python},
    author={Ingkarat Rak-amnouykit, Ana Milanova, Guillaume Baudart, Martin
  Hirzel, Julian Dolby},
    journal={arXiv preprint arXiv:2409.03918},
    year={2024},
    archivePrefix={arXiv},
    eprint={2409.03918},
    primaryClass={cs.PL cs.SE}
}