Tobias Wrigstad
Professor at Department of Information Technology; Division of Computing Science
- Telephone:
- +46 18 471 10 72
- Mobile phone:
- +46 73 697 14 19
- E-mail:
- tobias.wrigstad@it.uu.se
- Visiting address:
- Hus 10, Regementsvägen 10
- Postal address:
- Box 337
751 05 UPPSALA
- ORCID:
- 0000-0002-4269-5408
Short presentation
I'm posting updates on everything exciting at my external page wrigstad.com.
Keywords
- programming languages
- parallel programming
- software engineering
- type systems
- concurrent programs
- memory management
Research
My research started in type systems for ownership and encapsulation, then moved away from types to dynamic programming languages (aka scripting languages), then combined these with types in gradual typing. I started working on actor languages, and then application of several of the results from my earlier type systems and ownership work to concurrency and parallelism in the form of capabilities, which were simpler yet more versatile. The quest for performance led me to garbage collection, memory management, and arrays.
My current research focuses on managed programming languages and their safe and efficient execution, through improved memory management techniques. There are several synergies with past work on capabilities as well as gradual typing which I mean to explore in the near future.
In addition to this, I have been studying scientific computing software from a software engineering perspective, which has led to large-scale analysis of code repositories of data science programs written predominantly in untyped languages, to find errors and support the development of correct, reusable, reproducable scientific computing.

