Choreographic programming: Difference between revisions

Content deleted Content added
Prs.mrc (talk | contribs)
m References for Choral
Add more languages
 
(9 intermediate revisions by 4 users not shown)
Line 71:
The inspiration for the syntax of choreographic programming languages can be traced back to [[security protocol notation]], also known as "Alice and Bob" notation.<ref name="itc"/> Choreographic programming has also been heavily influenced by standards for [[service choreography]] and [[sequence diagram|interaction diagrams]], as well as developments of the theory of [[process calculus|process calculi]].<ref name="itc"/><ref name="mp-langs"/><ref>{{Cite journal|doi=10.1145/2220365.2220367|title=Structured Communication-Centered Programming for Web Services|year=2012|last1=Carbone|first1=Marco|last2=Honda|first2=Kohei|last3=Yoshida|first3=Nobuko|journal=ACM Transactions on Programming Languages and Systems|volume=34|issue=2|pages=1–78|s2cid=15737118|doi-access=free}}</ref>
 
Choreographic programming is an active area of research. The paradigm has been used in the study of [[Information flow (information theory)|information flow]],<ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-319-23165-5_20|doi = 10.1007/978-3-319-23165-5_20|chapter = Discretionary Information Flow Control for Interaction-Oriented Specifications|title = Logic, Rewriting, and Concurrency|series = Lecture Notes in Computer Science|year = 2015|last1 = Lluch Lafuente|first1 = Alberto|last2 = Nielson|first2 = Flemming|last3 = Nielson|first3 = Hanne Riis|author3-link=Hanne Riis Nielson|volume = 9200|pages = 427–450|isbn = 978-3-319-23164-8| s2cid=32617923 |url = https://backend.orbit.dtu.dk/ws/files/119987994/Discretionary_Information_Flow_Control_for_Interaction_Oriented_Specifications.pdf}}</ref> [[parallel computing]],<ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-319-39570-8_8|doi = 10.1007/978-3-319-39570-8_8|chapter = Choreographies in Practice|title = Formal Techniques for Distributed Objects, Components, and Systems|series = Lecture Notes in Computer Science|year = 2016|last1 = Cruz-Filipe|first1 = Luís|last2 = Montesi|first2 = Fabrizio|volume = 9688|pages = 114–123|arxiv = 1602.08863|isbn = 978-3-319-39569-2|s2cid = 18067252}}</ref> [[cyber-physical system]]s,<ref>{{Cite book|chapter-url=https://doi.org/10.1145/3019612.3019656|doi=10.1145/3019612.3019656|chapter=Choreographing cyber-physical distributed control systems for the energy sector|title=Proceedings of the Symposium on Applied Computing|year=2017|last1=López|first1=Hugo A.|last2=Heussen|first2=Kai|pages=437–443|isbn=9781450344869|s2cid=39112346}}</ref><ref>{{Cite book|chapter-url=https://backendinria.orbithal.dtu.dkscience/ws/files/123934557/main.pdfhal-01432918|doi = 10.1007/978-3-319-39570-8_13|chapter = Enforcing Availability in Failure-Aware Communicating Systems|title = Formal Techniques for Distributed Objects, Components, and Systems|series = Lecture Notes in Computer Science|year = 2016|last1 = López|first1 = Hugo A.|last2 = Nielson|first2 = Flemming|last3 = Nielson|first3 = Hanne Riis|author3-link=Hanne Riis Nielson|volume = 9688|pages = 195–211|isbn = 978-3-319-39569-2| s2cid=12872876 }}</ref> [[adaptability|runtime adaptation]],<ref name="aiocj-paper">{{Cite journal|url=https://doi.org/10.23638/LMCS-13(2:1)2017|doi = 10.23638/LMCS-13(2:1)2017|year = 2017|last1 = Preda|first1 = Mila Dalla|last2 = Gabbrielli|first2 = Maurizio|last3 = Giallorenzo|first3 = Saverio|last4 = Lanese|first4 = Ivan|last5 = Mauro|first5 = Jacopo|title = Dynamic Choreographies: Theory and Implementation|journal = Logical Methods in Computer Science |volume = 13|issue = 2|s2cid = 5555662|arxiv = 1611.09067}}</ref> and [[system integration]].<ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-030-02671-4_2|doi = 10.1007/978-3-030-02671-4_2|chapter = ChIP: A Choreographic Integration Process|title = On the Move to Meaningful Internet Systems. OTM 2018 Conferences|series = Lecture Notes in Computer Science|year = 2018|last1 = Giallorenzo|first1 = Saverio|last2 = Lanese|first2 = Ivan|last3 = Russo|first3 = Daniel|volume = 11230|pages = 22–40|isbn = 978-3-030-02670-7| s2cid=53015580 |url = https://findresearcher.sdu.dk:8443/ws/files/153104697/ChIP.pdf}}</ref>
 
