The Ruby Bibliography

The Ruby Bib

Ruby Bib

Ruby Bib

Academic writing on the Ruby programming language

The Ruby programming language hasn't historically been the subject of much research, either in industry or academia. A lot of recent systems research has used languages like C, C++ and Java. Contemporary programming language research often uses languages like Java, Scala, Racket and Haskell. Modern research into VMs, compilers and garbage collectors is often based on Java or recently Python.

However there are now a growing number of research projects using Ruby. On this page we list theses and peer-reviewed papers and articles that cover Ruby implementation or use Ruby, including alternative implementations such as JRuby.

Virtual Machines

# K. Sasada. Gradual Write-Barrier Insertion into a Ruby interpreter. In proceedings of the International Symposium on Memory Management (ISMM), 2019. MRI

# K. Sugiyama, K. Sasada, M. J. Dürst. Dynamic Extension of the Ruby Virtual Machine Stack. In the IPSJ Journal of Programming (PRO), 2018. In Japanese. MRI

# K. Menard, C. Seaton, B. Daloze. Specializing Ropes for Ruby. In proceedings of 15th International Conference on Managed Languages & Runtimes (ManLang), 2018. TruffleRuby

# M. Grimmer, R. Schatz, C. Seaton, T. Würthinger, M. Luján. Cross-Language Interoperability in a Multi-Language Runtime. In ACM Transactions on Programming Languages and Systems (TOPLAS), Vol. 40, No. 2, 2018. TruffleRuby

# B. Yang, J. Kim, S. Moon. Exceptionalization: A Java VM Optimization for Non-Java Languages. In ACM Transactions on Architecture and Code Optimization (TACO), volume 14, issue 1, 2017. JRuby

# S. Xu, D. Bremner, D. Heidinga. Fusing Method Handle Graphs for Efficient Dynamic JVM Language Implementations. In proceedings of the 9th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL), 2017. JRuby

# T. Würthinger, C. Wimmer, C. Humer, A. Wöss, L. Stadler, C. Seaton, G. Duboscq, D. Simon, M. Grimmer. Practical Partial Evaluation for High-Performance Dynamic Language Runtimes. In proceedings of the 38th Conference on Programming Language Design and Implementation (PLDI), 2017. TruffleRuby

# S. Marr, B. Daloze, H. Mössenböck. Cross-Language Compiler Benchmarking - Are We Fast Yet? In proceedings of the 12th Dynamic Languages Symposium (DLS), 2016. TruffleRuby JRuby Rubinius MRI

# C. Seaton. AST Specialisation and Partial Evaluation for Easy High-Performance Metaprogramming. In proceedings of the 1st Workshop on Meta-Programming Techniques and Reflection (META), 2016. TruffleRuby

# S. Xu, D. Bremner, D. Heidinga. MHDeS: Deduplicating Method Handle Graphs for Efficient Dynamic JVM Language Implementations. In proceedings of the 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS), 2016. JRuby

# K. Tanaka, A. D. Nagumanthri, Y. Matsumoto. mruby – Rapid Software Development for Embedded Systems. In proceedings of the 15th International Conference on Computational Science and its Applications (ICCSA), 2015. mruby

# S. Xu, D. Bremner, D. Heidinga. Mining Method Handle Graphs for Efficient Dynamic JVM Languages. In ACM proceedings 12th Conference on Principles and Practices of Programming on the Java Platform (PPPJ), 2015. JRuby

# M. Viering. An Efficient Runtime System for Reactive Programming. Master thesis, Technische Universität Darmstadt, 2015. TruffleRuby

# C. Seaton. Specialising Dynamic Techniques for Implementing the Ruby Programming Langauge. PhD thesis, University of Manchester, 2015. TruffleRuby

# M. Grimmer, C. Seaton, R. Schatz, T. Würthinger, H. Mössenböck. High-Performance Cross-Language Interoperability in a Multi-Language Runtime. In proceedings of the 11th Dynamic Languages Symposium (DLS), 2015. TruffleRuby

# F. Niephaus, M. Springer, T. Felgentreff, T. Pape, R. Hirschfeld. Call-target-specific Method Arguments. In proceedings of the 10th Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems Workshop (ICOOOLPS), 2015. TruffleRuby

