projectlogo
Computational Reflection Research Group

Home

The Computational Reflection Research Group investigates techniques which relates to the development of dynamically adaptive systems. The group is mainly comprised of researchers from the Spanish University of Oviedo . There are also collaborators from the University of Vigo (Spain). Main topics of interest are:

  • Computational reflection
  • Dynamic languages
  • Reflective virtual machines
  • Dynamic aspect oriented software development
  • Optimization of dynamic systems
  • Implicit Persistence Systems

Description

In 2002 we develop a reflective virtual machine (nitrO VM) capable of extending itself in its own programming language using reflection.

In 2003, the nitrO non-restrictive reflective system prototype system was implemented offering a higher level of dynamic program customization than the one implemented by meta-object protocols (MOPs). As an example of using the reflective system, we have developed a dynamically adaptable reflective persistence system, in which a completely transparent separation of the persistence concern was performed. At runtime, an application may set and unset as persistent although its source code has not persistence at all. Moreover, its persistence settings such as the storage employed, its indexing mechanism or update frequency could be dynamically changed in a programmatic way.

In 2004 we received one of the Second Microsoft SSCLI Research Request for Proposals awards to add structural reflection to the Shared Source CLI. This project has been named ЯRotor. The main contribution was that using JIT compilation to support structural reflective primitives of dynamic languages significantly improves runtime performance.

The results of the previous research showed us that optimization of high-level programming languages could be used to aggressively improve dynamic performance of programming languages. In 2006 we were awarded with the Phoenix and SSCLI, Compilation and Managed Execution. This project is focused in the StaDyn programming language.

In 2007 a Dynamic Aspect Oriented Platform (READY, REAlly DYnamic, AOP) was created to support dynamic separation of aspects in the .Net platform. A Meta-Object Protocol was implemented instrumented IL executables. We are currently adding static weaving features to offer both static and dynamic AOP.