Choreographies as Objects

We present Choral, the first framework for programming choreographies (multiparty protocols) that builds on top of mainstream programming abstractions: in Choral, choreographies are objects. Given a choreography that defines interactions among some roles (Alice, Bob, etc.), an implementation for each role in the choreography is automatically generated by a compiler. These implementations are libraries in pure Java, which developers can modularly compose in their own programs to participate correctly in choreographies.

[1]  Benjamin C. Pierce,et al.  Local type inference , 1998, POPL '98.

[2]  Flemming Nielson,et al.  Enforcing Availability in Failure-Aware Communicating Systems , 2016, FORTE.

[3]  Mirko Köhler,et al.  Distributed system development with ScalaLoci , 2018, Proc. ACM Program. Lang..

[4]  Tomas Petricek,et al.  Real-World Functional Programming: With Examples in F# and C# , 2010 .

[5]  Frank Pfenning,et al.  A symmetric modal lambda calculus for distributed computing , 2004, LICS 2004.

[6]  Kai Heussen,et al.  Choreographing cyber-physical distributed control systems for the energy sector , 2017, SAC.

[7]  Frank Pfenning,et al.  A symmetric modal lambda calculus for distributed computing , 2004, Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..

[8]  Juan-Carlos Cano,et al.  HOP: achieving efficient anonymity in MANETs by combining HIP, OLSR, and pseudonyms , 2006, OOPSLA 2006.

[9]  Lida Xu,et al.  The internet of things: a survey , 2014, Information Systems Frontiers.

[10]  James Murty,et al.  Programming Amazon web services - S3, EC2, SQS, FPS, and SimpleDB: outsource your infrastructure , 2008 .

[11]  Peter Thiemann,et al.  From sequential programs to multi-tier applications by program transformation , 2005, POPL '05.

[12]  Samik Basu,et al.  Deciding choreography realizability , 2012, POPL '12.

[13]  Remco M. Dijkman,et al.  Business Process Model and Notation - Third International Workshop, BPMN 2011, Lucerne, Switzerland, November 21-22, 2011. Proceedings , 2011, Business Process Modeling Notation.

[14]  K. Narendra Swaroop,et al.  A health monitoring system for vital signs using IoT , 2019, Internet Things.

[15]  Yuanyuan Zhou,et al.  Learning from mistakes: a comprehensive study on real world concurrency bug characteristics , 2008, ASPLOS.

[16]  Martin Odersky,et al.  Generics of a higher kind , 2008, OOPSLA.

[17]  Sung-Shik Jongmans,et al.  Exploring Type-Level Bisimilarity towards More Expressive Multiparty Session Types , 2020, ESOP.

[18]  Pascal Weisenburger,et al.  Distributed System Development with ScalaLoci , 2018 .

[19]  Erick Gallesio,et al.  Hop: a language for programming the web 2.0 , 2006, OOPSLA Companion.

[20]  Ivan Lanese,et al.  Dynamic Choreographies: Theory And Implementation , 2017, Log. Methods Comput. Sci..

[21]  Fabrizio Montesi,et al.  Microservices: Yesterday, Today, and Tomorrow , 2017, Present and Ulterior Software Engineering.

[22]  Nobuko Yoshida,et al.  Dynamic multirole session types , 2011, POPL '11.

[23]  Peter W. O'Hearn Experience Developing and Deploying Concurrency Analysis at Facebook , 2018, SAS.

[24]  Nobuko Yoshida,et al.  Compiling first-order functions to session-typed parallel code , 2020, CC.

[25]  Martin Odersky,et al.  Implementing higher-kinded types in Dotty , 2016, SCALA@SPLASH.

[26]  Davide Ancona,et al.  Behavioral Types in Programming Languages , 2016, Found. Trends Program. Lang..

[27]  Karl Crary,et al.  Type-Safe Distributed Programming with ML5 , 2007, TGC.

[28]  Whitfield Diffie,et al.  New Directions in Cryptography , 1976, IEEE Trans. Inf. Theory.

[29]  Dawson R. Engler,et al.  A few billion lines of code later , 2010, Commun. ACM.

[30]  Xin Qi,et al.  Fabric: a platform for secure distributed computation and storage , 2009, SOSP '09.

[31]  Philip Wadler,et al.  Links: Web Programming Without Tiers , 2006, FMCO.

[32]  Jan Mendling,et al.  Business Process Model and Notation , 2012, Lecture Notes in Business Information Processing.

[33]  Nobuko Yoshida,et al.  A Linear Decomposition of Multiparty Sessions for Safe Distributed Programming , 2017, ECOOP.

[34]  Paola Inverardi,et al.  Choreography Realizability Enforcement through the Automatic Synthesis of Distributed Coordination Delegates , 2017, Sci. Comput. Program..

[35]  Philip Wadler,et al.  Java generics and collections , 2006 .

[36]  Luís Cruz-Filipe,et al.  Choreographies in Practice , 2016, FORTE.

[37]  Fabrizio Montesi,et al.  Deadlock-freedom-by-design: multiparty asynchronous global programming , 2013, POPL.

[38]  Joshua Dunfield,et al.  Bidirectional Typing , 2019, ArXiv.

[39]  Rajeev Alur,et al.  Inference of message sequence charts , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[40]  Fabrizio Montesi,et al.  Ephemeral Data Handling in Microservices , 2019, 2019 IEEE International Conference on Services Computing (SCC).

[41]  Ivan Lanese,et al.  Foundations of Session Types and Behavioural Contracts , 2016, ACM Comput. Surv..

[42]  Flemming Nielson,et al.  Discretionary Information Flow Control for Interaction-Oriented Specifications , 2015, Logic, Rewriting, and Concurrency.

[43]  Romain Demangeon,et al.  Nested Protocols in Session Types , 2012, CONCUR.

[44]  Luca Padovani,et al.  On Global Types and Multi-party Sessions , 2011, FMOODS/FORTE.

[45]  Nobuko Yoshida,et al.  Structured Interactional Exceptions in Session Types , 2008, CONCUR.

[46]  Chao Cai,et al.  Towards the theoretical foundation of choreography , 2007, WWW '07.

[47]  Shan Lu,et al.  TaxDC: A Taxonomy of Non-Deterministic Concurrency Bugs in Datacenter Distributed Systems , 2016, ASPLOS.

[48]  Nobuko Yoshida,et al.  Multiparty asynchronous session types , 2008, POPL '08.

[49]  Nobuko Yoshida,et al.  Structured Communication-Centered Programming for Web Services , 2007, TOPL.