跳到主要内容
研究文章
开放式访问
可用工件/v1.1
评估的工件和可重用/v1.1

特殊传送:使用邮箱类型编程

发布时间:2023年8月31日出版历史
跳过抽象节

摘要

邮箱支持的异步和单向通信模型是Erlang和Elixir等actor语言在实现可靠且可扩展的分布式系统方面取得了成功。虽然许多参与者可以向某些参与者发送消息,但只有参与者可以(有选择地)从其邮箱接收消息。尽管参与者消除了共享内存并发引起的许多问题,但他们仍然容易受到通信错误的影响,例如协议冲突和死锁。

邮箱类型是一种新颖的邮箱行为类型系统,由de’Liguoro和Padovani于2018年首次引入,用于进程演算,它将邮箱的内容捕获为交换正则表达式。由于别名和嵌套的求值上下文,从过程演算迁移到编程语言是一项挑战。本文介绍了Pat,这是第一个结合邮箱类型的编程语言设计,并描述了一个算法类型系统。我们基本上使用了拟线性类型来减少别名带来的复杂性。我们的算法类型系统必须是上下文共存的,通过一种新的反向双向类型的使用来实现,并且我们证明它相对于我们的声明类型系统来说是健全和完整的。我们实现了一个原型类型检查器,并使用它在工厂自动化案例研究和Savina actor基准测试套件中的一系列示例中演示Pat的表达能力。

