Recent Activities and Projects
- LJGS: Gradual Security Types for Java
- TreatJS: Higher Order Contracts for JavaScript
- DecentJS: Transaction-based Sandboxing for JavaScript
- Tranparent Object Proxies for JavaScript
- Regular Expression Inequalities
- A Type Theoretic Specification of Partial Evaluation
Past Activities
- Efficient Access Analysis Using JavaScript Proxies
- Access Permission Contracts for Scripting Languages
- Recency Types for Analyzing Scripting Languages
- Software Transactional Memory for Distributed Systems
- Twilight STM for Haskell
- Deriving Type Systems and Implementations for Coroutines
- Deriving Type Systems and Implementations for Coroutines
- WASH, Web Authoring System in Haskell
Project Embedded Microsystems
We participated in the Graduate College Embedded Microsystems
Domain Specific Languages (DSL)
A DSL is a language which is tailored to a specific class of problems and application domains. Application experts can express their problems in a DSL without programming in the usual sense of the word. By exploting domain-specific knowledge, a DSL compiler can generate better code than a compiler for a general purpose programming languages, at a fraction of the programming effort.
Functional Programming Languages
Functional programming languages are well suited as host languages for so-called open or embedded DSLs, which may also be considered libraries for traditional languages. This approach does not keep the domain expert from programming, but, on the positive side, the open DSL inherits all means of abstractions as well as the development tools of the host language at zero effort.
There are two projects using this approach with the host language Haskell. The project WASH developed a DSL for creating interactive web pages and to manipulate XML-data. The project HaGen creates a DSL for metaprogramming.
Partial Evaluation
Partial evaluation (program specialization) is a general program optimization technique. It is also applicable to implementing so-called closed DSLs. Starting from an optimizing interpreter for a DSL, a partial evaluator can create an optimizing compiler for the DSL at the push of a button. Our program specializer PGG implements such a powertool for the programming language Scheme. The system comes with many applications and is continually extended and improved.
In the MLOPE project, we developed a partial evaluator for a large fragment of the Standard-ML language. We are also looking at the theoretical foundations of program generation and metaprogramming for object oriented languages.