×

实时MLton:实时功能程序的标准ML运行时。 (英语) Zbl 1522.68129号

摘要:人们对在实时和嵌入式环境中利用函数式编程语言越来越感兴趣。函数式语言很有吸引力,因为许多语言都是严格类型的,易于使用形式化方法,变异有限,并且具有简单但功能强大的并发控制机制。尽管最近有许多针对嵌入式和实时系统的专用领域特定语言的建议,但在为嵌入式和实时程序设计采用更通用的函数语言方面,进展相对较小。在本文中,我们介绍了我们当前在嵌入式和实时领域中利用标准ML(SML)的工作。具体来说,我们详细介绍了修改MLton的经验,MLton是一个针对SML的全程序优化编译器,用于此类环境。我们主要关注语言运行时,返工线程子系统、对象模型和垃圾收集器。我们提供了一个基于雷达的飞机碰撞探测器的初步结果,该探测器被移植到SML。

MSC公司:

68甲18 函数编程和lambda演算
68甲15 编程语言理论
68N20型 编译与解释理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Anderson,B.(2013)《在Rust中放弃分段堆垛》。网址:https://mail.mozilla.org/pipermail/rust-dev/2013-November/006314.html。
[2] Appel,A.W.&Macqueen,D.B.(1987)标准ML编译器。《函数编程语言与计算机体系结构》,Kahn,G.(ed)。FPCA 1987。计算机科学讲义,第274卷。柏林,海德堡:施普林格。https://doi.org/10.1007/3-540-18317-5_17。 ·Zbl 0624.68009号
[3] Appel,A.W.和Shao,Z.(1996)对带有闭包的语言的堆栈与堆成本的实证和分析研究。J.功能。程序.647-74。https://doi.org/10.1017/S095679680000157X。
[4] Arts,T.、Benac Earle,C.和Derrick,J.(2004)开发用于资源锁定的验证Erlang程序。国际期刊软件。技术工具。Transf.5(2),205-220。
[5] Audebaud,P.和Paulin-Mohring,C.(2009)Coq中随机算法的证明。科学。计算。程序。74(8), 568-589. 程序构造数学专刊(MPC 2006)·Zbl 1178.68667号
[6] Bacon,D.F.、Cheng,P.和Rajan,V.T.(2003)《节拍器中的碎片和空间消耗控制》,节拍器是Java的实时垃圾收集器。2003年ACM SIGPLAN嵌入式系统语言、编译器和工具会议论文集。LCTES’03年。ACM,第81-92页。
[7] Baker,T.P.&Shaw,A.(1988)循环执行模型和Ada。诉讼中。实时系统研讨会,第120-129页。
[8] Ballabriga,C.,Cassé,H.,Rochange,C.&Sainrat,P.(2010)OTAWA:自适应WCET分析的开放工具箱。《嵌入式和无处不在系统的软件技术》,Min,S.L.,Pettit,R.,Puschner,P.&Ungerer,T.(编辑)。柏林,海德堡:施普林格,第35-46页。
[9] Bruggeman,C.、Waddell,O.和Dybvig,R.K.(1996)在一杆接续中代表控制。SIGPLAN非.31(5),99-107。
[10] Cheney,C.J.(1970)非递归列表压缩算法。Commun公司。ACM13(11),第677-678页·Zbl 0215.28002号
[11] Cheng,P.(2001)对称多处理器的可伸缩实时并行垃圾收集。博士论文,美国AAI3179039。
[12] Clinger,W.D.、Hartheimer,A.H.&Ost,E.M.(1999)一流延续的实施策略。高阶符号。计算12(1),7-45·兹比尔0935.68004
[13] Deters,M.和Cytron,R.K.(2002)用于实时Java的作用域内存区域的自动发现。第三届记忆管理国际研讨会论文集。ISMM'02年。ACM,第132-142页。
[14] Dijkstra,E.W.,Lamport,L.,Martin,A.J.,Scholten,C.S.&Steffens,E.F.M.(1978)《现场垃圾收集:合作实践》。Commun公司。ACM21(11),966-975·Zbl 0386.68024号
[15] Elsman,M.(1999)《程序模块、单独编译和模块间优化》。迪库。
[16] Elsman,M.&Hallenberg,N.(2020)《关于ML中整合基于区域的内存管理和代垃圾收集的效果》。《声明语言的实际方面》,Komendantskaya,E.&Liu,Y.A.(编辑)。施普林格国际出版公司,第95-112页。
[17] .(2021)Erlang编程语言官方网站。网址:http://www.erlang.org/。
[18] Fenichel,R.R.&Yochelson,J.C.(1969)虚拟内存计算机系统的口齿不清垃圾收集器。Commun公司。ACM12(11),611-612·Zbl 0183.45504号
[19] Gay,D.&Aiken,A.(2001)地区语言支持。SIGPLAN不是.36(5),70-80。
[20] .(2013)连续堆栈。网址:https://docs.google.com/document/d/1wAaf1rYoM4S4gtnPh0zOlGzWtrZFQ5suE8qr2sD8uWQ/pub。
[21] Goldstein,S.C.(1997)《细粒度并行编程的懒惰线程编译器和运行时结构》。加州大学伯克利分校博士论文。
[22] Gosling,J.和Bollella,G.(2000)《Java实时规范》。Addison-Wesley Longman出版公司。
[23] Hallenberg,N.、Elsman,M.和Tofte,M.(2002a)结合区域推断和垃圾收集。在ACM SIGPLAN编程语言设计与实现会议(PLDI’02)上。德国柏林:ACM出版社·Zbl 1075.68563号
[24] Hallenberg,N.、Elsman,M.和Tofte,M.(2002b)结合区域推断和垃圾收集。2002年ACM SIGPLAN编程语言设计和实现会议记录。02年PLDI。ACM,第141-152页。
[25] Hammond,K.(2001)休谟的动态特性:一种基于功能的并发语言,具有有限的时间和空间行为。《函数语言的实现:第十二届国际研讨会》,2000年9月4日至7日,德国亚琛IFL 2000。柏林,海德堡:施普林格,第122-139页·兹伯利0987.68906
[26] Hammond,K.(2003)是时候进行实时函数编程了吗?在2003年9月11日至12日于英国爱丁堡举行的第四届函数式编程趋势研讨会的修订论文选集中,Gilmore,S.(ed),第4卷。《智力》,第1-18页。
[27] Hammond,K.、Michaelson,G.和Pointon,R.(2007)《休姆报告》,第1.1版。网址:http://www-fp.cs.st-andrews.ac.uk/hume/report/hume-report.pdf。
[28] Hamza,H.&Counsell,S.(2012)《基于区域的RTSJ内存管理:最先进的科学》。计算。程序。77(5), 644-659.
[29] Hanson,D.R.(1990)基于对象生命周期的内存快速分配和释放。软件实践。实验20(1),5-12。
[30] Hawkins,T.(2010)《原子:GHC的同步硬实时EDSL》。网址:https://github.com/tomahawkins/atom。
[31] Henties,T.、Hunt,J.J.、Locke,D.、Nilsen,K.、Schoeberl,M.和Vitek,J.(2009)《安全关键应用的Java》。第二届安全关键软件控制系统认证国际研讨会(SafeCert 2009)。
[32] Hieb,R.、Dybvig,R.K.和Bruggeman,C.(1990年)在一级续管的情况下代表控制权。1990年ACM SIGPLAN编程语言设计和实现会议记录。PLDI’90。计算机协会,第66-77页。
[33] Hughes,J.(1989)为什么函数编程很重要。计算。《期刊》32(2),98-107。
[34] Jones,R.、Hosking,A.和Moss,E.(2016)《垃圾收集手册:自动内存管理的艺术》。CRC出版社。
[35] Kalibera,T.、Hagelberg,J.、Pizlo,F.、Plsek,A.、Titzer,B.和Vitek,J.(2009b)CDx:实时java基准测试系列。第七届实时和嵌入式系统Java技术国际研讨会论文集。JTRES’09年。ACM,第41-50页。
[36] Kalibera,T.、Pizlo,F.、Hosking,A.和Vitek,J.(2009a)计划硬实时垃圾收集。在2009年第30届IEEE实时系统研讨会上,RTSS 2009,第81-92页。
[37] Kumar,R.、Myreen,M.O.、Norrish,M.和Owens,S.(2014)《CakeML:ML的验证实施》,第41届ACM SIGPLAN-SIGACT编程语言原理研讨会论文集。流行'14。ACM,第179-191页·Zbl 1284.68405号
[38] Li,M.,Mcardle,D.E.,Murphy,J.C.,Shivkumar,B.&Ziarek,L.(2016)为SML编译器添加实时功能。SIGBED版本13(2),8-13。
[39] Lipari,G.&Bini,E.(2005)设计分层调度系统的方法。《嵌入式计算杂志》1(2),257-269。
[40] Lisper,B.(2014)SWEET-WCET流分析工具(扩展摘要)。在利用形式方法、验证和确认的应用方面。专业技术与应用,Margaria,T.和Steffen,B.(编辑)。柏林,海德堡:施普林格,第482-485页。
[41] López,N.,Nüñez,M.&Rubio,F.(2002)随机过程代数与Eden相遇。《第三届综合形式方法国际会议论文集》。如果是'02。Springer-Verlag,第29-48页·Zbl 1057.68642号
[42] Marlow,S.、Harris,T.、James,R.P.和Peyton Jones,S.(2008)使用块结构堆进行并行代复制垃圾收集。ISMM’08:第七届记忆管理国际研讨会论文集。ACM公司。
[43] Milner,R.、Tofte,M.和Macqueen,D.(1997)《标准ML的定义》,麻省理工学院出版社。
[44] (2012)MLton编译器和运行时系统。网址:http://www.mlton.org。
[45] (2012)MLton绩效基准。网址:http://mlton.org/性能。
[46] Morsing,D.(2014)《围棋中如何处理堆叠》。网址:https://blog.cloudflare.com/how-stacks-are-handled-in-go/。
[47] Muller,S.K.、Acar,U.A.和Harper,R.(2018)《竞争平行性:正确处理优先级》。程序。ACM计划。语言2(ICFP)。
[48] Murphy,J.C.、Shivkumar,B.、Pritchard,A.、Iraci,G.、Kumar,D.、Kim,S.H.和Ziarek,L.(2019)函数式语言和编译器实时能力调查。同意。计算。实际。实验31(4),e4902。
[49] Nettles,S.&O’Toole,J.(1993)实时复制垃圾收集。SIGPLAN不是。28(6), 217-226.
[50] Nicosia,V.(2007)走向硬实时Erlang。2007年SIGPLAN ERLANG研讨会会议记录。2007年爱尔兰。ACM,第29-36页。
[51] Pizlo,F.、Ziarek,L.、Blanton,E.、Maj,P.和Vitek,J.(2010a)嵌入式硬实时设备的高级编程。第五届欧洲计算机系统会议记录。EuroSys’10。ACM,第69-82页。
[52] Pizlo,F.、Ziarek,L.、Maj,P.、Hosking,A.L.、Blanton,E.和Vitek,J.(2010b)《分裂:碎片容忍实时垃圾收集》。2010年ACM SIGPLAN编程语言设计与实现会议记录。PLDI’10。ACM,第146-159页。
[53] (2021)Rapita Systems Ltd主页。网址:https://www.rapitasystems.com/。
[54] Regehr,J.、Reid,A.和Webb,K.(2005)通过抽象解释消除堆栈溢出。ACM事务处理。嵌入。计算。系统。4(4),751-778。
[55] Reppy,J.H.(1999)《ML并行编程》,剑桥大学出版社·Zbl 1137.68409号
[56] Reynolds,J.C.(1972)高阶编程语言的定义解释器。在ACM年会论文集,第2卷。ACM’72。ACM,第717-740页。
[57] Ross,D.T.(1967)无AED存储包。Commun公司。ACM10(8),481-492·Zbl 0149.12609
[58] Shivers,O.(1988)方案中的控制流分析。1988年ACM SIGPLAN编程语言设计和实现会议记录。PLDI’88。ACM,第164-174页。
[59] Shivkumar,B.、Murphy,J.C.和Ziarek,L.(2020)RTMLton:实时系统的SML运行时。《声明性语言的实践方面——第22届国际研讨会》,PADL 2020,美国洛杉矶新奥尔良,2020年1月20日至21日,Proceedings,Komendantskaya,E.和Liu,Y.A.(编辑)。计算机科学讲义,第12007卷。施普林格,第113-130页。
[60] Siebert,F.(2007)牙买加VM 3.0中的实时垃圾收集。第五届实时和嵌入式系统Java技术国际研讨会论文集。JTRES’07年。ACM,第94-103页。
[61] Sivaramakrishnan,K.C.,Ziarek,L.&Jagannathan,S.(2014)《MultiMLton:标准ML.J.Funct的多核软件运行时》。程序24613-674。
[62] Sivaramakrishnan,K.、Ziarek,L.和Jagannathan,S.(2012)通过拖延和清洁消除阅读障碍。2012年记忆管理国际研讨会论文集。ISMM’12。ACM,第49-60页。
[63] Steele,G.L.(1978)Rabbit:Scheme的编译程序。技术报告。美国。
[64] 木材,语言。(2008)《木材:温柔的介绍》。网址:http://www.timber-lang.org/index_gentle.html。
[65] Tofte,M.和Talpin,J.-P.(1997)基于区域的内存管理。Inf.计算132(2),109-176·Zbl 0876.68027号
[66] Tolmach,A.和Oliva,D.P.(1993)《从ML到Ada:通过源翻译实现强类型语言互操作性》。J.功能。程序.8367-412·Zbl 0917.68038号
[67] Wan,Z.,Taha,W.和Hudak,P.(2001)实时FRP。第六届ACM SIGPLAN国际函数编程会议论文集。ICFP’01。ACM,第146-156页·兹比尔1323.68175
[68] Ziarek,L.、Sivaramakrishnan,K.和Jagannathan,S.(2011)《可组合异步事件》。在32Nd ACM SIGPLAN编程语言设计和实现会议记录中。PLDI’11。ACM,第628-639页。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。