Software developers are increasingly using dynamic scripting languages not only for quickly prototyping or as "glue"code, but also to write large applications. Programmers like scripting languages because they have the flexibility of simply using a variable when needed, without having to declare it. This results in fewer lines of code and allows for faster code development. Unfortunately the same features that make dynamic scripting languages more productive, make them hard to generate efficient code for.
This project is working on a hardware-software solution to enable programs written using dynamic scripting languages to run as fast as statically typed languages, such as C, C++ or Java. To that end, this project is working on the design of new program transformations that can generate highly efficient code by taking advantage of innovative hardware support that detects if the assumptions done when generating the code are correct. Additionally, novel hardware provides to the compiler information that enables even more aggressive optimizations. Hardware and software designs are driven by the results obtained from a study that analyzes the main sources of overhead of scripting languages. The research in this project will result in higher programmer productivity and will enable the use of scripting languages in domains where they are not used today.