Static type inference for Ruby

TitleStatic type inference for Ruby
Publication TypeConference Papers
Year of Publication2009
AuthorsFurr M, An J-hoon(D), Foster JS, Hicks MW
Conference NameProceedings of the 2009 ACM symposium on Applied Computing
Date Published2009///
Conference LocationNew York, NY, USA
ISBN Number978-1-60558-166-8
KeywordsContracts, dynamic typing, ruby, Type inference

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.