@article {599,
	title = {Domains: Sharing state in the communicating event-loop actor model},
	journal = {Computer Languages, Systems \& Structures},
	volume = {45},
	year = {2016},
	pages = {132 - 160},
	abstract = {<p>Abstract The actor model is a message-passing concurrency model that avoids deadlocks and low-level data races by construction. This facilitates concurrent programming, especially in the context of complex interactive applications where modularity, security and fault-tolerance are required. The tradeoff is that the actor model sacrifices expressiveness and safety guarantees with respect to parallel access to shared state. In this paper we present domains as a set of novel language abstractions for safely encapsulating and sharing state within the actor model. We introduce four types of domains, namely immutable, isolated, observable and shared domains that each is tailored to a certain access pattern on that shared state. The domains are characterized with an operational semantics. For each we discuss how the actor model{\~A}{\textemdash}{\^A}{\textthreesuperior}s safety guarantees are upheld even in the presence of conceptually shared state. Furthermore, the proposed language abstractions are evaluated with a case study in Scala comparing them to other synchronization mechanisms to demonstrate their benefits in deadlock freedom, parallel reads, and enforced isolation.</p>},
	keywords = {Race-free mutation},
	issn = {1477-8424},
	doi = {http://dx.doi.org/10.1016/j.cl.2016.01.003},
	url = {http://www.sciencedirect.com/science/article/pii/S147784241600004X},
	author = {Joeri De Koster and Stefan Marr and Tom Van Cutsem and Theo D{\~A}{\textemdash}{\^A}{\textthreesuperior}Hondt}
}
@conference {601,
	title = {{Transactional Tasks: Parallelism in Software Transactions}},
	booktitle = {30th European Conference on Object-Oriented Programming (ECOOP 2016)},
	year = {2016},
	publisher = {Schloss Dagstuhl{\~A}{\textcent}{\^a}{\quotesinglbase}{\textlnot}{\^a}{\texteuro}{\oe}Leibniz-Zentrum fuer Informatik},
	organization = {Schloss Dagstuhl{\~A}{\textcent}{\^a}{\quotesinglbase}{\textlnot}{\^a}{\texteuro}{\oe}Leibniz-Zentrum fuer Informatik},
	address = {Rome. Italy},
	isbn = {978-3-95977-014-9},
	doi = {http://dx.doi.org/10.4230/LIPIcs.ECOOP.2016.23},
	url = {http://drops.dagstuhl.de/opus/volltexte/2016/6117},
	author = {Janwillem Swalens and Joeri De Koster and Wolfgang De Meuter}
}
@article {403,
	title = {Domains: Safe sharing among actors},
	journal = {Science of Computer Programming},
	volume = {98, Part 2},
	year = {2015},
	pages = {140 - 158},
	keywords = {Race-free mutation},
	issn = {0167-6423},
	doi = {http://dx.doi.org/10.1016/j.scico.2014.02.008},
	url = {http://www.sciencedirect.com/science/article/pii/S0167642314000495},
	author = {Joeri De Koster and Stefan Marr and Theo D{\textquoteright}Hondt and Tom Van Cutsem}
}
@conference {541,
	title = {A Formal Foundation for Trace-based JIT Compilers},
	booktitle = {Proceedings of the 13th International Workshop on Dynamic Analysis},
	year = {2015},
	publisher = {ACM},
	organization = {ACM},
	address = {New York, NY, USA},
	keywords = {dynamic analysis, operational semantics, tracing JIT compilation},
	isbn = {978-1-4503-3909-4},
	doi = {10.1145/2823363.2823369},
	url = {http://doi.acm.org/10.1145/2823363.2823369},
	author = {Maarten Vandercammen and Nicolay, Jens and Stefan Marr and Joeri De Koster and D{\textquoteright}Hondt, Theo and Coen De Roover}
}
@conference {540,
	title = {Just-in-time Data Structures},
	booktitle = {2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!)},
	year = {2015},
	publisher = {ACM},
	organization = {ACM},
	address = {New York, NY, USA},
	keywords = {algorithms, data structures, dynamic reclassification, performance},
	isbn = {978-1-4503-3688-8},
	doi = {10.1145/2814228.2814231},
	url = {http://doi.acm.org/10.1145/2814228.2814231},
	author = {De Wael, Mattias and Stefan Marr and Joeri De Koster and Sartor, Jennifer B. and Wolfgang De Meuter}
}
@proceedings {175,
	title = {Towards Composable Concurrency Abstractions},
	year = {2014},
	month = {04/2014},
	abstract = {<p>In the past decades, many different programming models for managing concurrency in applications have been proposed, such as the actor model, Communicating Sequential Processes, and Software Transactional Memory. The ubiquity of multi-core processors has made harnessing concurrency even more important. We observe that modern languages, such as Scala, Clojure, or F$\#$, provide not one, but multiple concurrency models that help developers manage concurrency. Large end-user applications are rarely built using just a single concurrency model. Programmers need to manage a responsive UI, deal with file or network I/O, asynchronous workflows, and shared resources. Different concurrency models facilitate different requirements. This raises the issue of how these concurrency models interact, and whether they are composable. After all, combining different concurrency models may lead to subtle bugs or inconsistencies. In this paper, we perform an in-depth study of the concurrency abstractions provided by the Clojure language. We study all pairwise combinations of the abstractions, noting which ones compose without issues, and which do not. We make an attempt to abstract from the specifics of Clojure, identifying the general properties of concurrency models that facilitate or hinder composition.</p>},
	keywords = {actors, atoms, Clojure, concurrency, CSP, multicore, STM, transactions},
	url = {http://soft.vub.ac.be/~jswalens/PLACES2014.pdf},
	author = {Janwillem Swalens and Stefan Marr and Joeri De Koster and Tom Van Cutsem}
}
@conference {126,
	title = {Tanks: Multiple Reader, Single Writer Actors},
	booktitle = {Proceedings of the 2013 Workshop on Programming Based on Actors, Agents, and Decentralized Control},
	year = {2013},
	publisher = {ACM},
	organization = {ACM},
	keywords = {actor model, shared state, synchronisation},
	isbn = {978-1-4503-2602-5},
	doi = {10.1145/2541329.2541331},
	url = {http://doi.acm.org/10.1145/2541329.2541331},
	author = {Joeri De Koster and Stefan Marr and Theo D{\textquoteright}Hondt and Tom Van Cutsem}
}
@conference {125,
	title = {Domains: safe sharing among actors},
	booktitle = {Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions},
	year = {2012},
	publisher = {ACM},
	organization = {ACM},
	keywords = {actor model, synchronization},
	isbn = {978-1-4503-1630-9},
	doi = {10.1145/2414639.2414644},
	author = {Joeri De Koster and Tom Van Cutsem and Theo D{\textquoteright}Hondt}
}
@conference {124,
	title = {Synchronization Views for Event-loop Actors},
	booktitle = {Proceedings of the 17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming},
	year = {2012},
	publisher = {ACM},
	organization = {ACM},
	address = {New York, NY, USA},
	keywords = {actor model, data parallelism, synchronization},
	isbn = {978-1-4503-1160-1},
	doi = {10.1145/2145816.2145873},
	url = {http://doi.acm.org/10.1145/2145816.2145873},
	author = {Joeri De Koster and Stefan Marr and Theo D{\textquoteright}Hondt}
}
