000191239 001__ 191239
000191239 005__ 20190316235754.0
000191239 037__ $$aCONF
000191239 245__ $$aSpores: A Type-Based Foundation for Closures in the Age of Concurrency and Distribution
000191239 269__ $$a2014
000191239 260__ $$c2014
000191239 336__ $$aConference Papers
000191239 520__ $$aFunctional programming (FP) is regularly touted as the way forward for bringing parallel, concurrent, and distributed programming to the mainstream. The popularity of the rationale behind this viewpoint (immutable data transformed by function application) has even lead to a number of object-oriented (OO) programming languages adopting functional features such as lambdas (functions) and thereby function closures. However, despite this established viewpoint of FP as an enabler, reliably distributing function closures over a network, or using them in concurrent environments nonetheless remains a challenge across FP and OO languages. This paper takes a step towards more principled distributed and concurrent programming by introducing a new closure-like abstraction and type system, called spores, that can guarantee closures to be serializable, thread-safe, or even have general, custom user-defined properties. Crucially, our system is based on the principle of encoding type information corresponding to captured variables in the type of a spore. We prove our type system sound, implement our approach for Scala, evaluate its practicality through an small empirical study, and show the power of these guarantees through a case analysis of real-world distributed and concurrent frameworks that this safe foundation for migratable closures facilitates.
000191239 6531_ $$aclosures
000191239 6531_ $$afunctions
000191239 6531_ $$adistributed programming
000191239 6531_ $$aconcurrent programming
000191239 6531_ $$atype systems
000191239 700__ $$0242185$$g191683$$aMiller, Heather
000191239 700__ $$0240993$$g172057$$aHaller, Philipp
000191239 700__ $$aOdersky, Martin$$g126003$$0241835
000191239 7112_ $$dJuly 28 - August 1, 2014$$cUppsala, Sweden$$aEuropean Conference on Object-Oriented Programming (ECOOP'14)
000191239 8564_ $$uhttps://infoscience.epfl.ch/record/191239/files/spores_1.pdf$$zPostprint$$s849877$$yPostprint
000191239 909C0 $$xU10409$$0252187$$pLAMP
000191239 909CO $$ooai:infoscience.tind.io:191239$$qGLOBAL_SET$$pconf$$pIC
000191239 917Z8 $$x191683
000191239 917Z8 $$x191683
000191239 917Z8 $$x191683
000191239 917Z8 $$x191683
000191239 937__ $$aEPFL-CONF-191239
000191239 973__ $$rREVIEWED$$sSUBMITTED$$aEPFL
000191239 980__ $$aCONF