# B. Daloze, C. Seaton, D. Bonetta, H. Mössenböck. Techniques and Applications for Guest-Language Safepoints. In proceedings of the 10th Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems Workshop (ICOOOLPS), 2015. TruffleRuby

# S. Marr, C. Seaton, S. Ducasse. Zero-Overhead Metaprogramming: Reflection and Metaobject Protocols Fast and without Compromises. In proceedings of the 36th Conference on Programming Language Design and Implementation (PLDI), 2015. TruffleRuby

# M. Grimmer, C. Seaton, T. Würthinger, H. Mössenböck. Dynamically Composing Languages in a Modular Way: Supporting C Extensions for Dynamic Languages. In proceedings of the 14th International Conference on Modularity, 2015. TruffleRuby

# A. Wöß, C. Wirth, D. Bonetta, C. Seaton, C. Humer, H. Mössenböck. An Object Storage Model for the Truffle Language Implementation Framework. In proceedings of the International Conference on Principles and Practices of Programming on the Java Platform (PPPJ), 2014. TruffleRuby

# W. Hang Li, D. R. White, J. Singer. JVM-Hosted Languages: They Talk the Talk, but do they Walk the Walk? In proceedings of the International Conference on Principles and Practices of Programming on the Java Platform (PPPJ), 2013. JRuby

# M. Springer. Inter-language Collaboration in an Object-oriented Virtual Machine. Bachelor’s thesis, Hasso-Plattner-Institute, 2013. MagLev

# S. Shiba, K. Sasada, K. Hiraki. CastOff: A Compiler for Ruby Implemented as a Library. In Journal of Information Processing Society of Japan, Transactions on Programming, 2012. In Japanese. MRI

# S. Shiba, K. Sasada, S. Urabe, Y. Matsumoto, M. Inaba, K. Hiraki. A Practical AOT Compiler for Ruby. In Journal of Information Processing Society of Japan, Transactions on Programming, 2011. In Japanese. MRI

# M. Furr, J. An, J. S. Foster, M. Hicks. The Ruby Intermediate Language. In proceedings of the Dynamic Language Symposium, 2009.

# K. Sasada. Ricsin: A System for “C Mix-in to Ruby”. In proceedings of the IPSJ Programming Workshop, 2009. In Japanese. MRI

# K. Sasada. A Lightweight Representation of Floting-Point Numbers on Ruby Interpreter. In proceedings of PPL, 2008. In Japanese. MRI

# G. B. Prokopski, C. Verbrugge. Analyzing the Performance of Code-Copying Virtual Machines. In proceedings of the 23rd Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2008. MRI

# K. Sasada, Y. Matsumoto, A. Maeda, M. Namiki. YARV: Yet Another RubyVM The Implementation and Evaluation. In the IPSJ Journal of Programming (PRO), 2005. In Japanese. MRI

# K. Sasada. YARV: Yet Another RubyVM: Innovating the Ruby Interpreter. In proceedings of the 20th Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2005. MRI

Parallelism and Concurrency

# B. Daloze, A. Tal, S. Marr, H. Mössenböck, E. Petrank. Parallelization of Dynamic Languages: Synchronizing Built-in Collections. In proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2018. TruffleRuby

# M. Springer, H. Masuhara. Object Support in an Array-Based GPGPU Extension for Ruby. In proceedings of the 3rd International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY), 2016.

# B. Daloze, S. Marr, D. Bonetta, H. Mössenböck. Efficient and Thread-Safe Objects for Dynamically-Typed Languages. In proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2016. TruffleRuby

# C. Ding, B. Gernhardt, P. Li, M. Hertz. Safe Parallel Programming in an Interpreted Language. In proceedings of the First Workshop on the High Performance Scripting Languages, 2015. MRI

# L. Lu, W. Ji, M. L. Scott. Dynamic Enforcement of Determinism in a Parallel Scripting Language. In proceedings of the 35th Conference on Programming Language Design and Implementation (PLDI), 2014. (source code) JRuby

# R. Odaira, J. G. Castanos, H. Tomari. Eliminating Global Interpreter Locks in Ruby Through Hardware Transactional Memory. In proceedings of the 19th Symposium on Principles and Practice of Parallel Programming (PPoPP), 2014. MRI

