PLS - Projects

We are involved in a number of concrete research projects, some of which receive funding from the Australian Research Council. Our research group's war cry is the integration of theory and practice. Hence, we do not merely produce research papers, but are actively involved in software development. All our development efforts adhere to modern principles of open source software development and the results are published as free software. This page summarises our activities and provides links to our research partners.

Nested Data Parallelism and Fast Functional Arrays

We are investigating program transformations that enable the compilation of purely functional collection-oriented array codes into efficient low-level code for both sequential and parallel architectures. After experiments with prototypes on sequential and parallel hardware, we are currently implementing nested data parallelism into the Glasgow Haskell Compiler (GHC) as part of the Data Parallel Haskell project, which is kindly supported by an industry grant from Microsoft. The main thrust is to utilise multi-core and many-core CPUs.

This project previously received funding from the Australian Research Council.

An inspiring invited talk by Pat Hanrahan at POPL'05 has led us to start to investigate to what extent our previous research can be used to ease the implementation of general-purpose computations on GPUs.

Generic Programming and Self-optimising Libraries (aka Active Libraries)

As part of our work on fast functional arrays, we started looking at the general concept of self-optimising libraries; i.e., libraries that specialise exported data representations and algorithms in dependence of type information provided by client modules. To support this style of libraries, we have - in joint work with Simon Peyton Jones and Simon Marlow - proposed the addition of type declarations to Haskell type classes to express associated data types and associated type synonyms for generic programming. We are currently generalising this to a comprehensive framework for type-level programming.

Computational Chemistry - Simulating Polymer Formation in Parallel

We are working with the The Centre for Advanced Macromolecular Design (CAMD) on the computer modelling of polymerisation processes with the aim of designing ever better materials and controlling the molecular structure of polymers. Our approach is based on parallelising a Monte-Carlo simulation of the polymerisation process.

Safe Execution of Untrusted Code

In cooperation with the DiSy group and the CORG group, we investigate methods for the safe execution of untrusted code using a combination of language-based and operating system-mediated techniques. We are working with certified mobile code and compensate gaps in certificates by the use of inlined and out-of-line reference monitors. This work is carried out within the Sec project, which is supported by a three year research grant from the Australian Research Council.

Functional Intermediate Languages and Flow-based Compiler Optimisations

In a new project, we investigate the impact of moving from traditional ILs for optimising compilers, such as the static single assignment (SSA) form, to the typed ILs popularised in compilers for functional languages. We aim to exploit the following advantages of functional ILs: clean semantics (which makes it easier to reason about compiler optimisations) and type systems (which simplify consistency checks in the compiler, enable optimisations, and help to generate certified binaries). First results of our investigations are summarised in the paper A Functional Perspective on SSA Optimisation Algorithms.

Embedded Domain Specific Languages and Their Implementation

The embedding of domain specific languages into a general-purpose host languages has recently received a significant amount of attention in the Haskell community. We are working at using compile-time meta programming to optimise aspects of the implementation, such as execution time and usability, of such embedded languages. We have produced a paper on Optimising Embedded DSLs using Template Haskell at the example of the animation language Pan, for which we have also produced a tutorial.

This work has recently spawned another thread of research where we investigate the use of dynamically loaded plugins for extensible compilers. Such compiler have the potential to ease the implementation of EDSL, active libraries, and other compiler variants.

Tools and Libraries for Haskell

We are actively involved in the Haskell community and contribute generally useful software. In particular, the interface generator C->Haskell eases the use of C libraries from Haskell via the H98 FFI (Foreign Function Interface) and Gtk+HS enables the implementation of modern GUIs in Haskell by binding to the GTK+ GUI toolkit.

Moreover, we developed a binding of Haskell to Objective-C for Mac OS X called Mocha. In the process of this development, we have investigated novel ways of interfacing statically-typed functional languages with dynamically-typed object-oriented languages, which is documented in a paper on Interfacing Haskell with Object-Oriented Languages and André Pang's Honours Thesis. Meanwhile Mocha has been re-implemented in the context of the HOC Haskell to Objective-C binding.

We developed a library for dynamically loaded plugins in Haskell. The library enables applications (implemented in any language) to compile and load a Haskell source files, and to dynamically load and run compiled Haskell code therein. The library is proving to be very popular and many other projects make use of it.

Contributions to the Glasgow Haskell Compilation System

The Glasgow Haskell Compiler (GHC) is a mature, optimising Haskell compiler that includes many experimental extensions to the standard. The two principal developers of GHC are Simon Peyton Jones and Simon Marlow. We contribute patches to GHC (including for the foreign function interface, ports, Template Haskell, and documentation) and implement some of our compiler work as extensions to GHC (see our research on fast functional arrays and nested data parallelism).

Further Work in Progress

We are involved in a couple of efforts that are not yet documented online. If you are interested in getting to know more about any of the following, please drop us an email.

Past Projects

The following are interesting projects that we pursued in the past:

< Contact: Last modified: Thu Mar 22 11:36:12 EST 2007 >