== Languages ==
* AIOCJ ([http://www.cs.unibo.it/projects/jolie/aiocj.html website]).<ref name="aiocj-paper"/> A choreographic programming language for [[Adaptation (computer science)|adaptable systems]] that produces code in [[Jolie (programming language)|Jolie]].
* Chor ([https://www.chor-lang.org/ website]).<ref name=":0">{{Cite book|chapter-url=https://doi.org/10.1145/2429069.2429101|doi=10.1145/2429069.2429101|chapter=Deadlock-freedom-by-design|title=Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '13|year=2013|last1=Carbone|first1=Marco|last2=Montesi|first2=Fabrizio|page=263|isbn=9781450318327|s2cid=15627190}}</ref> A [[session type|session-typed]] choreographic programming language that compilescompiled to [[microservices]] in [[Jolie (programming language)|Jolie]]. In the meantime superseded by Choral.
* Choral ([https://www.choral-lang.org/ website]).<ref>{{Cite journal |lastlast1=Giallorenzo |firstfirst1=Saverio |last2=Montesi |first2=Fabrizio |last3=Peressotti |first3=Marco |date=2024-01-16 |title=Choral: Object-oriented Choreographic Programming |url=https://dl.acm.org/doi/10.1145/3632398 |journal=ACM Trans. Program. Lang. Syst. |volume=46 |issue=1 |pages=1:1–1:59 |doi=10.1145/3632398 |issn=0164-0925|arxiv=2005.09520 }}</ref><ref>{{Citationcite arXiv |lastlast1=Giallorenzo |firstfirst1=Saverio |title=Choral: Object-Oriented Choreographic Programming |date=2023-10-19 |urleprint=https://arxiv.org/abs/2005.09520 |access-date=2024-11-17 |doi=10.48550/arXiv.2005.09520 |last2=Montesi |first2=Fabrizio |last3=Peressotti |first3=Marco|class=cs.PL }}</ref> An object-oriented choreographic programming language that compiles to libraries in [[Java (programming language)|Java]]. Choral is the first choreographic programming language with decentralised data structures and higher-order parameters.
* ChoRus ([https://lsd-ucsc.github.io/ChoRus/ website]). Library-level choreographic programming in [[Rust (programming language)|Rust]].
* Core Choreographies.<ref>{{Cite journal|url=https://doi.org/10.1016/j.tcs.2019.07.005|doi = 10.1016/j.tcs.2019.07.005|title = A core model for choreographic programming|year = 2020|last1 = Cruz-Filipe|first1 = Luís|last2 = Montesi|first2 = Fabrizio|journal = Theoretical Computer Science|volume = 802|pages = 38–66|s2cid = 199122777|arxiv = 1510.03271}}</ref> A core theoretical model for choreographic programming. A [[Proof assistant|mechanised]] implementation is available in [[Coq (software)|Coq]].<ref>{{Cite book|doi=10.4230/LIPIcs.ITP.2021.15|isbn=9783959771887|title=Formalising a Turing-Complete Choreographic Language in Coq|series=Leibniz International Proceedings in Informatics (LIPIcs)|year=2021|volume=193|pages=15:1–15:18|last1=Cohen|first1=Liron|last2=Kaliszyk|first2=Cezary|doi-access=free |s2cid=231802115}}</ref><ref>{{Cite journal |last1=Cruz-Filipe |first1=Luís |last2=Montesi |first2=Fabrizio |last3=Peressotti |first3=Marco |date=2023-05-27 |title=A Formal Theory of Choreographic Programming |journal=Journal of Automated Reasoning |language=en |volume=67 |issue=2 |pages=21 |doi=10.1007/s10817-023-09665-3 |s2cid=252090305 |issn=1573-0670|doi-access=free |arxiv=2209.01886 }}</ref><ref>{{Citationcite book |last1=Cruz-Filipe |first1=Luís |title=Certifying Choreography Compilation |date=2021 |url=https://link.springer.com/10.1007/978-3-030-85315-0_8 |work=Theoretical Aspects of Computing – ICTAC 2021 |volume=12819 |pages=115–133 |editor-last=Cerone |editor-first=Antonio |place=Cham |publisher=Springer International Publishing |language=en |doi=10.1007/978-3-030-85315-0_8 |isbn=978-3-030-85314-3 |access-date=2022-03-07 |last2=Montesi |first2=Fabrizio |last3=Peressotti |first3=Marco |series=Lecture Notes in Computer Science |arxiv=2102.10698 |s2cid=231985665 |editor2-last=Ölveczky |editor2-first=Peter Csaba}}</ref>
* HasChor ([https://github.com/gshen42/HasChor website]).<ref>{{Cite journal |last1=Shen |first1=Gan |last2=Kashiwa |first2=Shun |last3=Kuper |first3=Lindsey |date=2023-08-31 |title=HasChor: Functional Choreographic Programming for All (Functional Pearl) |journal=Proceedings of the ACM on Programming Languages |date=2023-08-31 |volume=7 |url=https://doi.org/10.1145/3607849 |journal=HasChor |volume=7 |issuepages=ICFP |pages=207:541–207:565 541–565|doi=10.1145/3607849|arxiv=2303.00924 }}</ref> A library for choreographic programming in [[Haskell]].
* Kalas.<ref>{{Cite journal |last1=Pohjola |first1=Johannes Åman |last2=Gómez-Londoño |first2=Alejandro |last3=Shaker |first3=James |last4=Norrish |first4=Michael |date=2022 |editor-last=Andronick |editor-first=June |editor2-last=de Moura |editor2-first=Leonardo |title=Kalas: A Verified, End-To-End Compiler for a Choreographic Language |url=https://drops.dagstuhl.de/opus/volltexte/2022/16736 |journal=13th International Conference on Interactive Theorem Proving (ITP 2022) |series=Leibniz International Proceedings in Informatics (LIPIcs) |___location=Dagstuhl, Germany |publisher=Schloss Dagstuhl – Leibniz-Zentrum für Informatik |volume=237 |pages=27:1–27:18 |doi=10.4230/LIPIcs.ITP.2022.27 |doi-access=free |isbn=978-3-95977-252-5|s2cid=251322644 }}</ref> A choreographic programming language with a verified compiler to CakeML.
* Pirouette.<ref name="GH21"/> A [[proof assistant|mechanised]] choreographic programming language theory with higher-order procedures.
* Klor ([https://github.com/lovrosdu/klor website]). Library-level choreographic programming in [[Clojure]].
 
* Tempo ([https://github.com/tempo-lang/tempo website]). A practical choreographic programming language that compiles to library source code for multiple target languages.
 
== See also ==