Affiliation:
1. University of Stuttgart, Stuttgart, Germany
Abstract
Python has emerged as one of the most popular programming languages, extensively utilized in domains such
as machine learning, data analysis, and web applications. Python’s dynamic nature and extensive usage make
it an attractive candidate for dynamic program analysis. However, unlike for other popular languages, there
currently is no comprehensive benchmark suite of executable Python projects, which hinders the development
of dynamic analyses. This work addresses this gap by presenting DyPyBench, the first benchmark of Python
projects that is large-scale, diverse, ready-to-run (i.e., with fully configured and prepared test suites), and ready-
to-analyze (by integrating with the DynaPyt dynamic analysis framework). The benchmark encompasses 50
popular open-source projects from various application domains, with a total of 681k lines of Python code,
and 30k test cases. DyPyBench enables various applications in testing and dynamic analysis, of which we
explore three in this work: (i) Gathering dynamic call graphs and empirically comparing them to statically
computed call graphs, which exposes and quantifies limitations of existing call graph construction techniques
for Python. (ii) Using DyPyBench to build a training data set for LExecutor, a neural model that learns to
predict values that otherwise would be missing at runtime. (iii) Using dynamically gathered execution traces
to mine API usage specifications, which establishes a baseline for future work on specification mining for
Python. We envision DyPyBench to provide a basis for other dynamic analyses and for studying the runtime
behavior of Python code.
Funder
European Research Council
Publisher
Association for Computing Machinery (ACM)
Reference70 articles.
1. DDUO: General-Purpose Dynamic Analysis for Differential Privacy
2. Karim Ali, Marianna Rapoport, Ondřej Lhoták, Julian Dolby, and Frank Tip. 2014. Constructing call graphs of Scala programs. In European Conference on Object-Oriented Programming. 54–79.
3. Miltiadis Allamanis, Earl T. Barr, Soline Ducousso, and Zheng Gao. 2020. Typilus: Neural Type Hints. In PLDI.
4. Glenn Ammons, Rastislav Bodík, and James R. Larus. 2002. Mining specifications. In Symposium on Principles of Programming Languages (POPL). ACM, 4–16.
5. Jong-hoon (David) An Avik Chaudhuri Jeffrey S. Foster and Michael Hicks. 2011. Dynamic inference of static types for Ruby.. In POPL. 459–472.