Dynamic inference of static types for ruby

8 years 8 months ago
Dynamic inference of static types for ruby
There have been several efforts to bring static type inference to object-oriented dynamic languages such as Ruby, Python, and Perl. In our experience, however, such type inference systems are extremely difficult to develop, because dynamic languages are typically complex, poorly specified, and include features, such as eval and reflection, that are hard to analyze. In this paper, we introduce constraint-based dynamic type inference, a technique that infers static types based on dynamic program executions. In our approach, we wrap each run-time value to associate it with a type variable, and the wrapper generates constraints on this type variable when the wrapped value is used. This technique avoids many of the often overly conservative approximations of static tools, as constraints are generated based on how values are used during actual program runs. Using wrappers is also easy to implement, since we need only write a constraint resolution algorithm and a transformation to introdu...
Jong-hoon (David) An, Avik Chaudhuri, Jeffrey S. F
Added 17 Sep 2011
Updated 17 Sep 2011
Type Journal
Year 2011
Where POPL
Authors Jong-hoon (David) An, Avik Chaudhuri, Jeffrey S. Foster, Michael Hicks
Comments (0)