Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2011
DOI: 10.1145/1926385.1926437
|View full text |Cite
|
Sign up to set email alerts
|

Dynamic inference of static types for ruby

Abstract: 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 o… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
22
0

Year Published

2012
2012
2019
2019

Publication Types

Select...
3
3
2

Relationship

2
6

Authors

Journals

citations
Cited by 39 publications
(22 citation statements)
references
References 21 publications
(14 reference statements)
0
22
0
Order By: Relevance
“…We also found that Hummingbird's performance overhead ranges from 19% to 469%, which is much better than prior approaches [18,27], and that caching is essential to achieving this performance. For one Rails app, we ran type checking on many prior versions, and we found a total of six type errors that had been introduced and then later fixed.…”
Section: Introductionmentioning
confidence: 67%
See 2 more Smart Citations
“…We also found that Hummingbird's performance overhead ranges from 19% to 469%, which is much better than prior approaches [18,27], and that caching is essential to achieving this performance. For one Rails app, we ran type checking on many prior versions, and we found a total of six type errors that had been introduced and then later fixed.…”
Section: Introductionmentioning
confidence: 67%
“…We think these are reasonable results for an early prototype that we have not spent much effort optimizing. Moreover, across all apps, the ratios are significantly better than prior systems that mix static and dynamic typing for Ruby [18,27], which report orders of magnitude slowdowns.…”
Section: Dynamic Typesmentioning
confidence: 83%
See 1 more Smart Citation
“…RubyDust [1] uses a constraint-based analysis at run-time to infer type information. In contrast to the simple type contracts we infer for RDL, RubyDust types are structural, e.g., RubyDust can infer that a method accepts any object with a to s method, something that led to one category of imprecision in contract inference in Figure 11.…”
Section: Related Workmentioning
confidence: 99%
“…Recent innovations include: a type analysis that relies on an abstract domain that is highly tuned for JavaScript [24]; various static type inference algorithms [9,15] and hybrid type inference algorithms [8], including those that prevent access to undefined fields [33], enable program optimizations [21,27], or are suitable for IDEs [28]; static analyses to secure the Web [17][18][19]; alias analyses for JavaScript [23,30] and Python [16]; an analysis to support JavaScript refactoring [13]; and analysis frameworks for dynamic languages [7,26]. All these techniques are orthogonal to type refinement.…”
Section: Related Workmentioning
confidence: 99%