000191240 001__ 191240
000191240 005__ 20190316235754.0
000191240 037__ $$aREP_WORK
000191240 245__ $$aSpores, Formally
000191240 269__ $$a2013
000191240 260__ $$c2013
000191240 336__ $$aReports
000191240 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. In this report, we present the detailed soundness proofs of spores.
000191240 6531_ $$aclosures
000191240 6531_ $$afunctions
000191240 6531_ $$adistributed programming
000191240 6531_ $$aconcurrent programming
000191240 6531_ $$atype systems
000191240 700__ $$0242185$$g191683$$aMiller, Heather
000191240 700__ $$aHaller, Philipp$$g172057$$0240993
000191240 8564_ $$uhttps://infoscience.epfl.ch/record/191240/files/spores-formally.pdf$$zn/a$$s92195$$yn/a
000191240 909C0 $$xU10409$$0252187$$pLAMP
000191240 909CO $$qGLOBAL_SET$$pIC$$ooai:infoscience.tind.io:191240$$preport
000191240 917Z8 $$x191683
000191240 937__ $$aEPFL-REPORT-191240
000191240 973__ $$aEPFL
000191240 980__ $$aREPORT