# W. Ji, L. Lu, M. L. Scott. TARDIS: Task-level Access Race Detection by Intersecting Sets. In proceedings of the 4th Workshop on Determinism and Correctness in Parallel Programming (WoDet), 2013. JRuby

# H. Nakagawa, K. Sasada. Design and Implementation of Efficient Interprocess Transfer and Sharing Mechanism for Ruby Objects. In the IPSJ Journal of Programming (PRO), 2012. In Japanese. MRI

# K. Sasada, S. Urabe, Y. Matsumoto, K Hiraki. Parallel Processing on Multiple Virtual Machine for Ruby. In the IPSJ Journal of Programming (PRO), 2012. In Japanese. MRI

# K. Sasada. The Improvement of Thread Implementation for Ruby Interpreter. In the IPSJ Programming Symposium, 2011. In Japanese. MRI

# K. Sasada, Y. Matsumoto, A. Maeda, M. Namiki. An Implementation of Parallel Threads for YARV: Yet Another RubyVM. In the IPSJ Journal of Programming (PRO), 2007. In Japanese. MRI

Garbage Collection

# B. Powers, D. Tench, E. D. Berger, A. McGregor. Mesh: Compacting Memory Management for C/C++ Applications. In proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2019.

Tooling

# J. Kreindl, M. Rigger, H. Mössenböck. Debugging Native Extensions of Dynamic Languages. In proceedings of 15th International Conference on Managed Languages & Runtimes (ManLang), 2018. TruffleRuby

# M. Van De Vanter, C. Seaton, M. Haupt, C. Humer, T. Würthinger. Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools. In The Art, Science, and Engineering of Programming, Vol. 2, No. 3, 2018. TruffleRuby

# C. Seaton, M. L. Van De Vanter, M. Haupt. Debugging at Full Speed. In proceedings of the 8th Workshop on Dynamic Languages and Applications (DYLA), 2014. (source code) TruffleRuby

# T. Sunaga, K. Sasada. Design and Implementation of Real-time Profilers for Scripting Languages. In the JSSST Computer Software (2012). In Japanese. MRI

Type Systems

# M. Kazerounian, S. N. Guria, N. Vazou, J. S. Foster, D. Van Horn. Type-level Computations for Ruby Libraries. In proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2019.

# M. Kazerounian, N. Vazou, A. Bourgerie, J. S. Foster, E. Torlak. Refinement Types for Ruby. In proceedings of the 19th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), 2018.

# B. M. Ren, J. S. Foster. Just-in-Time Static Type Checking for Dynamic Languages. In proceedings of the 37th Conference on Programming Language Design and Implementation (PLDI), 2016.

# B. M. Ren, J. Toman, T. S. Strickland, J. S. Foster. The Ruby Type Checker. In proceedings of the 28th Symposium on Applied Computing (SAC), 2013.

# J. An, A. Chaudhuri, J. S. Foster, M. Hicks. Dynamic Inference of Static Types for Ruby. In proceedings of the 38th ACM Symposium on Principles of Programming Languages (POPL), 2011.

# M. J. Edgar. Static Analysis for Ruby in the Presence of Gradual Typing. Bachelor’s thesis, 2011.

# M. Madsen, P. Sørensen, K. Kristensen. Ecstatic - Type Inference for Ruby Using the Cartesian Product Algorithm. Master’s thesis, Aalborg University, 2007.

# M. Furr, J. An, J. S. Foster, M. Hicks. Static Typing for Ruby on Rails. In proceedings of the 24th Annual ACM Symposium on Applied Computing, 2009.

# M. Furr, J. An, J. S. Foster. Work In Progress: an Empirical Study of Static Typing in Ruby. In proceedings of the PLATEAU Workshop on Evaluation and Usability of Programming Languages and Tools, 2009.

# M. Daly, V. Sazawal, J. S. Foster. Profile-Guided Static Typing for Dynamic Scripting Languages. In proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2009.

# J. An, A. Chaudhuri, J. S. Foster. Static Type Inference for Ruby. In proceedings of the 24th IEEE/ACM International Conference on Automated Software Engineering, 2009.

Software Engineering