Publications
Recent publications
-
Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
Part of Proceedings of the ACM on Programming Languages, 2026
- DOI for Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
- Download full text (pdf) of Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
-
Monk: opportunistic scheduling to delay horizontal scaling
Part of The Art, Science, and Engineering of Programming, 2025
- DOI for Monk: opportunistic scheduling to delay horizontal scaling
- Download full text (pdf) of Monk: opportunistic scheduling to delay horizontal scaling
-
Dynamic Region Ownership for Concurrency Safety
Part of Proceedings of the ACM on Programming Languages, p. 1565-1590, 2025
- DOI for Dynamic Region Ownership for Concurrency Safety
- Download full text (pdf) of Dynamic Region Ownership for Concurrency Safety
-
PyErlang: A Stepping Stone towards Behaviour-Oriented Concurrency in Python (Keynote)
Part of Proceedings of the 24th ACM SIGPLAN International Workshop on Erlang, p. 1-1, 2025
-
Decoupling Isolation and Concurrency: An Actor-Centric View of Behaviour-Oriented Concurrency
Part of Concurrent Programming, Open Systems and Formal Methods, Springer, 2025
All publications
Articles in journal
-
Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
Part of Proceedings of the ACM on Programming Languages, 2026
- DOI for Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
- Download full text (pdf) of Floating-Point Usage on GitHub: A Large-Scale Study of Statically Typed Languages
-
Monk: opportunistic scheduling to delay horizontal scaling
Part of The Art, Science, and Engineering of Programming, 2025
- DOI for Monk: opportunistic scheduling to delay horizontal scaling
- Download full text (pdf) of Monk: opportunistic scheduling to delay horizontal scaling
-
Dynamic Region Ownership for Concurrency Safety
Part of Proceedings of the ACM on Programming Languages, p. 1565-1590, 2025
- DOI for Dynamic Region Ownership for Concurrency Safety
- Download full text (pdf) of Dynamic Region Ownership for Concurrency Safety
-
Mark-Scavenge: Waiting for Trash to Take Itself Out
Part of Proceedings of the ACM on Programming Languages, 2024
- DOI for Mark-Scavenge: Waiting for Trash to Take Itself Out
- Download full text (pdf) of Mark-Scavenge: Waiting for Trash to Take Itself Out
-
Scheduling Garbage Collection for Energy Efficiency on Asymmetric Multicore Processors
Part of The Art, Science, and Engineering of Programming, 2024
- DOI for Scheduling Garbage Collection for Energy Efficiency on Asymmetric Multicore Processors
- Download full text (pdf) of Scheduling Garbage Collection for Energy Efficiency on Asymmetric Multicore Processors
-
When Concurrency Matters: Behaviour-Oriented Concurrency
Part of Proceedings of the ACM on Programming Languages, p. 1531-1560, 2023
- DOI for When Concurrency Matters: Behaviour-Oriented Concurrency
- Download full text (pdf) of When Concurrency Matters: Behaviour-Oriented Concurrency
-
Reference Capabilities for Flexible Memory Management
Part of Proceedings of the ACM on Programming Languages, p. 1363-1393, 2023
- DOI for Reference Capabilities for Flexible Memory Management
- Download full text (pdf) of Reference Capabilities for Flexible Memory Management
-
Deep Dive into ZGC: A Modern Garbage Collector in OpenJDK
Part of ACM Transactions on Programming Languages and Systems, 2022
-
Jupyter Notebooks on GitHub: Characteristics and Code Clones
Part of The Art, Science, and Engineering of Programming, 2021
- DOI for Jupyter Notebooks on GitHub: Characteristics and Code Clones
- Download full text (pdf) of Jupyter Notebooks on GitHub: Characteristics and Code Clones
-
Graph-theoretic approaches and tools for quantitatively assessing curricula coherence
Part of European Journal of Engineering Education, p. 344-363, 2020
-
Reshape your layouts, not your programs: A safe language extension for better cache locality
Part of Science of Computer Programming, 2020
-
Quantitative analysis of curricula coherence using directed graphs
Part of IFAC-PapersOnLine, p. 318-323, 2019
-
Bestow and Atomic: Concurrent programming using isolation, delegation and grouping
Part of The Journal of logical and algebraic methods in programming, p. 130-151, 2018
-
OOlong: A Concurrent Object Calculus for Extensibility and Reuse
Part of ACM SIGAPP Applied Computing Review, p. 47-60, 2018
-
Orca: GC and Type System Co-design for Actor Languages
Part of Proceedings of the ACM on Programming Languages, p. 1-28, 2017
- DOI for Orca: GC and Type System Co-design for Actor Languages
- Download full text (pdf) of Orca: GC and Type System Co-design for Actor Languages
-
Type-assisted automatic garbage collection for lock-free data structures
Part of SIGPLAN notices, p. 14-24, 2017
-
Minimal Ownership for Active Objects
Part of Lecture Notes in Computer Science, 2008
-
To Err or Not to Err?: Subtle Interactions Between Parameters for Common Python Library Functions
Books
Chapters in book
-
Decoupling Isolation and Concurrency: An Actor-Centric View of Behaviour-Oriented Concurrency
Part of Concurrent Programming, Open Systems and Formal Methods, Springer, 2025
-
Part of Active Object Languages, p. 59-91, Springer Nature, 2024
-
Vats: A safe, reactive storage abstraction
Part of Theory and Practice of Formal Methods, p. 140-154, Springer, 2016
-
Part of Aliasing in Object-Oriented Programming, p. 512-513, Springer Berlin/Heidelberg, 2013
-
Beyond the Geneva Convention on the Treatment of Object Aliasing
Part of Aliasing in Object-Oriented Programming, p. 1-6, Springer Berlin/Heidelberg, 2013
-
Part of Aliasing in Object-Oriented Programming, p. 15-58, Springer Berlin/Heidelberg, 2013
Conference papers
-
PyErlang: A Stepping Stone towards Behaviour-Oriented Concurrency in Python (Keynote)
Part of Proceedings of the 24th ACM SIGPLAN International Workshop on Erlang, p. 1-1, 2025
-
Dafny vs. Dala: Experience with Mechanising Language Design
Part of FTfJP 2024, p. 37-43, 2024
-
Part of Erlang 2024: Proceedings of the 23rd ACM SIGPLAN International Workshop on Erlang, p. 24-32, 2024
-
Mutator-Driven Object Placement using Load Barriers
Part of MPLR 2024: Proceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, 2024
-
Reference Counting Deeply Immutable Data Structures with Cycles: An Intellectual Abstract
Part of Proceedings of the 2024 ACM Sigplan International Symposium on Memory Management, ISMM 2024, p. 131-141, 2024
- DOI for Reference Counting Deeply Immutable Data Structures with Cycles: An Intellectual Abstract
- Download full text (pdf) of Reference Counting Deeply Immutable Data Structures with Cycles: An Intellectual Abstract
-
Heap Size Adjustment with CPU Control
Part of PROCEEDINGS OF THE 20TH ACM SIGPLAN INTERNATIONAL CONFERENCE ON MANAGED PROGRAMMING LANGUAGES AND RUNTIMES, MPLR 2023, p. 114-128, 2023
- DOI for Heap Size Adjustment with CPU Control
- Download full text (pdf) of Heap Size Adjustment with CPU Control
-
Compressed Forwarding Tables Reconsidered
Part of MPLR '22, p. 45-63, 2022
- DOI for Compressed Forwarding Tables Reconsidered
- Download full text (pdf) of Compressed Forwarding Tables Reconsidered
-
Analysing and Predicting Energy Consumption of Garbage Collectors in OpenJDK
Part of MPLR '22, p. 3-15, 2022
- DOI for Analysing and Predicting Energy Consumption of Garbage Collectors in OpenJDK
- Download full text (pdf) of Analysing and Predicting Energy Consumption of Garbage Collectors in OpenJDK
-
Dala: A Simple Capability-Based Dynamic Language Design For Data-Race Freedom
Part of PROCEEDINGS OF THE 2021 ACM SIGPLAN INTERNATIONAL SYMPOSIUM ON NEW IDEAS, NEW PARADIGMS, AND REFLECTIONS ON PROGRAMMING AND SOFTWARE, ONWARD! 2021, 2021
-
ThinGC: complete isolation with marginal overhead
Part of ISMM 2020, p. 74-86, 2020
-
Improving Program Locality in the GC using Hotness
Part of PLDI 2020, p. 301-313, 2020
-
Part of Proc. 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, p. 144-156, 2019
-
Run, Actor, Run: Towards Cross-Actor Language Benchmarking
Part of AGERE 2019 Proceedings of the 9th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control, p. 41-50, 2019
- DOI for Run, Actor, Run: Towards Cross-Actor Language Benchmarking
- Download full text (pdf) of Run, Actor, Run: Towards Cross-Actor Language Benchmarking
-
Godot: All the Benefits of Implicit and Explicit Futures
Part of 33rd European Conference on Object-Oriented Programming (ECOOP 2019), 2019
- DOI for Godot: All the Benefits of Implicit and Explicit Futures
- Download full text (pdf) of Godot: All the Benefits of Implicit and Explicit Futures
-
Progress Report: Exploring API Design for Capabilities for Programming with Arrays
Part of Proceedings Of The 12Th Workshop On Implementation, Compilation And Optimization Of Object-Oriented Languages, Programs And Systems (ICOOOLPS' 19), 2019
-
Courses-Concepts-Graphs as a Tool to Measure the Importance of Concepts in University Programmes
Part of 2019 18th European Control Conference (ECC), p. 3076-3083, 2019
-
Parallel Programming With Arrays in Kappa
Part of 5th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming, 2018
-
OOlong: An Extensible Concurrent Object Calculus
Part of SAC '18, p. 1022-1029, 2018
- DOI for OOlong: An Extensible Concurrent Object Calculus
- Download full text (pdf) of OOlong: An Extensible Concurrent Object Calculus
-
Attached and Detached Closures in Actors
Part of Proceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control, p. 54-61, 2018
-
C♭: A New Modular Approach to Implementing Efficient and Tunable Collections
Part of Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward! 2018), p. 57-71, 2018
-
Safely Abstracting Memory Layouts
Part of 20th Workshop on Formal Techniques for Java-like Programs, 2018
-
Part of 13th Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems Workshop, 2018
-
Correctness of a concurrent object collector for actor languages
Part of Programming Languages and Systems, p. 885-911, 2018
-
Relaxed Linear References for Lock-free Data Structures
Part of 31st European Conference on Object-Oriented Programming (ECOOP 2017), 2017
- DOI for Relaxed Linear References for Lock-free Data Structures
- Download full text (pdf) of Relaxed Linear References for Lock-free Data Structures
-
You can have it all: abstraction and good cache performance
Part of Onward! 2017, p. 148-167, 2017
- DOI for You can have it all: abstraction and good cache performance
- Download full text (pdf) of You can have it all: abstraction and good cache performance
-
Actors without Borders: Amnesty for Imprisoned State
p. 10-20, 2017
- DOI for Actors without Borders: Amnesty for Imprisoned State
- Download full text (pdf) of Actors without Borders: Amnesty for Imprisoned State
-
Mastery Learning-Like Teaching with Achievements
2017
-
Reference Capabilities for Concurrency & Scalability: an Experience Report
2017
-
Spencer: Interactive Heap Analysis for the Masses
Part of 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR 2017), p. 113-123, 2017
- DOI for Spencer: Interactive Heap Analysis for the Masses
- Download full text (pdf) of Spencer: Interactive Heap Analysis for the Masses
-
Mining for Safety using Interactive Trace Analysis
Part of Pre-Proceedings - Fifteenth International Workshop on Quantitative Aspects of Programming Languages and Systems, 2017
-
Kappa: Insights, Current Status and Future Work
2016
-
Reference Capabilities for Concurrency Control
Part of ECOOP 2016 — Object-Oriented Programming, 2016
-
Types for CAS: Relaxed Linearity with Ownership Transfer
2016
-
Towards Enabling Low-Level Memory Optimisations at the High-Level with Ownership Annotations
2016
-
Parallel Objects for Multicores: A Glimpse at the Parallel Language ENCORE
Part of Formal Methods for Multicore Programming, p. 1-56, 2015
-
Measuring Polymorphism in Python Programs
Part of DLS 2015, p. 114-128, 2015
-
Refined Ownership: Fine-grained controlled internal sharing
Part of Formal Methods for Multicore Programming, p. 179-210, 2015
-
Disjointness Domains for Fine-Grained Aliasing
p. 989-916, 2015
-
The Joelle Programming Language: Evolving Java Programs Along Two Axes of Parallel Eval
2012
-
Multiple Aggregate Entry Points for Ownership Types
Part of ECOOP 2012 – Object-Oriented Programming, p. 156-180, 2012
-
Part of ECOOP 2012 – Object-Oriented Programming, p. 232-232, 2012
-
Is the World Ready for Ownership Types? Is Ownership Types Ready for the World?
2011
-
Regions as Owners: A Discussion on Ownership-based Effects in Practice
2011
-
Owners as Ombudsmen: Multiple Aggregate Entry Points for Ownership Types
2011
-
Part of Objects, Models, Components, Patterns, p. 97-116, 2010
-
Part of Proc. 1st International Conference on Systems, Programming, Languages, and Applications, p. 618-633, 2010