

The presented semantics leads straightforwardly to a reference implementation. The key insight underlying the semantics is that various elaborate features of Ruby can be cleanly represented as a composition of two orthogonal calculi: one for objects and classes and the other for representing control. To meet this challenge, we present a formal operational semantics that can serve as a high-level specification for both the users and implementers.


For Ruby to be established as a reliable scripting language, it should have a rigorous semantics. Even the JIS/ISO standard of Ruby seems to contain some ambiguities. They make Ruby a popular, highly productive scripting language, but they also make the semantics of Ruby complicated and difficult to understand. Ruby is a dynamic, object-oriented language with advanced features such as yield operator and dynamic class manipulation.
