Finalist, Ruby Prize, 2016 The Ruby programming language is dynamically typed, uses dynamic and late bound dispatch for all operators, method calls and many control structures, and provides extensive metaprogramming and introspective tooling functionality.Unlike other languages where these features are available, in Ruby their use is not avoided and key parts of the Ruby ecosystem use them extensively, even for inner-loop operations.This makes a high-performance implementation of Ruby problematic.
My work focused on making it fast, providing fast tooling for Ruby programmers, and fast support for legacy C extensions.
The techniques had a very significant impact on synthetic benchmarks and real-world code, often achieving a full order of magnitude or more performance increase over existing state-of-the-art implementations of Ruby.
There's some more discussion of Deca over at Hacker News.
People who write Ruby programs want to use metaprogramming. But in existing implementations of Ruby, metaprogramming is slow.
The compiler is implemented in Scala and generates LLVM bytecode.
(The author points out in the comments below that this implementation is a work in progress.) The author of Deca is Lt U member Eli Gottlieb, who back in 2008 posted in the forum asking for feedback on his language: Practical Bits of Making a Compiler for a New Language.
Compared to equivalent Ruby, this C code is often more efficient for computationally intensive code.
However the interface that these C extensions provides is defined by the non-optimising reference implementation of Ruby.
It provides a high performance implementation of Ruby’s dynamic features, at the same time as providing a high performance implementation of C extensions.
The implementation provides a high level of compatibility with existing Ruby implementations and does not limit the available features in order to achieve high performance.