工具书类

  1. 阿马尔·艾哈迈德(Amal Ahmed)、马修·福莱特(Matthew Fluet)和格雷格·莫里塞特(Greg Morrisett)。2007.L^3:带位置的线性语言。芬丹。Informaticae,77,4(2007),397-449。谷歌学者谷歌学者数字图书馆数字图书馆
  2. 贝尔纳多·阿尔梅达(Bernardo Almeida)、安德烈亚·莫迪多(Andrea Mordido)、彼得·蒂曼(Peter Thiemann)和瓦斯科·瓦康塞洛斯(Vasco T.Vasconcelos)。2022.具有无上下文会话类型的多态lambda演算。信息计算。,289,第(2022)部分,104948。https://doi.org/10.1016/0304-3975(83)90059-2谷歌学者谷歌学者交叉引用交叉引用
  3. Roberto M.Amadio、Ilaria Castellani和Davide Sangiorgi,1998年。关于异步pi演算的双模拟。西奥。计算。科学。,195, 2 (1998), 291–324. https://doi.org/10.1016/S0304-3975(97)00223-5谷歌学者谷歌学者数字图书馆数字图书馆
  4. 大卫·安科纳、维维亚娜·博诺、马里奥·布拉维蒂、乔安娜·坎波斯、朱塞佩·卡斯塔尼亚、皮尔雷·马洛·德尼·卢、西蒙·盖伊、尼尔斯·盖斯伯特、埃琳娜·贾奇诺、雷蒙德·胡、艾纳尔·布罗奇·约翰森、弗朗西斯科·马丁斯、维维娅娜·马斯卡迪、法布里奇奥·蒙泰西、鲁米亚娜·内科娃、尼古拉斯·吴、卢卡·帕多瓦尼、瓦斯科·瓦斯科特洛斯和诺布科·吉田。2016.编程语言中的行为类型。已找到。趋势计划。Lang.,3,2-3(2016),95-230。https://doi.org/10.1561/250000031谷歌学者谷歌学者数字图书馆数字图书馆
  5. Mehdi Bagherzadeh和Hridesh Rajan。2017.订单类型:关于异步消息传递并发中消息竞争的静态推理。在AGERE@飞溅。ACM,21–30岁。https://doi.org/10.1145/3141834.3141837谷歌学者谷歌学者数字图书馆数字图书馆
  6. Benedikt Bollig、Peter Habermehl、Martin Leucker和Benjamin Monmege。2013.学习注册自动机的新方法。语言理论发展(LNCS,第7907卷)。施普林格,118–130岁。https://doi.org/10.1007/978-3642-38771-5_12谷歌学者谷歌学者交叉引用交叉引用
  7. Janusz A Brzozowski。1964.正则表达式的导数。美国医学会杂志(JACM),11,4(1964),481-494。https://doi.org/10.1145/321239.321249谷歌学者谷歌学者数字图书馆数字图书馆
  8. Avik Chaudhuri,2009年。Concurrent Haskell中的ConcurrentML库。在ICFP中。美国医学会,269-280。https://doi.org/10.1145/1596550.1596589谷歌学者谷歌学者数字图书馆数字图书馆
  9. 玛丽亚·克里斯塔基斯和康斯坦蒂诺斯·萨戈纳斯。2011.使用静态分析检测异步消息传递错误。PADL(计算机科学讲义,第6539卷)。施普林格,5-18岁。https://doi.org/10.1145/1140335.1140356谷歌学者谷歌学者数字图书馆数字图书馆
  10. 卢卡·西科内和卢卡·帕多瓦尼。2022.公平终止二进制会话。程序。ACM计划。Lang.,6,POPL(2022),1-30。https://doi.org/10.1145/3498666谷歌学者谷歌学者数字图书馆数字图书馆
  11. 西尔维娅·克拉法和卢卡·帕多瓦尼。2017.面向类型状态编程的化学方法。ACM事务处理。程序。语言系统。,39, 3 (2017), 13:1–13:45. https://doi.org/10.1145/3064849谷歌学者谷歌学者数字图书馆数字图书馆
  12. Frank S.de Boer、Dave Clarke和Einar Broch Johnsen。2007年,《未来完整指南》。ESOP(计算机科学讲义,第4421卷)。弹簧,316–330。https://doi.org/10.1007/978-3-540-71316-6_22谷歌学者谷歌学者交叉引用交叉引用
  13. 莱昂纳多·门登萨·德·莫拉和尼古拉·比约纳。2008年。Z3:高效的SMT解决方案。TACAS(计算机科学讲义,第4963卷)。施普林格,337-340。https://doi.org/10.1007/978-3-540-78800-3_24谷歌学者谷歌学者交叉引用交叉引用
  14. 乌戈·德利古奥罗和卢卡·帕多瓦尼。2018.无序交互的邮箱类型。在ECOOP(LIPIcs,第109卷)中。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),15:1–15:28。https://doi.org/10.4230/LIPIcs.ECOOP.2018.15谷歌学者谷歌学者交叉引用交叉引用
  15. Jana Dunfield和Neel Krishnaswami。2022.双向打字。ACM计算。调查。,54, 5 (2022), 98:1–98:38. https://doi.org/10.1145/3450952谷歌学者谷歌学者数字图书馆数字图书馆
  16. Robert Ennals、Richard Sharp和Alan Mycroft。2004.包处理的线性类型。在ESOP(计算机科学讲义,第2986卷)。施普林格,204-218。https://doi.org/10.1007/978-3-540-24725-8_15谷歌学者谷歌学者交叉引用交叉引用
  17. 塞巴斯蒂安·埃尔德维格(Sebastian Erdweg)、奥利弗·布拉切瓦克(Oliver Bracevac)、埃德利拉·库奇(Edlira Kuci)、马蒂亚斯·克雷布斯(Matthias Krebs)和米拉·梅齐尼(Mira Mezini)。2015年,类型规则的联合上下文制定及其在增量类型检查中的应用。在OOPSLA中。美国医学会,880-897。https://doi.org/10.1145/2814270.2814277谷歌学者谷歌学者数字图书馆数字图书馆
  18. 塞德里克·福内特和乔治·冈瑟。1996.反射CHAM和联合演算。在POPL中。ACM出版社,372–385。https://doi.org/10.1145/237721.237805谷歌学者谷歌学者数字图书馆数字图书馆
  19. 西蒙·福勒。2016年,多方会议参与者的Erlang实施。在ICE(EPTCS,第223卷)中。36–50. https://doi.org/10.4204/EPTCS.223.3谷歌学者谷歌学者交叉引用交叉引用
  20. 西蒙·福勒(Simon Fowler)、邓肯·保罗·阿塔德(Duncan Paul Attard)、弗朗西塞克·索乌尔(Franciszek Sowul)、西蒙·盖伊(Simon J.Gay)和菲尔·特林德(Phil Trinder)。2023.“特殊交付:使用邮箱类型编程”的工件。https://doi.org/10.5281/zenodo.8126809谷歌学者谷歌学者数字图书馆数字图书馆
  21. 西蒙·福勒(Simon Fowler)、邓肯·保罗·阿塔德(Duncan Paul Attard)、弗朗西塞克·索乌尔(Franciszek Sowul)、西蒙·盖伊(Simon J.Gay)和菲尔·特林德(Phil Trinder)。2023.特殊交付:邮箱类型编程(扩展版)。arxiv:2306.12935。谷歌学者谷歌学者
  22. 西蒙·福勒(Simon Fowler)、温·科克(Wen Kokke)、奥内拉·达达(Ornela Dardha)、萨姆·林德利(Sam Lindley)和杰·加勒特·莫里斯(J.Garrett Morris),2023年。顺利分离会话。计算机科学中的逻辑方法,13,3(2023),https://doi.org/10.46298/lmcs-19(3:3)2023谷歌学者谷歌学者交叉引用交叉引用
  23. 西蒙·福勒(Simon Fowler)、萨姆·林德利(Sam Lindley)和菲利普·沃德勒(Philip Wadler)。2017.混合隐喻:演员作为渠道和渠道作为演员。在ECOOP(LIPIcs,第74卷)中。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),11:1-11:28。https://doi.org/10.4230/LIPIcs.ECOOP.2017.11谷歌学者谷歌学者交叉引用交叉引用
  24. Simon J.Gay和Vasco Thudichum Vasconcelos。2010.异步会话类型的线性类型理论。J.功能。程序。,20, 1 (2010), 19–50. https://doi.org/10.1017/S09567968099990268谷歌学者谷歌学者数字图书馆数字图书馆
  25. Rosita Gerbo和Luca Padovani。2019.Java并发面向Typestate的编程。地点@ETAPS(EPTCS,第291卷)。24–34. https://doi.org/10.4204/EPTCS.291.3谷歌学者谷歌学者交叉引用交叉引用
  26. 西莫·金斯伯格和埃德温·斯潘尼尔。1966.半群、普雷斯伯格公式和语言。太平洋数学杂志,16,2(1966),285-296。https://doi.org/10.2307/2271032谷歌学者谷歌学者交叉引用交叉引用
  27. 约瑟夫·哈里森(Joseph R.Harrison)。2018.自动检测核心Erlang消息传递错误。在Erlang Workshop。ACM,37–48。https://doi.org/10.1145/3239332.3242765谷歌学者谷歌学者数字图书馆数字图书馆
  28. 保罗·哈维、西蒙·福勒、奥内拉·达达和西蒙·盖伊。2021.演员语言中安全运行时适应的多方会话类型。在ECOOP(LIPIcs,第194卷)中。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),10:1–10:30。谷歌学者谷歌学者
  29. 何建森、菲利普·沃德勒和菲利普·特林德。2014.排版演员:从Akka到TAkka。SCALA@环保。ACM,23–33岁。https://doi.org/10.1145/2637647.2637651谷歌学者谷歌学者数字图书馆数字图书馆
  30. Kohei Honda公司。1993.二元交互类型。CONCUR(计算机科学讲义,第715卷)。施普林格,509-523。https://doi.org/10.1007/3-540-57208-235谷歌学者谷歌学者交叉引用交叉引用
  31. Kohei Honda、Vasco Thudichum Vasconcelos和Makoto Kubo。1998年,基于结构化通信的程序设计的语言原语和类型学科。ESOP(计算机科学讲义,第1381卷)。施普林格,122-138。https://doi.org/10.1007/BFb0053567谷歌学者谷歌学者交叉引用交叉引用
  32. 本田小平、吉田信子和卡博尼。2016.多方异步会话类型。J.ACM,63,1(2016),9:1–9:67。https://doi.org/10.1145/2827695谷歌学者谷歌学者数字图书馆数字图书馆
  33. 马克·W·霍普金斯和德克斯特·科岑。1999.交换Kleene代数中的Parikh定理。在LICS中。IEEE计算机学会,394–401。https://doi.org/10.1109/LICS.1999.782634谷歌学者谷歌学者交叉引用交叉引用
  34. Raymond Hu和Nobuko Yoshida。2017.多方会话类型中的显式连接操作。FASE(计算机科学讲义,10202卷)。施普林格,116-133。https://doi.org/10.1007/978-3-642-21464-6_7谷歌学者谷歌学者数字图书馆数字图书馆
  35. Raymond Hu、Nobuko Yoshida和Kohei Honda。2008.Java中基于会话的分布式编程。ECOOP(计算机科学讲义,第5142卷)。施普林格,516–541。https://doi.org/10.1007/978-3-540-70592-5_22谷歌学者谷歌学者数字图书馆数字图书馆
  36. 汉斯·海特尔、伊万·拉内斯、瓦斯科·瓦斯科特洛斯、路易斯·凯雷斯、马可·卡蓬、皮尔雷·马洛·德尼埃卢、迪米特里斯·莫斯特鲁斯、卢卡·帕多瓦尼、安东尼奥·拉瓦拉、埃米利奥·托斯托、雨果·托雷斯·维埃拉和吉安路易吉·扎瓦塔罗。2016.会话类型和行为合同基础。ACM计算。调查。,49, 1 (2016), 3:1–3:36. https://doi.org/10.1145/2873052谷歌学者谷歌学者数字图书馆数字图书馆
  37. Shams Mahmood Imam和Vivek Sarkar。2014年,Savina-演员基准套件:对演员库进行实证评估。在AGERE@飞溅。ACM,67–80岁。https://doi.org/10.1145/2687357.2687368谷歌学者谷歌学者数字图书馆数字图书馆
  38. 萨沙·尤里奇。2019.灵丹妙药。曼宁。谷歌学者谷歌学者
  39. Eduard Kamburjan、Crystal Chang Din和Zzu-Chun Chen。2016。基于会话的使用未来的基于参与者的语言的合成分析。ICFEM(计算机科学讲义,第10009卷)。296–312. https://doi.org/10.1007/978-3-319-47846-3_19谷歌学者谷歌学者交叉引用交叉引用
  40. 小林直树。1999.准线性类型。在POPL中。ACM,29–42。https://doi.org/10.1145/292540.292546谷歌学者谷歌学者数字图书馆数字图书馆
  41. Edlira Kuci、Sebastian Erdweg、Oliver Bracevac、Andi Bejleri和Mira Mezini。2017年,Featherweight Java的Co-contextual类型检查器。在ECOOP(LIPIcs,第74卷)中。达格斯图尔-莱布尼兹·泽特鲁姆宫(Schloss Dagstuhl-Leibniz-Zentrum für Informatik),18:1–18:26。https://doi.org/10.4230/LIPIcs.ECOOP.2017.18谷歌学者谷歌学者交叉引用交叉引用
  42. 保罗·布莱恩·利维(Paul Blain Levy)、约翰·鲍尔(John Power)和哈约·泰勒克(Hayo Thielecke)。2003.用按调用值编程语言建模环境。信息与计算,185,2(2003),182-210。https://doi.org/10.1016/S0890-5401(03)00088-9谷歌学者谷歌学者数字图书馆数字图书馆
  43. Sam Lindley和J.Garrett Morris,2015年。命题作为会话的语义学。ESOP(计算机科学讲义,第9032卷)。施普林格,560–584。https://doi.org/10.1007/978-3-662-46669-8_23谷歌学者谷歌学者交叉引用交叉引用
  44. 康诺·麦克布莱德(Conor McBride)。2018年。每个人都必须有所成就。MSFP@FSCD(EPTCS,第275卷)。53–69. https://doi.org/10.4204/EPTCS.275.6谷歌学者谷歌学者交叉引用交叉引用
  45. Dimitris Mostrous和Vasco Thudichum Vasconcelos。2011.羽量级Erlang的训练打字。《协调》(计算机科学讲义,第6721卷)。施普林格,95-109。谷歌学者谷歌学者交叉引用交叉引用
  46. 鲁米亚纳·内科娃(Rumyana Neykova)和吉田信子(Nobuko Yoshida)。2017年,让它复苏:多方协议引发的复苏。在CC.ACM中,98–108。https://doi.org/10.1145/3033019.3033031谷歌学者谷歌学者数字图书馆数字图书馆
  47. 鲁米亚纳·内科娃(Rumyana Neykova)和吉田信子(Nobuko Yoshida)。2017.多方会议参与者。计算机科学中的逻辑方法,13,1(2017),https://doi.org/10.23638/LMCS-13(1:17)2017谷歌学者谷歌学者交叉引用交叉引用
  48. 利奥·奥斯瓦尔德(Leo Osvald)、格里戈里·埃瑟特尔(Grégory M.Essertel)、西伦·吴(Xilun Wu)、利利亚姆·冈萨雷斯·阿莱翁(Lilliam I.González Alayón)和蒂亚克·隆普夫。2016.绅士化走得太远了?经济实惠的第二类价值观,带来乐趣和(协同)效果。在OOPSLA中。ACM,234–251。谷歌学者谷歌学者
  49. 卢卡·帕多瓦尼。2014.线性π-演算的复合型和等递归型重建。FoSSaCS(计算机科学讲义,第8412卷)。施普林格,88–102。https://doi.org/10.1007/978-3-642-54830-7_6谷歌学者谷歌学者交叉引用交叉引用
  50. 卢卡·帕多瓦尼。2018.无死锁类型状态定向编程。艺术科学。工程计划。,2, 3 (2018), 15. https://doi.org/10.22152/programming-journal.org/2018/2/15谷歌学者谷歌学者交叉引用交叉引用
  51. 卢卡·帕多瓦尼。2018.邮箱微积分检查器。https://boystrange.github.io/mcc网址/谷歌学者谷歌学者
  52. 卢卡·帕多瓦尼。2018.并发对象协议的类型检查算法。《程序设计中的逻辑和代数方法杂志》,100(2018),16-35。发行编号:2352-2208https://doi.org/10.1016/j.jlamp.2018.06.001谷歌学者谷歌学者交叉引用交叉引用
  53. 卢卡·帕多瓦尼。2019.无上下文会话类型推断。ACM事务处理。程序。语言系统。,41, 2 (2019), 9:1–9:37. https://doi.org/10.1145/3229062谷歌学者谷歌学者数字图书馆数字图书馆
  54. 罗希特·帕里赫。1966.无语境语言。美国医学会期刊,13,4(1966),570-581。https://doi.org/10.1145/321356.321364谷歌学者谷歌学者数字图书馆数字图书馆
  55. 本杰明·皮尔斯和大卫·特纳。2000.局部类型推断。ACM事务处理。程序。语言系统。,22,1(2000),1-44。https://doi.org/10.1145/345099.345100谷歌学者谷歌学者数字图书馆数字图书馆
  56. 安德鲁·皮特斯(Andrew M.Pitts)。存在类型:逻辑关系和操作等价。ICALP(计算机科学讲义,第1443卷)。施普林格,309-326。https://doi.org/10.1007/BFb0055063谷歌学者谷歌学者交叉引用交叉引用
  57. Arjen Rouvoet、Robbert Krebbers和Eelco Visser。2021.带有匿名标签的本质类型编译。程序。ACM计划。Lang.,5,POPL(2021),1-28。https://doi.org/10.1145/3434303谷歌学者谷歌学者数字图书馆数字图书馆
  58. 阿尔卡斯特·斯卡拉斯(Alceste Scalas)、吉田信子(Nobuko Yoshida)和埃利亚斯·贝努西(Elias Benussi)。2019.验证具有相关行为类型的消息传递程序。在PLDI中。美国医学会,502-516。https://doi.org/10.1145/3314221.3322484谷歌学者谷歌学者数字图书馆数字图书馆
  59. 杰勒德·塔博内(Gerard Tabone)和阿德里安·弗兰卡兰扎(Adrian Francalanza)。2021.Elixir中的会话类型。在AGERE@飞溅。ACM,12-23。https://doi.org/10.1145/34866011.3486708谷歌学者谷歌学者数字图书馆数字图书馆
  60. 杰勒德·塔博内(Gerard Tabone)和阿德里安·弗兰卡兰扎(Adrian Francalanza)。2022.ElixirST的会话保真度:Elixir模块的基于会话的类型系统。在ICE(EPTCS,第365卷)中。17–36. https://doi.org/10.4204/EPTCS.365.2谷歌学者谷歌学者交叉引用交叉引用
  61. Kaku Takeuchi、Kohei Honda和Makoto Kubo。1994年。基于交互的语言及其类型系统。在巴黎(计算机科学讲义,第817卷)。施普林格,398–413。https://doi.org/10.1007/3-540-58184-7_118谷歌学者谷歌学者交叉引用交叉引用
  62. 萨米拉·塔沙罗菲(Samira Tasharofi)、彼得·丁格斯(Peter Dinges)和拉尔夫·约翰逊(Ralph E.Johnson)。2013.为什么Scala开发人员将演员模型与其他并发模型混合?ECOOP(计算机科学讲义,第7920卷)。施普林格,302-326。https://doi.org/10.1007/978-3-642-39038-8_13谷歌学者谷歌学者数字图书馆数字图书馆
  63. 菲尔·特林德(Phil Trinder)、娜塔莉亚·切奇纳(Natalia Chechina)、尼古拉·帕帕斯普鲁(Nikolaos Papaspyrou)、康斯坦蒂诺斯·萨戈纳斯(Konstantinos Sagonas)、西蒙·汤普森(Simon Thompson)、斯蒂芬·亚当斯(Stephen Adams)、斯塔夫罗斯·阿罗尼斯(Stav。2017.可扩展性可靠:提高Erlang分布式actor平台的可扩展性。《美国计算机学会编程语言与系统学报》(TOPLAS),39,4(2017),1-46。https://doi.org/10.1145/3107937谷歌学者谷歌学者数字图书馆数字图书馆
  64. 瓦斯科·T·瓦斯康塞洛斯。2012.会话类型基础。信息计算。,217 (2012), 52–70. https://doi.org/10.1016/j.ic.2012.05.002谷歌学者谷歌学者数字图书馆数字图书馆
  65. 菲利普·沃德勒。2014年,提案作为会议。J.功能。程序。,24,2-3(2014),384–418。https://doi.org/10.1017/S09567968140001X谷歌学者谷歌学者交叉引用交叉引用
  66. 诺姆·齐尔伯格(Noam Zeilberger)。2015.平衡多态性和线性lambda演算。在TYPES上交谈。http://noamz.org/papers/linprin.pdf谷歌学者谷歌学者

索引术语

  1. 特殊传送:使用邮箱类型编程

          建议

          评论

          登录选项

          检查您是否可以通过登录凭据或您的机构访问本文。

          登录

          完全访问权限

          PDF格式

          以PDF文件查看或下载。

          PDF格式

          电子阅读器

          使用eReader联机查看。

          电子阅读器