Ubiquity of multicore processors has created a demand to support parallel processing in all programming languages. However, the dynamic nature of scripting languages makes supporting correct parallel programming in these languages especially difficult. Recent research has enabled safe parallel programming through speculative program parallelization. This project extends these techniques to support parallel programming in the Ruby language. The work focuses on three areas: the interpreter, the core language libraries, and the garbage collector. Through experimentation on Ruby, the research helps to understand the general synergy and limitations when a dynamic language meets dynamic parallelization.

The resulting parallel Ruby implementation is a general-purpose parallel language that can be used by non-programming experts. Because of its ease of use, it is expected to be very useful for rapid prototyping of parallel programming applications and teaching parallel programming across all scientific disciplines. Transfer of this technology is facilitated by open-source distribution of the code on the Web. Outreach activities associated with the project include work with pre-college students, recruitment of students from under-represented groups, and collaboration with industry. Education is integrated with the research through involvement of students in the language implementation, and by experimentation with the use of the parallel Ruby language in several courses.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Network Systems (CNS)
Type
Standard Grant (Standard)
Application #
1319617
Program Officer
Marilyn McClure
Project Start
Project End
Budget Start
2013-10-01
Budget End
2016-09-30
Support Year
Fiscal Year
2013
Total Cost
$305,357
Indirect Cost
Name
University of Rochester
Department
Type
DUNS #
City
Rochester
State
NY
Country
United States
Zip Code
14627