Department of Information Technology

Programming Languages

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).

Kostis Sagonas leads the work on Erlang with financial support from the UPMARC centre of excellence for research on programming for multicore architectures and RELEASE EU project.

Tobias Wrigstad leads the work on object technology financed by UPMARC and faculty funding. He is a PI in the Structured Aliasing project and the UpScale project.

Dave Clarke has recently joined the group. He is working on software product lines, coordination, secure compilation and object-oriented programming. He is a PI in the UpScale project.

Old News
  • 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.
Research on Concurrency-Oriented Programming

TBD

Research on Object Technology

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.

Events Regularly Organised by the PL Group
  • 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.
Previous research in PL by CSD Researchers

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.

Sven-Olof Nyström led a group investigating whole-program optimisation for Embedded systems.

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.

Recent Publications

Comparing source sets and persistent sets for partial order reduction. Parosh Abdulla, Stavros Aronis, Bengt Jonsson, and Konstantinos Sagonas. In Models, Algorithms, Logics and Tools: Essays dedicated to Kim Guldstrand Larsen on the occasion of his 60th birthday, volume 10460 of Lecture Notes in Computer Science, pp 516-536, Springer, 2017. (DOI).
Concolic testing for functional languages. Aggelos Giantsios, Nikolaos Papaspyrou, and Konstantinos Sagonas. In Science of Computer Programming, volume 147, pp 109-134, 2017. (DOI).
Mining for Safety using Interactive Trace Analysis. Stephan Brandauer and Tobias Wrigstad. In Pre-Proceedings - Fifteenth International Workshop on Quantitative Aspects of Programming Languages and Systems, 2017. (Pre-Proceedings, fulltext:print).
Orca: GC and Type System Co-design for Actor Languages. Sylvan Clebsch, Juliana Franco, Sophia Drossopoulou, Albert Mingkun Yang, Tobias Wrigstad, and Jan Vitek. In , volume 1, number OOPSLA, pp 1-28Proceedings of the ACM on Programming Languages, volume 1, number OOPSLA, pp 1-28, ACM, 2017. (DOI, Fulltext, External link, fulltext:print).
Scaling Reliably: Improving the scalability of the Erlang distributed actor platform. Phil Trinder, Natalia Chechina, Nikolaos Papaspyrou, Konstantinos Sagonas, Simon Thompson, Stephen Adams, Stavros Aronis, Robert Baker, Eva Bihari, Olivier Boudeville, Francesco Cesarini, Maurizio Di Stefano, Sverker Eriksson, Viktória Förd?s, Amir Ghaffari, Aggelos Giantsios, Rickard Green, Csaba Hoch, David Klaftenegger, Huiqing Li, Kenneth Lundin, Kenneth Mackenzie, Katerina Roukounaki, Yiannis Tsiouris, and Kjell Winblad. In ACM Transactions on Programming Languages and Systems, volume 39, number 4, 2017. (DOI).
Selected and extended papers from Partial Evaluation and Program Manipulation 2015 (PEPM ' 15). Kenichi Asai and Konstantinos Sagonas. In Science of Computer Programming, volume 137, pp 1-1, ELSEVIER SCIENCE BV, 2017. (DOI).
Source Sets: A Foundation for Optimal Dynamic Partial Order Reduction. Parosh Abdulla, Stavros Aronis, Bengt Jonsson, and Konstantinos Sagonas. In Journal of the ACM, volume 64, number 4, Association for Computing Machinery (ACM), 2017. (DOI).
Stateless model checking of the Linux kernel's hierarchical read-copy-update (tree RCU). Michalis Kokologiannakis and Konstantinos Sagonas. In Proc. 24th ACM SIGSOFT International SPIN Symposium on Model Checking of Software, pp 172-181, ACM Press, New York, 2017. (DOI).
Targeted property-based testing. Andreas Löscher and Konstantinos Sagonas. In Proc. 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp 46-56, ACM Press, New York, 2017. (DOI).
Testing And Verifying Chain Repair Methods For CORFU Using Stateless Model Checking. Stavros Aronis, Konstantinos Sagonas, and Scott Lystig Fritchie. In , volume 10510 of Lecture Notes in Computer Science, pp 227-242, Springer, Cham, 2017. (DOI, fulltext:postprint).
The shared-memory interferences of Erlang/OTP built-ins. Stavros Aronis and Konstantinos Sagonas. In Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang, Association for Computing Machinery (ACM), New York, 2017. (DOI, fulltext:postprint).
Type-assisted automatic garbage collection for lock-free data structures. Albert Mingkun Yang and Tobias Wrigstad. In Proc. 16th International Symposium on Memory Management, pp 14-24, ACM Press, New York, 2017. (DOI).
You can have it all: abstraction and good cache performance. Juliana Franco, Martin Hagelin, Tobias Wrigstad, Sophia Drossopoulou, and Susan Eisenbach. In , pp 148-167, 2017. (fulltext:print).
LOLCAT: Relaxed Linear References for Lock-free Programming. Elias Castegren and Tobias Wrigstad. Technical report / Department of Information Technology, Uppsala University nr 2016-013, 2016. (fulltext).
Reference Capabilities for Concurrency Control. Elias Castegren and Tobias Wrigstad. In ECOOP 2016 — Object-Oriented Programming, 2016. (fulltext:postprint).
Reference Capabilities for Trait Based Reuse and Concurrency Control. Elias Castegren and Tobias Wrigstad. Technical report / Department of Information Technology, Uppsala University nr 2016-007, 2016. (fulltext).
The Nifty way to call hell from heaven. Andreas Löscher and Konstantinos Sagonas. In Proc. 15th International Workshop on Erlang, pp 1-11, ACM Press, New York, 2016. (DOI).
Vats: A safe, reactive storage abstraction. Dave Clarke and Tobias Wrigstad. In Theory and Practice of Formal Methods: Essays Dedicated to Frank de Boer on the Occasion of His 60th Birthday, volume 9660 of Lecture Notes in Computer Science, pp 140-154, Springer, 2016. (DOI).
Contention adapting search trees. Konstantinos Sagonas and Kjell Winblad. In Proc. 14th International Symposium on Parallel and Distributed Computing, pp 215-224, IEEE conference proceedings, 2015. (DOI).
Enabling design of performance-controlled sensor network applications through task allocation and reallocation. Atis Elsts, Farshid Hassani Bijarbooneh, Martin Jacobsson, and Konstantinos Sagonas. In Proc. 11th International Conference on Distributed Computing in Sensor Systems, pp 248-253, IEEE Computer Society, 2015. (DOI, fulltext:postprint).
Measuring Polymorphism in Python Programs. Beatrice Åkerblom and Tobias Wrigstad. In Proc. 11th Symposium on Dynamic Languages, volume 51:2 2016 of ACM SIGPLAN Notices, pp 114-128, ACM Press, New York, 2015. (DOI).
Parallel Objects for Multicores: A Glimpse at the Parallel Language ENCORE. Stephan Brandauer, Elias Castegren, Dave Clarke, Kiko Fernandez-Reyes, Einar Broch Johnsen, Ka I. Pun, S. Lizeth Tapia Tarifa, Tobias Wrigstad, and Albert Mingkun Yang. In Formal Methods for Multicore Programming, volume 9104 of Lecture Notes in Computer Science, pp 1-56, 2015. (DOI).
ProFuN TG: A tool for programming and managing performance-aware sensor network applications. Atis Elsts, Farshid Hassani Bijarbooneh, Martin Jacobsson, and Konstantinos Sagonas. In IEEE 40th Local Computer Networks Conference Workshops (LCN Workshops), pp 751-759, IEEE Computer Society, 2015. (DOI, fulltext:preprint).
Property-Based Testing of Sensor Networks. Andreas Löscher, Konstantinos Sagonas, and Thiemo Voigt. In Proc. 12th International Conference on Sensing, Communication, and Networking, pp 100-108, IEEE Communications Society, 2015.
Refined Ownership: Fine-grained controlled internal sharing. Elias Castegren, Johan Östlund, and Tobias Wrigstad. In Formal Methods for Multicore Programming, volume 9104 of Lecture Notes in Computer Science, pp 179-210, 2015. (DOI).
Stateless model checking for TSO and PSO. Parosh Aziz Abdulla, Stavros Aronis, Mohamed Faouzi Atig, Bengt Jonsson, Carl Leonardsson, and Konstantinos Sagonas. In Tools and Algorithms for the Construction and Analysis of Systems: TACAS 2015, volume 9035 of Lecture Notes in Computer Science, pp 353-367, Springer Berlin/Heidelberg, 2015. (DOI).
Brief announcement: queue delegation locking. David Klaftenegger, Konstantinos Sagonas, and Kjell Winblad. In Proc. 26th ACM Symposium on Parallelism in Algorithms and Architectures, pp 70-72, ACM Press, New York, 2014. (DOI, fulltext:print).
Delegation locking libraries for improved performance of multithreaded programs. David Klaftenegger, Konstantinos Sagonas, and Kjell Winblad. In Euro-Par 2014: Parallel Processing, volume 8632 of Lecture Notes in Computer Science, pp 572-583, Springer Berlin/Heidelberg, 2014. (DOI).
More scalable ordered set for ETS using adaptation. Konstantinos Sagonas and Kjell Winblad. In Proc. 13th ACM SIGPLAN Workshop on Erlang, pp 3-11, ACM Press, New York, 2014. (DOI).
Optimal dynamic partial order reduction. Parosh Abdulla, Stavros Aronis, Bengt Jonsson, and Konstantinos Sagonas. In Proc. 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, volume 49:1 of ACM SIGPLAN NOTICES, pp 373-384, ACM Press, New York, 2014. (DOI).
Scaling Future Software: The Manycore Challenge. Frank de Boer, Einar Broch Johnsen, Dave Clarke, Sophia Drossopoulou, Nobuko Yoshida, and Tobias Wrigstad. 2014. (External link).
Static safety guarantees for a low-level multithreaded language with regions. Prodromos Gerakios, Nikolaos Papaspyrou, and Konstantinos Sagonas. In Science of Computer Programming, volume 80, number Part B, pp 223-263, 2014. (DOI).
Beyond the Geneva Convention on the Treatment of Object Aliasing. Dave Clarke, James Noble, and Tobias Wrigstad. In Aliasing in Object-Oriented Programming: Types, Analysis, and Verification, volume 7850 of Lecture Notes in Computer Science, pp 1-6, Springer Berlin/Heidelberg, 2013. (DOI).
On the scalability of the Erlang term storage. David Klaftenegger, Konstantinos Sagonas, and Kjell Winblad. In Proc. 12th ACM SIGPLAN Workshop on Erlang, pp 15-26, ACM Press, New York, 2013. (DOI).
On using Erlang for parallelization: Experience from parallelizing Dialyzer. Stavros Aronis and Konstantinos Sagonas. In Trends in Functional Programming, volume 7829 of Lecture Notes in Computer Science, pp 295-310, Springer Berlin/Heidelberg, 2013. (DOI).
Ownership Types: A Survey. Dave Clarke, Johan Östlund, Ilya Sergey, and Tobias Wrigstad. In Aliasing in Object-Oriented Programming: Types, Analysis, and Verification, volume 7850 of Lecture Notes in Computer Science, pp 15-58, Springer Berlin/Heidelberg, 2013. (DOI).
Precise explanation of success typing errors. Konstantinos Sagonas, Josep Silva, and Salvador Tamarit. In Proc. ACM SIGPLAN 2013 Workshop on Partial Evaluation and Program Manipulation, pp 33-42, ACM Press, New York, 2013. (DOI).
RELEASE: A high-level paradigm for reliable large-scale server software. Olivier Boudeville, Francesco Cesarini, Natalia Chechina, Kenneth Lundin, Nikolaos Papaspyrou, Konstantinos Sagonas, Simon Thompson, Phil Trinder, and Ulf Wiger. In Trends in Functional Programming, volume 7829 of Lecture Notes in Computer Science, pp 263-278, Springer Berlin/Heidelberg, 2013. (DOI).
Structured Aliasing. Tobias Wrigstad. In Aliasing in Object-Oriented Programming: Types, Analysis, and Verification, volume 7850 of Lecture Notes in Computer Science, pp 512-513, Springer Berlin/Heidelberg, 2013. (DOI).
Systematic testing for detecting concurrency errors in Erlang programs. Maria Christakis, Alkis Gotovos, and Konstantinos Sagonas. In Proc. 6th International Conference on Software Testing, Verification and Validation, pp 154-163, IEEE Computer Society, 2013. (DOI).
A scalability benchmark suite for Erlang/OTP. Stavros Aronis, Nikolaos Papaspyrou, Katerina Roukounaki, Konstantinos Sagonas, Yiannis Tsiouris, and Ioannis E. Venetis. In Proc. 11th ACM SIGPLAN Workshop on Erlang, pp 33-42, ACM Press, New York, 2012. (DOI).
ErLLVM: An LLVM backend for Erlang. Konstantinos Sagonas, Chris Stavrakakis, and Yiannis Tsiouris. In Proc. 11th ACM SIGPLAN Workshop on Erlang, pp 21-32, ACM Press, New York, 2012. (DOI).
Multiple Aggregate Entry Points for Ownership Types. Johan Östlund and Tobias Wrigstad. In ECOOP 2012 – Object-Oriented Programming, volume 7313 of Lecture Notes in Computer Science, pp 156-180, Springer Berlin/Heidelberg, 2012. (DOI).
On preserving term sharing in the Erlang virtual machine. Nikolaos Papaspyrou and Konstantinos Sagonas. In Proc. 11th ACM SIGPLAN Workshop on Erlang, pp 11-20, ACM Press, New York, 2012. (DOI).
Structured Aliasing. Tobias Wrigstad. In ECOOP 2012 – Object-Oriented Programming, volume 7313 of Lecture Notes in Computer Science, pp 232-232, Springer Berlin/Heidelberg, 2012. (DOI).
The Joelle Programming Language: Evolving Java Programs Along Two Axes of Parallel Eval. Johan Östlund, Stephan Brandauer, and Tobias Wrigstad. 2012 International Workshop on Languages for the Multi-core Era, 2012.
A type and effect system for deadlock avoidance in low-level languages. Prodromos Gerakios, Nikolaos Papaspyrou, and Konstantinos Sagonas. In Proc. 6th International Workshop on Types in Language Design and Implementation, pp 15-28, ACM Press, New York, 2011. (DOI).
Detection of asynchronous message passing errors using static analysis. Maria Christakis and Konstantinos Sagonas. In Practical Aspects of Declarative Languages, volume 6539 of Lecture Notes in Computer Science, pp 5-18, Springer Berlin/Heidelberg, 2011. (DOI).
Is the World Ready for Ownership Types? Is Ownership Types Ready for the World?. Tobias Wrigstad and Dave Clarke. International Workshop on Aliasing, Confinement and Ownership in object-oriented programming: IWACO at ECOOP (Vetenskapsrådet), 2011.
Owners as Ombudsmen: Multiple Aggregate Entry Points for Ownership Types. Tobias Wrigstad and Johan Östlund. International Workshop on Aliasing, Confinement and Ownership in object-oriented programming: IWACO at ECOOP (Vetenskapsrådet), 2011.
Regions as Owners: A Discussion on Ownership-based Effects in Practice. Johan Östlund and Tobias Wrigstad. International Workshop on Aliasing, Confinement and Ownership in object-oriented programming: IWACO at ECOOP, 2011.
A concurrent language with a uniform treatment of regions and locks. Prodromos Gerakios, Nikolaos Papaspyrou, and Konstantinos Sagonas. In Proc. 2nd Workshop on Programming Language Approaches to Concurrency and communication-cEntric Software: PLACES 2009, volume 17 of Electronic Proceedings in Theoretical Computer Science, pp 79-93, 2010. (DOI).
Race-free and memory-safe multithreading: Design and implementation in Cyclone. Prodromos Gerakios, Nikolaos Papaspyrou, and Konstantinos Sagonas. In Proc. 5th International Workshop on Types in Language Design and Implementation, pp 15-26, ACM Press, New York, 2010. (DOI).
Static detection of race conditions in Erlang. Maria Christakis and Konstantinos Sagonas. In Practical Aspects of Declarative Languages: PADL 2010, volume 5937 of Lecture Notes in Computer Science, pp 119-133, Springer-Verlag, Berlin, 2010. (DOI).
Tribal ownership. Nicholas Cameron, James Noble, and Tobias Wrigstad. In Proc. 1st International Conference on Systems, Programming, Languages, and Applications: Software for Humanity, volume 45:10 of ACM SIGPLAN Notices, pp 618-633, ACM Press, New York, 2010. (DOI).
Using static analysis to detect type errors and concurrency defects in Erlang programs. Konstantinos Sagonas. In Functional and Logic Programming: FLOPS 2010, volume 6009 of Lecture Notes in Computer Science, pp 13-18, Springer-Verlag, Berlin, 2010. (DOI).
Welterweight Java. Johan Östlund and Tobias Wrigstad. In Objects, Models, Components, Patterns, volume 6141 of Lecture Notes in Computer Science, pp 97-116, Springer-Verlag, Berlin, 2010. (DOI).
Automatic refactoring of Erlang programs. Konstantinos Sagonas and Thanassis Avgerinos. In Proc. 11th ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pp 13-23, ACM Press, New York, 2009. (DOI).

Updated  2015-10-23 14:46:16 by Stephan Brandauer.