• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Static Type Inference for Ruby (2009)

Cached

  • Download as a PDF

Download Links

  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]
  • [www.cs.umd.edu]

  • Save to List
  • Add to Collection
  • Correct Errors
  • Monitor Changes
by Michael Furr, et al.
Venue:SAC'09
Citations:22 - 5 self
  • Summary
  • Active Bibliography
  • Co-citation
  • Clustered Documents
  • Version History

BibTeX

@MISC{Furr09statictype,
    author = {Michael Furr and et al.},
    title = {Static Type Inference for Ruby},
    year = {2009}
}

Bookmark

citeulike Connotea Bibsonomy Del.icio.us Digg Reddit

OpenURL

 

Abstract

Many general-purpose, object-oriented scripting languages are dynamically typed, which provides flexibility but leaves the programmer without the benefits of static typing, including early error detection and the documentation provided by type annotations. This paper describes Diamondback Ruby (DRuby), a tool that blends Ruby’s dynamic type system with a static typing discipline. DRuby provides a type language that is rich enough to precisely type Ruby code we have encountered, without unneeded complexity. When possible, DRuby infers static types to discover type errors in Ruby programs. When necessary, the programmer can provide DRuby with annotations that assign static types to dynamic code. These annotations are checked at run time, isolating type errors to unverified code. We applied DRuby to a suite of benchmarks and found several bugs that would cause run-time type errors. DRuby also reported a number of warnings that reveal questionable programming practices in the benchmarks. We believe that DRuby takes a major step toward bringing the benefits of combined static and dynamic typing to Ruby and other object-oriented languages.

Citations

830 A Theory of Objects - Abadi, Cardelli - 1996
580 Types and Programming Languages - Pierce - 2002
388 W.: Mixin-based inheritance - Bracha, Cook - 1990
330 CIL: Intermediate language and tools for analysis and transformation of C programs - Necula, McPeak, et al. - 2002
182 Soft typing with conditional types - Aiken, Wimmers, et al. - 1994
175 Soft typing - Cartwright, Fagan - 1991
148 Dynamic typing in a statically typed language - Abadi, Cardelli, et al. - 1991
135 Gent.2003. A Type-Safe Polymorphic object oriented language - Bruce, Schuett, et al.
119 Typechecking records and variants in a natural extension of ML - Rémy - 1989
103 A practical soft type system for scheme - Wright, Cartwright - 1997
95 Type inference with simple subtypes - Mitchell - 1991
84 Contracts for higher-order functions - Findler, Felleisen - 2002
81 Programming Ruby: A Pragmatic Programmer's Guide, Addison-Wesley Professional; 1st edition - Thomas, Hunt, et al. - 2000
64 Programming with Intersection Types and Bounded Polymorphism - Pierce - 1991
61 A type system for Smalltalk - Graver, Johnson - 1990
48 Quasi-static typing - Thatte - 1990
46 A Toolkit for Constructing Type- and Constraint-Based Program Analyses - Aiken, Flhndrich, et al. - 1998
45 Towards type inference for JavaScript - Anderson, Giannini, et al. - 2005
44 A practical subtyping system for Erlang - Marlow, Wadler - 1997
43 The Objective Caml system - Leroy - 2008
42 The design and implementation of Typed Scheme - Tobin-Hochstadt, Felleisen - 2008
40 Gradual typing for functional languages - Siek, Taha - 2006
33 Towards a type system for analyzing JavaScript programs - Thiemann - 2005
30 Gradual typing for objects - Siek, Taha - 2007
29 Type feedback vs. concrete type inference: A comparison of optimization techniques for object-oriented languages - Agesen, Hölzle - 1995
26 Sage: Hybrid Checking for Flexible Specifications - Gronski, Knowles, et al. - 2006
26 M.: Interlanguage migration: from scripts to programs - Tobin-Hochstadt, Felleisen - 2006
23 Contracts as pairs of projections - Findler, Blume - 2006
21 Polymorphic type inference for the JNI - Furr, Foster - 2006
19 Space-efficient gradual typing - Herman, Tomb, et al. - 2007
16 The ruby programming language. O’Reilly - Flanagan, Matsumoto - 2008
14 Union types for object-oriented programming - Igarashi, Nagira - 2006
14 Starkiller: A static type inferencer and compiler for Python - Salib - 2004
13 Demand-driven type inference with subgoal pruning: Trading precision for scalability - Spoon, Shivers
12 Aggressive Type Inference - Aycock - 2000
12 The Python compiler for CMU Common Lisp - MacLachlan - 1992
9 RPython: Reconciling Dynamically and Statically Typed OO Languages - Ancona, Ancona, et al. - 2007
9 Semantic casts: Contracts and structural subtyping in a nominal world - Findler, Flatt, et al. - 2004
8 Localized type inference of atomic types in python - Cannon - 2005
8 Type Inference in Ruby. Google Summer of Code Project - Morrison - 2006
6 Ecstatic – Type Inference for Ruby Using the Cartesian Product Algorithm - Kristensen - 2007
5 Evolutionary Programming and Gradual Typing in ECMAScript 4 (Tutorial - Hansen - 2007
4 The Philosophy of Ruby: A Conversation with Yukihiro - Venners - 2003
3 Konstantinos Sagonas. Practical type inference based on success typings - Lindahl - 2006
3 dypgen User’s Manual - Onzon - 2008
3 An Interview with the Creator of Ruby - Stewart - 2001
1 Strongtalk: Smalltalk...with a need for speed - Strongtalk - 2008
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University