Abstract
In this paper we describe a variation of monotone frameworks
that enables us to perform approximate typing of
Python, in particular for dealing with some of its more dynamic
features such as first-class functions and Python’s dynamic
class system. We additionally introduce a substantial
number of variants of the basic analysis in order to experimentally
discover which configurations attain the best
balance of cost and precision. For example, the analysis allows
us to be selectively flow-insensitive for certain classes
of identifiers, and the amount of call-site context is configurable.
Results of our evaluation include that adding call-site
sensitivity and parameterized types has little effect on precision;
in terms of speed call-site sensitivity is very costly. On
the other hand, flow-insensitive treatment of module scope
identifiers has a strongly positive effect, often both in terms
of precision and speed.
that enables us to perform approximate typing of
Python, in particular for dealing with some of its more dynamic
features such as first-class functions and Python’s dynamic
class system. We additionally introduce a substantial
number of variants of the basic analysis in order to experimentally
discover which configurations attain the best
balance of cost and precision. For example, the analysis allows
us to be selectively flow-insensitive for certain classes
of identifiers, and the amount of call-site context is configurable.
Results of our evaluation include that adding call-site
sensitivity and parameterized types has little effect on precision;
in terms of speed call-site sensitivity is very costly. On
the other hand, flow-insensitive treatment of module scope
identifiers has a strongly positive effect, often both in terms
of precision and speed.
Original language | English |
---|---|
Place of Publication | Utrecht |
Publisher | UU BETA ICS Departement Informatica |
Number of pages | 12 |
Publication status | Published - 2014 |
Publication series
Name | Technical Reports Series |
---|---|
Publisher | UU Beta ICS Departement Informatica |
No. | UU-CS-2014-017 |
ISSN (Print) | 9024-3275 |
Keywords
- approximate typing
- Python
- data-flow analysis
- abstract interpretation
- monotone frameworks
- performance
- precision
- call-site sensitivity