# T. Poncelet, L. Vigneron. The Phenomenal Gem - Putting Features as a Service on Rails. Master’s thesis, Université Catholique de Louvain, 2012.

# S. Günther, M. Fischer. Metaprogramming in Ruby - A Pattern Catalog. In proceedings of the 17th Conference on Pattern Languages of Programs, 2010.

# S. Günther, T. Cleenewerck. Design Principles for Internal Domain-Specific Languages: A Pattern Catalog Illustrated by Ruby. In proceedings of the 17th Conference on Pattern Languages of Programs, 2010.

Security

# J. P. Near, D. Jackson. Finding Security Bugs in Web Applications using a Catalog of Access Control Patterns. 38th International Conference on Software Engineering, 2016.

Applications

Artificial Intelligence

# G. Cuccu, J. Togelius, Ph. Cudré-Mauroux. Playing Atari with Six Neurons. In proceedings of the International Conference on Autonomous Agents and Multiagent Systems (AAMAS), 2019. Implementation in Ruby.

# G. Cuccu. Extending the Applicability of Neuroevolution. PhD thesis, University of Fribourg, 2018. Implementation in Ruby.

# J. Adam. Designing Emergence: automatic extraction of stigmergic algorithms from lattice structures. PhD thesis, University of Essex, 2006.

Bioinformatics

# R. Smith, R. Williamson, D. Ventura, J. T. Prince. Rubabel: wrapping open Babel with Ruby. Journal of Cheminformatics, 5(1), 35, 2013.

# N. Goto, P. Prins, M. Nakao, R. Bonnal, J. Aerts, T. Katayama. Bioruby: bioinformatics software for the Ruby programming language. Bioinformatics, 26(20):2617–9, Oct 2010.

Content Management

# A. Tapiador, J. Salvachúa. Content Management in Ruby on Rails. Proceedings of the IADIS International Conference on Collaborative Technologies, 2011.

Distributed Computing

# J. Collins. Communication Paradigms for Mobile Ad Hoc Networks. PhD thesis, 2014.

Modeling and Simulation

# W. Rząsa. Predicting Performance in a PaaS Environment: a Case Study for a Web Application. In the Computer Science Journal, volume 18, number 1, 2017.

# W. Rząsa, M. Jamro, D. Rzonca. Improving Accuracy of a Network Model Basing on the Case Study of a Distributed System with a Mobile Application and an API. In proceedings of the International Conference on Computer Networks, 2017.

# W. Rząsa, D. Rzońca. Event-Driven Approach to Modeling and Performance Estimation of a Distributed Control System. In proceedings of the International Conference on Computer Networks, 2016.

# W. Rząsa. Simulation-Based Analysis of a Platform as a Service Infrastructure Performance from a User Perspective. In proceedings of the International Conference on Computer Networks, 2015.

# J. S. Cuadrado, J. G. Molina, M. M. Tortosa. RubyTL: A Practical, Extensible Transformation Language. Model Driven Architecture - Foundations and Applications, 4066, 2006.

Robotics

# B. Roman, C. Scholin, S. Jensen, E. Massion, R. Marin III, C. Preston, D. Greenfield, W. Jones, K. Wheeler. Controlling a Robotic Marine Environmental Sampler with the Ruby Scripting Language. JALA - Journal of the Association for Laboratory Automation, 12(1), 56-61, 2007.

Social Networks

# A. Tapiador, D. Carrera, J. Salvachúa. Social Stream, a social network framework. Proceedings of International Conference on Future Generation Communication Technology (FGCT), 2012.

# A. Tapiador. A framework for building distributed social network websites. PhD thesis, 2013.

Software Engineering

# A. Loh, W. R. Cook, T. van der Storm. Managed Data: Modular Strategies for Data Abstraction. In proceedings of Onward!, 2012.

# T. van der Storm, A. Loh, W. R. Cook. Object Grammars: Compositional & Bidirectional Mapping Between Text and Graphs. In proceedings of the 5th International Conference on Software Language Engineering, 2012.

Computer Vision

# J. Wedekind. Efficient Implementations of Machine Vision Algorithms using a Dynamically Typed Programming Language. PhD thesis, 2012.

Standards

# IPA Ruby Standardization WG. Programming Languages — Ruby (Draft). Final draft of the Ruby ISO standard, 2010.