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.
At least partially, the difficulty arises from not applying the state of the art in programming-languages research to systems programming.
I therefore describe the design and implementation of Deca, a systems language based on modern PL principles.
These live programming systems have taken many forms, but have generally been limited in their ability to express low-level programming concepts and the generation of efficient native machine code.
These shortcomings have limited the effectiveness of live programming in domains that require highly efficient numerical processing and explicit memory management.The most general questions addressed by this thesis are what a systems language designed for live programming might look like and how such a language might influence the development of live programming in performance sensitive domains requiring real-time support, direct hardware control, or high performance computing.This thesis answers these questions by exploring the design, implementation and application of Extempore, a new systems programming language, designed specifically for live interactive programming.Feedback from the profiling can then be used to specialise the program for the data and control flow it is actually experiencing.This thesis extends and advances that idea by specialising for conditions beyond normal data and control flow.Deca makes use of decades in programming-languages research, particularly drawing from the state of the art in functional programming, type systems, extensible data-types and subroutines, modularity, and systems programming-languages research.I describe Deca's feature-set, examine the relevant literature, explain design decisions, and give some of the implementation details for Deca language features.The Deca programming language is "a language designed to provide the advanced features of sophisticated, high-level programming languages while still programming as close as possible to the bare metal.It brings in the functional, object-oriented, and generic programming paradigms without requiring a garbage collector or a threading system, so programmers really only pay in performance for the features they use." The latter link provides a list of features that Deca does, will, and won't provide.Common to all the techniques that are described in this thesis is the concept of specialisation.The conventional approach taken to optimise a dynamic language such as Ruby is to profile the program as it runs.