Research on programming languages and programming language technology covers a wide range of principles and technologies. The programming language group at CSD currently focuses on concurrency-oriented programming in the Erlang language, and on object technology. Our research ranges from more theoretical endeavours for reasoning about aliasing in object-oriented systems, to program analyses for concurrency bugs, and compiler and run-time technology.
Senior members: Kostis Sagonas (associate professor), Tobias Wrigstad (associate professor), Dave Clarke (associate professor), Alexandra Jimborean (postdoctoral research associate) and Sven-Olof Nyström (lecturer).
- Dave Clarke joins the programming language group as an associate professor in September 2013.
- The 4th UPMARC Summer School on programming for multicore architectures was held in Uppsala 18--20 of June. Kostis Sagonas was main organiser and speakers were Gernot Heiser, Robert Bocchino, Martin Vechev and Tobias Wrigstad. The school was attended by more than 60 participants, including speakers.
- Alexandra Jimborean is joining the programming language group as a postdoctoral research associate in August 2012.
- Johan Östlund and Tobias Wrigstad are presenting their paper "Multiple Aggregate Entry Points for Ownership Types" at ECOOP'12 [2012-06-15]
- The European Conference on Object-Oriented Programming] to be held at Uppsala University in 2014. Organising chair is Tobias Wrigstad and local organising committee is Kostis Sagonas, Johannes Borgström and Lars-Henrik Eriksson. [2012-06-14]
- Johan Östlund, Stephan Brandauer and Tobias Wrigstad are presenting their position paper "The Joelle Programming Language" at the LaME'12 workshop at ECOOP'12 [2012-06-14]
- Tobias Wrigstad awarded the Dahl-Nygaard Junior Prize for "his work on ownership types, 'like' types, and Thorn". Department press-release is here. [2012-03-01]
Parallel programming is becoming increasingly important following the transition to multicore CPUs. Correct parallel computation is famously difficult, and also an under-studied field of science where serial computation has been prevalent until recently.
In the area of object-oriented programming, the standard way of expressing parallel computation is by multiple threads with a shared memory, and the de facto standard way of synchronising object accesses is by using various locks. This is brittle, and code using locks suffers in compositionality, since locking behaviours are hidden deep inside data structures and unfortunate object combinations, and unfortunate thread inter-leavings, can cause deadlocks and data races that lead to a wealth of problems.
Tobias Wrigstad leads the development of two programming systems for facilitating parallel programming in object-oriented languages.
The Loci system allows a programmer to express what parts of a computation takes place within a single thread, which avoid locking, simplifies garbage collection and allows sequential reasoning about program behaviour. Recent collaborators on Loci are Nosheen Zaza, Amanj Sherwany and Alberto Ros.
The Joelle system departs from the standard thread-model by partitioning a program into several isolated objects executing in parallel and communicating asynchronously. As a result, deadlocks and races cannot take place due to low-level thread interleaving, and all code can be reasoned about sequentially. Joelle is currently developed by Johan Östlund and Stephan Brandauer. We are currently further developing the Joelle system and bringing in results from my work on ownership to allow the system to automatically deduce when computations could be run in parallel without breaking the sequential reasoning model. By basing our work on the Java language, we hope to provide a migration path to a safer parallel programming model for existing Java code. The keys are safety, expressiveness and determinism.
Elias Castegren is developing a unified meta-theoretic framework for reasoning about alias management techniques. This work hopes to unify existing techniques in the search for a structured approach to aliasing in object-oriented programming.
Beatrice Åkerblom, a remote PhD student from Stockholm University, is studying the use of dynamic languages, in particular the Python programming language. Scripting languages (or Dynamic languages) are great for rapid application development, but as scripts "grow up", finding ways of keeping them maintainable, well-performing, etc. or proving properties of their execution become increasingly important. Understanding how scripting languages are used in practise is a fundamental requirement for future work in this area.
The group has worked considerably in the area of alias management, and in particular on ownership types, e.g., external uniqueness, immutability and read-only references, downcasting and existential ownership.
- The IWACO workshop on aliasing, confinement and ownership has been held multiple times in conjunction with ECOOP. The most recent IWACO was IWACO'11.
- The STOP workshop series on script-to-program migration. STOP is currently held about every 18 months and alternates between co-locating with ECOOP and POPL.
The HiPE research group investigated the implementation of logic and concurrent functional programming languages, tabling, memory management, implementation of constraints, compilation techniques for embedded systems, static analysis, and optimisation.
Tobias Wrigstad was a part of the Thorn project developing a scripting language on the JVM aimed to support rapid application development, yet be rigid enough to support programming in the large, and facilitate maintainability. The Thorn language featured a novel 'like' type type constructor which allowed simple integration of dynamic and statically typed code.