LIPIcs,第74卷

第31届欧洲面向对象编程会议(ECOOP 2017)



缩略图PDF

出版物详细信息

  • 发布时间:2017-06-16
  • 出版商:Schloss Dagstuhl–Leibniz Zentrum für Informatik
  • 国际标准图书编号:978-3-95977-035-4
  • DBLP:2017年db/conf/ecop/ecoop

接入号码

文件

找不到与您的筛选器选择匹配的文档。
文件
完整卷
LIPIcs,第74卷,ECOOP’17,完整卷

作者:彼得·米勒


摘要
LIPIcs,第74卷,ECOOP’17,完整卷

引用为

第31届欧洲面向对象编程会议(ECOOP 2017)。《莱布尼茨国际信息学论文集》,第74卷,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2017)


将BibTex复制到剪贴板

@会议记录{穆勒:LIPIcs.ECOOP.2017,title={{LIPIcs,第74卷,ECOOP'17,完整卷}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017},URN={URN:nbn:de:0030-drops-72993},doi={10.4230/LIPIcs.ECOOP.2017},annote={关键词:编程技术;软件工程}}
文件
前部物质
封面、目录、前言、会议组织、外部审核人、作者

作者:彼得·米勒


摘要
封面、目录、前言、会议组织、外部审核人、作者

引用为

第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第0:i-0:xxvi页,达格斯图尔-莱布尼兹-泽特鲁姆信息技术学院(2017)


将BibTex复制到剪贴板

@会议记录{穆勒:LIPIcs.ECOOP.2017.0,作者={M\“{u} 勒尔,Peter},title={{正文、目录、前言、会议组织、外部审阅者、作者}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页面={0:i--0:xxvi},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.0},URN={URN:nbn:de:0030-drops-72783},doi={10.4230/LIPIcs.ECOOP.2017.0},annote={关键词:编程技术,软件工程}}
文件
邀请的谈话
实现大规模高可用性的挑战(受邀演讲)

作者:沃尔夫拉姆·舒尔特


摘要
脸书是一个连接超过18亿人的社交网络。为了为这些用户提供服务,需要由数千个相互依赖的系统组成的基础设施,这些系统跨越地理分布的数据中心。但是,构建和操作这些系统的指导原则是什么?对于Facebook的基础设施团队来说,答案是:系统必须始终可用,并且永远不会丢失数据。本演讲将探讨这一探索。我们将重点关注三个方面。可用性和一致性。脸书的系统保证什么形式的一致性?强一致性使理解变得容易,但有延迟惩罚;弱一致性很快,但很难为开发人员和用户辩解。我们描述了最终一致性的用法,并深入研究了Facebook如何构建其缓存和复制存储系统,以尽可能缩短实现一致性的持续时间。我们分享了衡量我们设计有效性的经验数据。可用性和正确性。有了网络分区、宽松的一致性形式和软件错误,我们如何保证一致的状态?我们提供了两个系统来查找和修复Facebook社交图中的结构错误,一个是批处理系统,另一个是实时系统。可用性和规模。切分是大规模操作的标准答案之一。但我们如何开发一个既能共享存储又能计算的系统呢?我们将引入一个新的Sharding-as-a-Service组件。我们将展示和评估其设计和服务策略如何控制延迟、容错和操作效率。

引用为

沃尔夫拉姆·舒尔特。实现大规模高可用性的挑战(受邀演讲)。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第1:1页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@《国际法院判例汇编》,2017.1,author={Schulte,Wolfram},title={{实现大规模高可用性的挑战}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页面={1:1--1:1},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.1},URN={URN:nbn:de:0030-drops-72503},doi={10.4230/LIPIcs.ECOOP.2017.1},annote={关键词:分布式系统,可用性,可靠性,容错,一致性,可扩展性,复制,切分,缓存}}
文件
邀请的谈话
不和谐时代的软件创作(受邀演讲)

作者:吉拉德·布拉查


摘要
语言的力量植根于构图。一组有限的生成规则可以构成无限多的句子。规则应用得越统一,有效成分就越多。因此,简单的规则会产生更丰富的论述,即“少即是多”。然而,我们必须谨慎对待我们保留和消除的区别。如果我们抽象得太多,我们就有可能创造出一个没有标志性的无差别的汤引导我们前进。这些想法的一个明显例子是,物体的统一空间具有简单的交互规则,但物体也可以作为一个警示故事。实现简单并不容易;它需要品味、判断力、经验和奉献精神。巧合也是必不可少的,但如果不加以控制,往往会导致无法控制的复杂性。电阻最小的路径遵循“更多就是更多”的同义反复原则,谁能与同义反复争论?失调占主导地位。我将努力通过自己和他人在编程语言、软件和其他领域的工作中的示例来说明这些相当抽象的原则。我们可能会谈到很多东西——mixin、模块和内存、图形和泛型、模式和解析器、架构和汽车、对象或其他东西。

引用为

吉拉德·布拉查。在不和谐时代创作软件(邀请谈话)。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第2:1页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2017)


将BibTex复制到剪贴板

@会议记录{bracha:LIPIcs.ECOOP.2017.2,作者={Bracha,Gilad},title={{在不和谐时代创作软件}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={2:1--2:1},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\”{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.2},URN={URN:nbn:de:0030-drops-72796},doi={10.4230/LIPIcs.ECOOP.2017.2},annote={关键词:面向对象,编程语言,模块化,IDE,软件设计}}
文件
邀请的谈话
重定目标逐步键入(受邀谈话)

作者:罗斯·泰特


摘要
渐进式键入通常是由向大量非类型化代码库中添加类型的努力所驱动的。这里的一个主要挑战是,这些代码库在编写时没有考虑类型,但目标是在不需要对其实现进行任何重大更改的情况下向其中添加类型。因此,这个应用程序的关键是将渐进式键入添加到预先存在的系统中。但是渐进式键入在教育、原型制作和脚本编写方面也有应用。它允许程序员在学习编程推理、尝试新设计或与外部系统交互时忽略类型。同时,渐进式键入允许这些程序员使用API,其类型提供可导航的文档,简明地描述接口,并使IDE能够提供帮助。在这些应用程序中,程序员正在处理类型,即使他们没有编写类型。通过仅针对这些应用程序,我们可以减轻渐进式打字的主要负担。在这里,渐进式键入可以集成到软件开发过程、核心语言设计和运行时环境中,而不是添加到现有的内容中,每个组件的设计都支持从概念开始的渐进式键入。这种重定目标提供了很大的灵活性,使设计者能够权衡渐进式键入的各种功能。例如,设计者可能会选择在非类型化程序中要求一些较小的注释负担,例如,将运行时性能提高百倍。在过去的五年里,我一直在学术界和工业界探索逐步的幕后打字,我将介绍我在这些设计权衡方面的经验远。

引用为

罗斯·泰特。重新定位逐步键入(邀请谈话)。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第3:1页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{tate:LIPIcs.ECOOP.2017.3,author={泰特,罗斯},title={{重定目标逐步键入}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={3:1--3:1},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\”{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.3},URN={URN:nbn:de:0030-drops-72802},doi={10.4230/LIPIcs.ECOOP.2017.3},annote={关键词:设计、效率、渐变类型、命名类型}}
文件
将Julia与非侵入性DSL并行

作者:托德·安德森(Todd A.Anderson)、刘海(Hai Liu)、林赛·库珀(Lindsey Kuper)、埃桑·托托尼(Ehsan Totoni)、扬·维泰克(Jan Vitek)和塔蒂亚娜·施佩斯曼


摘要
计算科学家经常使用生产力制作软件原型提供高级编程抽象的语言。当更高时性能是必需的,他们必须在低级效率语言。不同的解决方案建议解决生产力和效率。一种有希望的方法是创建嵌入式为提高效率而牺牲通用性的特定于域的语言和性能,但DSL的实际经验表明阻碍广泛采用的障碍。本文提出了一个非侵入性领域特定语言,使其几乎不可见尽可能更改主机编程模型。我们提出ParallelAccelerator,用于高级别、高性能科学的库和编译器朱莉娅的计算机。ParallelAccelerator的编程模型与现有的Julia编程习语。我们的编译器公开隐式高级数组风格程序中的并行性及其编译快速、并行的本机代码。程序也可以在“仅库”中运行模式,让用户从完整的Julia环境中受益库。我们的结果表明,只需对源代码进行少量更改,就可以实现令人鼓舞的性能改进。特别是,几乎不需要额外的类型注释。

引用为

托德·安德森(Todd A.Anderson)、刘海(Hai Liu)、林赛·库珀(Lindsey Kuper)、埃桑·托托尼(Ehsan Totoni)、扬·维泰克(Jan Vitek)和塔蒂亚娜·施佩斯曼(Tatiana Shpeisman)。将Julia与非侵入性DSL并行。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第4:1-4:29页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{anderson_et_al:LIPIcs.ECOOP.2017.4,author={安德森、托德A.和刘、海和库珀、林赛和托托尼、埃桑和维泰克、简和施佩斯曼、塔蒂亚娜},title={{将Julia与非侵入DSL}}并行,booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={4:1--4:29},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.4},URN={URN:nbn:de:00030-drops-72693},doi={10.4230/LIPIcs.ECOOP.2017.4},annote={关键词:并行、科学计算、领域特定语言、Julia}}
文件
同构生成元程序的建模

作者:马丁·伯杰、劳伦斯·特拉特和克里斯蒂安·厄本


摘要
同构生成元编程(HGMP)可以在编译时或运行时生成程序片段。我们提出了一个基本演算,它可以对编译时和运行时评估的HGMP进行建模,从而允许我们首次对Template Haskell等语言进行建模。微积分的设计使得它可以通过建模许多真实语言的高级功能。我们通过展示如何将Template Haskell中的简单、分阶段类型系统添加到演算中来演示这一点。

引用为

Martin Berger、Laurence Tratt和Christian Urban。同质生成元编程建模。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第5:1-5:23页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{berger_et_al:LIPIcs.ECOOP.2017.5,author={伯杰、马丁和特拉特、劳伦斯和厄本、克里斯蒂安},title={{建模同质生成元编程}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={5:1--5:23},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.5},URN={URN:nbn:de:0030-drops-72775},doi={10.4230/LIPIcs.ECOOP.2017.5},annote={关键词:形式方法、元编程、操作语义、类型、准引号、抽象语法树}}
文件
无锁数据结构的松弛线性引用

作者:Elias Castegren和Tobias Wrigstad


摘要
线性引用保证没有别名。这是一个强大的属性,可以简化程序的推理并实现强大的优化,但对于许多应用程序来说,这也是一个过于强大的属性。值得注意的是,无锁算法实现了确保对数据结构进行安全、无阻塞并发访问的协议,通常不适用于线性引用,因为它们依赖别名来实现无锁。本文介绍了LOLCAT,这是一种具有宽松线性概念的类型系统,只要一次最多有一个别名拥有访问对象内容的权利,它就允许对象有无限数量的别名。此所有权可以在别名之间转移,但不能重复。类型功能强大,可以键入几个无锁的数据结构,并在编译时保证在访问拥有的数据时没有数据空间。特别是,LOLCAT能够将类型分配给CAS(比较和交换)原语,该原语精确描述了所有权如何跨别名(可能跨不同线程)传输。本文通过一个可靠的核心过程演算介绍了LOLCAT,并说明了如何将LOLCAT应用于三种基本的无锁数据结构。它还讨论了将LOLCAT与面向对象编程语言集成在一起的原型实现。

引用为

Elias Castegren和Tobias Wrigstad。无锁数据结构的松弛线性引用。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第6:1-6:32页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{castgren_et_al:LIPIcs.ECOOP.2017.6,作者={卡斯特格林、埃利亚斯和箭牌、托拜厄斯},title={{无锁数据结构的松弛线性引用}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={6:1--6:32},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.6},URN={URN:nbn:de:0030-drops-72670},doi={10.4230/LIPIcs.ECOOP.2017.6},annote={关键词:类型系统,并发,无锁编程}}
文件
松弛非干涉的类型抽象

作者:Raimil Cruz、Tamara Rezk、Bernard Serpette和Éric Tanter


摘要
信息流安全类型静态地防止机密信息泄漏到公共渠道。信息流的基本属性,即不干涉,表明公共观察者无法从私有数据中学习任何东西。尽管从理论上看它很有吸引力,但不干涉是不切实际的:实际系统需要有选择性地有意解密某些信息。在解密的不同信息流方法中,Li和Zdancewic提出了一种特别有表现力的方法,通过允许程序员指定解密策略来实现宽松的不干涉概念,该策略捕获了从私人数据计算公共信息的预期方式。本文展示了我们如何利用熟悉的类型抽象概念,以更简单、更具表现力的方式支持有表现力的解密策略。特别是,我们在面向对象的环境中开发的基于类型的解密方法解决了与先前工作相关的几个问题和挑战,包括基于子类型的标签排序的简单概念、对递归解密策略的支持以及本地,放松不干涉的模块化推理原则。这项工作为在实际的安全类型语言中集成解密策略铺平了道路。

引用为

雷米尔·克鲁兹、塔玛拉·雷兹克、伯纳德·塞尔佩特和埃里克·坦特。松弛非干涉的类型抽象。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第7:1-7:27页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{cruz_et_al:LIPIcs.ECOOP.2017.7,author={Cruz、Raimil和Rezk、Tamara和Serpette、Bernard和Tanter{E} 里克},title={{松弛非干涉的类型抽象}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={7:1--7:27},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.7},URN={URN:nbn:de:0030-drops-72688},doi={10.4230/LIPIcs.ECOOP.2017.7},annote={关键词:类型抽象,放松的无干扰,信息流控制}}
文件
在时间上链接的并发数据结构

作者:热尔曼·安德烈斯·德尔比安科、伊利亚·谢尔盖、阿列克桑达尔·纳内夫斯基和安妮迪亚·巴内吉


摘要
关于并发数据结构正确性的争论有通常通过使用线性化能力和指定数据结构的线性化点程序。这种论据通常像线性化那样麻烦点在时间上的位置可以是动态的(取决于干涉,过去甚至未来的运行时值和事件),非本地(出现在考虑的程序以外的程序中),以及执行跟踪中的位置只能在考虑中的程序已经终止。本文提出了一种基于分离样式的新方法逻辑,用于推理具有这种线性化的并发对象点。我们接受线性化点的动态特性,以及将其编码为数据结构辅助状态的一部分,以便可以根据需要通过辅助代码就地动态修改发生了一些适当的运行时事件。我们命名这个想法及时链接,因为它将时间推理简化为空间推理推理。例如,修改线性化点的建模类似于中的指针更新分离逻辑。此外,辅助状态提供简明表达关于这种并发对象的客户端的推理。我们举例说明通过(Coq中的机械方式)验证复杂最优值的方法由于Jayanti以及一些客户端的快照算法。

引用为

热尔曼·安德烈斯·德尔比安科、伊利亚·谢尔盖、阿列克桑达尔·纳内夫斯基和阿尼德亚·巴纳吉。实时链接的并发数据结构。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第8:1-8:30页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{delbianco_et_al:LIPIcs.ECOOP.2017.8,author={Delbianco,德语\'{a} n个安德烈{e} 秒谢尔盖、伊利亚、纳内夫斯基、阿列克桑达尔、班纳吉、安妮迪亚,title={{时间链接的并发数据结构}},booktitle={第31届面向对象编程欧洲会议(ECOOP 2017)},页数={8:1--8:30},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\”{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2017.8},URN={URN:nbn:de:0030-drops-72558},doi={10.4230/LIPIcs.ECOOP.2017.8},annote={关键词:分离逻辑,线性化点,并发快照,FCSL}}
文件
野外合同:Java程序研究

作者:Jens Dietrich、David J.Pearce、Kamil Jezek和Premek Brada


摘要
长期以来,人们一直提倡使用正式合同来开发可证明是正确的程序。然而,现实是,合同的采用在实践中一直很缓慢。尽管如此,轻量级契约的采用——通常使用运行时检查——已经取得了进展。对于Java,可以使用语言的内置特性(例如断言和异常)来实现这一点。此外,出现了一些便于合同检查的图书馆。在本文中,我们列举了25种Java轻量级合同检查的技术和工具,并展示了一项实证研究的结果,该研究使用了从Maven Central上发现的200个最受欢迎的项目中提取的数据集,该数据集约包含351034 KLOC。我们考察了(1)合同的使用程度和(2)合同的类型。然后,我们研究了如何使用契约来保护代码,并在契约可以保护的两种类型的可替换性的上下文中研究了问题:(3)API的不安全演化,这可能会破坏客户端程序;(4)当方法被重写时,违反了Liskovs替换原则(LSP)。我们发现:(1)广泛的技术和结构被用于表示合同,通常同一程序在同一时间使用不同的技术;(2) 总的来说,合同的使用少于预期,项目之间存在显著差异;(3) 使用合同的项目继续这样做,并随着合同的增长和演变扩大合同的使用;(4)在某些情况下,合同的使用指向不安全的子类型(违反Liskov的替代原则)和不安全的进化。

引用为

Jens Dietrich、David J.Pearce、Kamil Jezek和Premek Brada。野生合同:Java程序研究。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第9:1-9:29页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@InProceedings{dietrich_et_al:LIPIcs.ECOP.2017.9,author={Dietrich、Jens和Pearce、David J.和Jezek、Kamil和Brada、Premek},title={{野生契约:Java程序研究}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={9:1--9:29},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.9},URN={URN:nbn:de:0030-drops-72590},doi={10.4230/LIPIcs.ECOOP.2017.9},annote={关键词:验证,按合同设计,断言,前提条件,后置条件,运行时检查,java,输入验证}}
文件
邪恶泡菜:基于对象图形工程的DoS攻击

作者:Jens Dietrich、Kamil Jezek、Shawn Rasheed、Amjed Tahir和Alex Potanin


摘要
近年来,人们发现了利用各种编程语言(包括Java)的序列化API的多个漏洞。这些漏洞可用于设计注入攻击,利用反射或动态代理等动态编程语言功能的存在。在本文中,我们研究了一种新的与序列化相关的Java漏洞,该漏洞利用由标准库类构造的对象图拓扑,反序列化导致资源耗尽,从而助长拒绝服务攻击。我们分析了三个这样的漏洞,它们可以被用来耗尽堆栈内存、堆内存和CPU时间。我们讨论了启用这些漏洞的语言和库设计特性,并调查这些漏洞是否可以移植到C#、Java-Script和Ruby。我们提供了两个案例研究,展示了如何在攻击两个广泛使用的服务器(部署在Tomcat和JBoss上的Jenkins)时使用这些漏洞。最后,我们提出了一种基于合同注入的缓解策略。

引用为

Jens Dietrich、Kamil Jezek、Shawn Rasheed、Amjed Tahir和Alex Potanin。邪恶泡菜:基于对象图形工程的DoS攻击。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第10:1-10:32页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{dietrich_et_al:LIPIcs.ECOOP.2017.10,作者={Dietrich,Jens和Jezek,Kamil和Rasheed,Shawn和Tahir,Amjed和Potanin,Alex},title={{Evil Pickles:基于对象图形工程的DoS攻击}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={10:1--10:32},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.10},URN={URN:nbn:de:0030-drops-72606},doi={10.4230/LIPIcs.ECOOP.2017.10},annote={关键词:序列化、拒绝服务、服务降级、Java、C#、JavaScript、Ruby、漏洞、库设计、集合库}}
文件
混合隐喻:作为渠道的行动者和作为行动者的渠道

作者:西蒙·福勒、萨姆·林德利和菲利普·沃德勒


摘要
基于频道和演员的编程语言都用于练习,但两者经常混淆。Go等语言提供使用缓冲区或集合点(称为通道)进行通信的匿名进程,而Erlang等语言提供可寻址进程(称为参与者),每个进程都有一个传入消息队列。缺乏共同的代表性使得很难推理民间传说中存在的翻译。我们定义了一个微积分用于类型化异步通道的lambda-ch和用于打字演员。我们定义从lambda-act到lambda-ch的转换将lambda-ch转换为lambda-act,并证明两者都是类型-和语义提供服务。我们表明,我们的方法考虑了同步和选择性接收参与者系统并讨论未来的扩展以支持防护选择和行为类型。

引用为

西蒙·福勒(Simon Fowler)、萨姆·林德利(Sam Lindley)和菲利普·沃德勒(Philip Wadler)。混合隐喻:演员作为频道,频道作为演员。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第11:1-11:28页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2017)


将BibTex复制到剪贴板

@会议记录{fowler_et_al:LIPIcs.ECOOP.2017.11,author={Fowler、Simon和Lindley、Sam和Wadler、Philip},title={{混合隐喻:演员作为频道,频道作为演员}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={11:1--11:28},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.11},URN={URN:nbn:de:0030-drops-72536},doi={10.4230/LIPIcs.ECOOP.2017.11},annote={关键词:演员、频道、以通信为中心的编程语言}}
文件
木偶:木偶配置语言的声明子集

作者:傅伟力、罗利·佩雷拉、保罗·安德森和詹姆斯·切尼


摘要
Puppet是一个流行的声明性框架,用于指定和管理复杂的系统配置。Puppet框架包括一种特定于域的语言,具有一些受面向对象编程启发的高级功能,包括用户定义的资源类型、具有继承形式的“类”以及依赖关系管理。与大多数现实世界中的语言一样,该语言以一种特殊的方式发展,导致设计具有许多功能,其中一些功能复杂、难以理解且难以正确使用。我们提出了木偶的操作语义,这是木偶语言的一个代表子集,涵盖了木偶特有的功能,但排除了不推荐使用或工作盈利的功能。语义的形式化揭示了语言的困难部分,确定了未来改进的机会,并为未来的分析或调试技术(如静态类型检查或起源跟踪)提供了基础。我们的语义直接指向Haskell中的引用实现。我们还讨论了Puppet的一些特性,特别是它对类和范围的处理,并提供了由我们的形式语义支持的测试用例的初始语料库。

引用为

傅伟力、罗利·佩雷拉、保罗·安德森和詹姆斯·切尼。木偶:木偶配置语言的声明子集。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第12:12:27页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{fu_et_al:LIPIcs.ECOOP.2017.12,author={Fu、Weili和Perera、Roly和Anderson、Paul和Cheney、James},title={{muppet:木偶配置语言的声明子集}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={12:1--12:27},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.12},URN={URN:nbn:de:0030-drops-72656},doi={10.4230/LIPIcs.ECOOP.2017.12},annote={关键词:配置语言,Puppet,操作语义}}
文件
流敏多晶效应的通用方法

作者:科林·S·戈登


摘要
Effect系统是类型系统的轻量级扩展,它可以验证各种重要属性,而开发人员负担不大。但我们对效果系统的一般理解主要局限于效果顺序无关的系统。从效果格的角度来理解这些系统,为理解基本问题奠定了基础,并为设计新的效果系统提供了指导。相比之下,顺序效应系统——其中效应的顺序很重要——缺乏明确的代数特征。我们从先验的具体序列效应系统的形状导出了一个代数特征。我们提出了一个抽象的多态效应系统,其单粒子效应由效应量子数参数化,这是一个具有明确定义的属性的代数结构,可以对一系列现有的顺序敏感效应系统进行建模。我们定义了效应量子数,导出了有用的属性,并展示了它们如何清晰地建模各种已知的序列效应系统。我们证明了效应量子提供了迭代序列效应的自由、通用的概念,并且对于我们认为导出的迭代与先前工作中手动设计的迭代算子一致的系统。识别和应用正确的代数结构使我们对有序效应系统的设计有了微妙的见解,这为设计有序效应系统中的不明显点提供了指导。效应量子数与最近关于序敏感效应系统的范畴理论工作有着明确的关系,但对其进行解释时却没有求助于范畴理论。此外,我们派生的迭代构造应该推广到这些语义结构,解决这项工作的局限性。

引用为

科林·S·戈登。流敏多晶效应的一般方法。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第13:1-13:31页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{戈登:LIPIcs.ECOOP.2017.13,作者={Gordon,Colin S.},title={{流敏多晶效应的一般方法}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页码={13:1--13:31},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.13},URN={URN:nbn:de:0030-drops-72561},doi={10.4230/LIPIcs.ECOOP.2017.13},annote={关键词:类型系统,效果系统,量子数,多态性}}
文件
冰尘2:导出的双向关系和计算策略组成

作者:Daco C.Harkes和Eelco Visser


摘要
派生值是根据基础值计算得出的值。它们可以用关系数据库中的视图表示,也可以用增量或反应式编程中的表达式表示。然而,关系视图不提供多重性边界,增量和反应式编程需要大量的样板代码才能对双向派生值进行编码。此外,计算派生值的各种策略的组合要么被禁止,要么没有进行检查,以生成与它们所依赖的派生值一致的派生值。在本文中,我们提出了IceDust2,它是声明性数据建模语言IceDust的一个扩展,具有派生的双向关系,具有多重边界,并支持静态检查的计算策略组合。派生的双向关系、多重性边界和计算策略都会影响数据更改的运行时行为,导致数百种可能的行为定义。IceDust2使用基于产品线的代码生成器来避免明确定义所有可能的组合,从而更容易推断正确性。类型系统只允许策略的合理组合,并保证多重性边界。最后,我们的案例研究验证了IceDust2在应用程序中的可用性。

引用为

Daco C.Harkes和Eelco Visser。冰尘2:衍生的双向关系和计算策略组成。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第14:1-14:29页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{harkes_et_al:LIPIcs.ECOOP.2017.14,author={Harkes,Daco C.和Visser,Eelco},title={{IceDust 2:导出的双向关系和计算策略组合}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={14:1--14:29},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.14},URN={URN:nbn:de:0030-drops-72518},doi={10.4230/LIPIcs.ECOOP.2017.14},annote={关键词:增量计算、数据建模、领域特定语言}}
文件
精确动态种族检测的最佳性能是什么冗余视角

作者:Jeff Huang和Arun K.Rajagopalan


摘要
在精确的数据竞争检测器中,只有在执行过程中出现真正的竞争时,才会检测到竞争。在这种工具中,来自每个线程的每个内存访问通常都由happens-before算法进行检查。这些工具的最佳运行时性能是什么?在本文中,我们发现,在现实世界的程序执行中,很大一部分内存访问检查通常是冗余的:删除这些检查既不会影响种族检测的精度,也不会影响种族检测的能力。我们的研究表明,如果在不增加成本的情况下消除所有这些冗余检查,那么最先进的动态竞争检测器FastTrack的最佳性能可以提高90%,从而在CPU密集型基准测试集合上将其运行时开销从68倍减少到7倍。我们进一步开发了一种纯动态技术ReX,它可以有效地过滤掉冗余检查并将其应用于FastTrack。使用ReX,FastTrack的运行时性能平均提高了31%。

引用为

Jeff Huang和Arun K.Rajagopalan。精确动态种族检测的最佳性能是什么冗余视角。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第15:1-15:22页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{huang_et_al:LIPIcs.ECOOP.2017.15,author={Huang,Jeff和Rajagopalan,Arun K.},title={{精确动态种族检测的最佳性能是什么?–冗余视角}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={15:1--15:22},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.15},URN={URN:nbn:de:0030-drops-72722},doi={10.4230/LIPIcs.ECOOP.2017.15},annote={关键词:数据竞争检测、动态分析、并发、冗余}}
文件
利用静态相关性分析加速最大因果关系约简

作者:黄世友和黄杰夫


摘要
无状态模型检查(Stateless Model Checking,SMC)为验证多线程程序提供了一种强大的方法,但由于巨大的线程交错空间导致了状态空间爆炸问题。开创性的降阶技术部分降阶(POR)通过从状态空间剪除等价交织来缓解这个问题。然而,受先发生后发生关系的限制,POR仍然探索冗余执行。最近的进展,最大因果约简(MCR),显示了相对于现有约简技术的一个有希望的性能改进,但由于缺乏依赖信息,它必须构造复杂的约束以确保派生执行的可行性。在这项工作中,我们提出了一种新的技术,它通过静态分析扩展MCR,以减小约束的大小,从而加快状态空间的探索。我们还解决了使用静态分析导致的冗余问题。我们从系统依赖关系图中捕获跟踪中的读取和后续事件e之间的依赖关系,并识别那些e不受控制依赖的读取。然后,我们的方法忽略对此类读取的约束,以降低约束的复杂性。实验结果表明,与MCR相比,该方法的约束数和求解时间平均分别减少了31.6%和27.8%。

引用为

黄世友和黄杰夫。利用静态依赖分析加速最大因果关系减少。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第16:1-16:22页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{huang_et_al:LIPIcs.ECOOP.2017.16,author={黄,施友和黄,杰夫},title={{使用静态依赖分析加速最大因果关系约简}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={16:1--16:22},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.16},URN={URN:nbn:de:0030-drops-72523},doi={10.4230/LIPIcs.ECOOP.2017.16},annote={关键词:模型检查、动态分析、程序依赖性分析}}
文件
弱记忆的强逻辑:虹膜释放-获得一致性的推理

作者:Jan-Oliver Kaiser、Hoang-Hai Dang、Derek Dreyer、Ori Lahav和Viktor Vafeiadis


摘要
并发分离逻辑(CSL)领域最近经历了两个令人兴奋的发展:(1)编码和统一高级高阶CSL并在Coq中对其进行形式化,以及(2)对CSL进行调整以考虑弱内存模型,特别是C11的释放获取(RA)一致性。不幸的是,这些发展似乎不相容,因为Iris仅适用于具有操作交织的语言语义,而C11由声明性(公理)定义语义。在本文中,我们表明,相反,它不是将这些发展结合在一起是可行但有用的。我们的第一步是提供新的操作特性RA+NA,包含RA访问和“非原子”的C11片段(正常数据)访问。用这个语义实例化Iris,我们然后导出两个显著的RA+NA逻辑GPS的高阶变量最后,我们部署这些派生逻辑以执行几个有趣的首次机械验证(Coq)RA+NA编程的案例研究。简而言之,我们提供用于证明程序正确性的第一个经过基本验证的框架在C11的弱记忆语义下。

引用为

Jan-Oliver Kaiser、Hoang-Hai Dang、Derek Dreyer、Ori Lahav和Viktor Vafeiadis。弱记忆的强逻辑:关于虹膜中释放-获得一致性的推理。第31届欧洲面向对象编程会议(ECOOP 2017)。《莱布尼茨国际信息学论文集》,第74卷,第17:1-17:29页,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2017)


将BibTex复制到剪贴板

@会议记录{kaiser_et_al:LIPIcs.ECOOP.2017.17,author={Kaiser、Jan-Oliver和Dang、Hoang-Hai和Dreyer、Derek和Lahav、Ori和Vafeiadis、Viktor},title={{弱记忆的强逻辑:关于Iris}}中释放获得一致性的推理,booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={17:1--17:29},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.17},URN={URN:nbn:de:0030-drops-72753},doi={10.4230/LIPIcs.ECOOP.2017.17},annote={关键词:弱内存模型,发布获取,并发,分离逻辑}}
文件
一个用于Featherweight Java的协同类型检查器

作者:Edlira Kuci、Sebastian Erdweg、Oliver Bracevac、Andi Bejleri和Mira Mezini


摘要
本文讨论面向对象编程语言的组合和增量类型检查。最近的工作通过联合上下文类型规则实现了结构类型函数语言的增量类型检查,这种基于约束的公式消除了表达式类型的任何上下文依赖性。然而,这项工作并没有涵盖面向对象语言的关键特性:子类型多态性、标称类型和实现继承。类型检查器以类表的形式对这些特性进行编码,这是另一种类型上下文禁止增量化的形式。在当前的工作中,我们证明了存在一个适当的类表上下文概念,为面向对象语言的高效增量类型检查器铺平了道路。这产生了Igarashi等人的Featherweight Java(FJ)类型系统的一种新形式,其中我们用类表需求的对偶概念替换类表,用类表要求的对偶操作替换类表操作。我们证明了FJ的类型系统和我们的共语境公式的等价性。基于我们的公式,我们实现了一个增量FJ类型检查器,并在一些实际的示例程序上与javac进行了性能比较。

引用为

埃德利拉·库奇(Edlira Kuci)、塞巴斯蒂安·埃尔德维格(Sebastian Erdweg)、奥利弗·布拉切瓦克(Oliver Bracevac)、安迪·贝杰莱里(Andi Bejleri)和米拉·梅齐尼(Mira Mezini)。Featherweight Java的一个协同类型检查器。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第18:1-18:26页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@诉讼程序{kuci_et_al:LIPIcs.ECOOP.2017.18,author={库奇、埃德利拉和埃尔德维格、塞巴斯蒂安和布拉塞瓦克、奥利弗和贝杰利、安迪和梅齐尼、米拉},title={{Featherweight Java的协同类型检查器}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={18:1--18:26},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.18},URN={URN:nbn:de:0030-drops-72628},doi={10.4230/LIPIcs.ECOOP.2017.18},annote={关键词:类型检查、上下文关联、约束、类表、Featherweight Java}}
文件
基于实例的递归树到字符串函数的主动综合

作者:米卡·迈耶、贾德·哈姆扎和维克托·昆卡


摘要
通过示例合成,非专业用户可以通过指定其行为示例来生成程序。最近在一个广泛使用的电子表格软件产品中部署了一种特定于域的合成形式。在本文中,我们为这些技术奠定了基础,并提出了一个完整的算法来综合一类由给定代数数据类型定义上的结构递归定义的递归函数。我们考虑的函数将代数数据类型映射到字符串;它们对于程序和数据的漂亮打印和序列化很有用。我们将问题形式化为学习确定性序列自上而下的单状态树串传感器(1STS)。我们考虑的第一个问题是学习树到字符串来自用户提供的任何一组输入/输出示例的传感器。我们表明,给定一组输入/输出示例,检查是否存在与这些示例一致的1STS通常是NP完成的。相反,在(实际有用的)闭包条件下,问题可以在多项式时间内求解,每个闭包条件输入/输出示例集中的树的子树也是输入/输出示例的一部分。因为提出相关的输入/输出示例可能是用户在创建硬约束问题时遇到困难对于合成器,我们还研究了一种更自动化的主动学习场景,其中算法选择用户为其提供输出的输入。我们的算法将查询的最坏情况线性数作为代数数据类型定义的大小函数确定一个独特的传感器。为了构造我们的算法,我们给出了两个关于正式语言。首先,我们定义了一类单词方程,称为序列词方程,为此我们证明可满足性可以用确定性多项式求解时间。这与“其中最著名的复杂性上界是在线性空间中。其次,我们解决了一个长期存在的关于无上下文语言测试集的渐近大小。A类单词L语言的测试集是L的子集T这样T上等价的任何两个单词同态都是在L上也是等价的。我们证明了为无上下文语言构建立方大小的测试集,20年来首次匹配下限以前。

引用为

米卡·迈耶、贾德·哈姆扎和维克托·昆卡。示例中递归树到字符串函数的主动合成。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第19:1-19:30页,达格斯图尔-莱布尼兹-泽特鲁姆信息技术学院(2017)


将BibTex复制到剪贴板

@会议记录{mayer_et_al:LIPIcs.ECOOP.2017.19,author={Mayer,Mika\“{e} 我哈姆扎、贾德、昆卡、维克多,title={{递归树到字符串函数的示例主动合成}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={19:1--19:30},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.19},URN={URN:nbn:de:00030-drops-72575},doi={10.4230/LIPIcs.ECOOP.2017.19},annote={关键词:示例编程、主动学习、程序综合}}
文件
一种基于能力的权限控制模块系统

作者:Darya Melicher、Yangqingwei Shi、Alex Potanin和Jonathan Aldrich


摘要
最小权限原则规定,系统的每个组件都应有权只访问其运行所需的信息和资源。这一原则对于软件系统的安全设计至关重要,因为它有助于限制应用程序的攻击面并隔离漏洞和故障。不幸的是,当前的编程语言在控制应用程序模块的权限方面没有提供足够的帮助,这一问题在不受信任的第三方扩展的情况下尤为严重。在本文中,我们提出了一种便于控制授予每个应用程序模块的权限的语言设计。我们方法的关键技术新奇之处在于,模块是一流的静态类型功能。第一类模块本质上是对象,因此我们通过将其转换为对象演算来形式化我们的模块系统,并证明核心演算是类型安全和权威安全的。与先前的形式化不同,我们的工作以非传递的方式定义了权威,允许工程师对使用包装器来提供更强大功能的衰减版本的软件设计进行推理。我们的方法允许开发人员通过在创建模块时检查作为模块参数传递的功能,或在稍后执行期间委托给模块,来确定模块的权限。类型系统通过识别哪些对象为敏感资源提供功能,并使安全架构师能够仅基于模块的接口检查传入和传出模块的功能,而无需检查模块的实现代码,从而促进了这一点。模块系统的实现和Wyvern编程语言中的示例表明,我们的方法可以成为控制模块权限的实用方法。

引用为

Darya Melicher、Yangqingwei Shi、Alex Potanin和Jonathan Aldrich。基于能力的权限控制模块系统。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第20:1-20:27页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{melicher_et_al:LIPIcs.ECOOP.2017.20,作者={Melicher、Darya和Shi、杨庆伟和Potanin、Alex和Aldrich、Jonathan},title={{基于能力的权限控制模块系统}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={20:1--20:27},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.20},URN={URN:nbn:de:0030-drops-72709},doi={10.4230/LIPIcs.ECOOP.2017.20},annote={关键词:基于语言的安全性、功能、权限、模块}}
文件
通过点驱动开发进行数据探索

作者:托马斯·彼得里切克


摘要
数据素养在当今世界变得越来越重要。虽然电子表格使许多人都可以访问简单的数据分析,但创建的透明脚本可以进行检查、修改、复制和正式分析需要专业的编程技能。在本文中,我们描述了一种数据探索语言的设计,该语言通过将高级编程概念嵌入到简单的核心语言中,使任务更容易访问。核心语言使用类型提供程序,但我们以一种新颖的方式使用它们——我们不是为访问数据提供带有成员的类型,而是为类型提供允许用户也使用成员访问('dot')来编写丰富而正确的查询的成员。通过这种方式,我们用一种极其简单的基于对象的语言重新创建了通常需要复杂类型系统(行多态性、类型状态和依赖类型)的功能。我们使用基于对象的演算将我们的方法形式化,并证明使用提供的类型构造的程序表示有效的数据转换。我们讨论了一个使用语言,以及其他编辑器工具,这些工具弥补了编程和电子表格之间的一些差距。我们相信,这项工作为数据科学民主化提供了一条途径-我们使用类型提供程序大大降低了编写用于探索数据的脚本所需理解的语言的复杂性。

引用为

托马斯·彼得里切克。通过点驱动开发进行数据探索。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第21:1-21:27页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{petricek:LIPIcs.ECOOP.2017.21,author={Petricek,Tomas},title={{通过点驱动开发进行数据探索}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},pages={21:1-21:27},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.21},URN={URN:nbn:de:0030-drops-72610},doi={10.4230/LIPIcs.ECOOP.2017.21},annote={关键词:数据科学,类型提供程序,透视表,聚合}}
文件
有希望的ARMv8 POP编译

作者:安东·波德科帕耶夫(Anton Podkopaev)、奥里·拉哈夫(Ori Lahav)和维克托·瓦菲亚迪斯(Viktor Vafeiadis)


摘要
我们从[Kang et al.POPL'17]的“有希望的”语义到[Flur et al.POPL'16]的ARMv8 POP机器,证明了松弛内存访问和释放获取围栏的编译的正确性。该证明是高度非平凡的,因为ARMv8 POP和有前途的语义都为正常内存访问提供了极弱的一致性保证;然而,他们以截然不同的方式这样做。我们对ARMv8 POP编译正确性的证明加强了Kang等人的结果,Kang等人只证明了对x86-TSO和Power编译的正确性,与ARMv8POP相比,后者要简单得多。

引用为

安东·波德科帕耶夫(Anton Podkopaev)、奥里·拉哈夫(Ori Lahav)和维克托·瓦菲亚迪斯(Viktor Vafeiadis)。对ARMv8 POP有希望的编译。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第22:1-22:28页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{podkopaev_et_al:LIPIcs.ECOOP.2017.22,author={Podkopaev、Anton和Lahav、Ori和Vafeiadis、Viktor},title={{ARMv8 POP}}有希望编译,booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={22:1--22:28},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\”{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.22},URN={URN:nbn:de:0030-drops-72667},doi={10.4230/LIPIcs.ECOOP.2017.22},annote={关键词:ARM,编译正确性,弱内存模型}}
文件
无需静态分析的高阶动态语言跨过程专业化

作者:Baptiste Saleil和Marc Feeley


摘要
JIT编译器广泛使用函数复制来高效实现动态语言。当源语言支持高阶函数时,在编译调用位置时通常不知道被调用函数的标识,从而限制了函数复制的使用。本文介绍了一种JIT编译技术,它可以在存在高阶函数的情况下实现函数复制。与现有技术不同,我们的方法在调用位置使用动态调度,而不是依赖保守分析来发现函数标识。我们已经在Scheme的JIT编译器中实现了该技术。实验表明,它可以有效地删除类型检查,从而可以删除几个基准的几乎所有运行时类型检查。这使得编译器生成代码的速度提高了50%。我们表明,该技术可以使用其他运行时信息复制函数,从而打开新的应用程序,如基于寄存器分配的复制和主动内联。

引用为

Baptiste Saleil和Marc Feeley。高阶动态语言的跨过程专业化,无需静态分析。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第23:1-23:23页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{saleil_et_al:LIPIcs.ECOOP.2017.23,author={Saleil,Baptiste和Feeley,Marc},title={{无静态分析的高阶动态语言的跨过程专业化}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页码={23:1--23:23},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.23},URN={URN:nbn:de:0030-drops-72711},doi={10.4230/LIPIcs.ECOOP.2017.23},annote={关键词:实时编译、过程间优化、动态语言、高阶函数、Scheme}}
文件
安全分布式编程中多方会话的线性分解

作者:阿尔切斯特·斯卡拉斯、奥内拉·达达、雷蒙德·胡和吉田信子


摘要
多方会话类型(MPST)是消息传递分布式进程,可以确保以下属性由于没有通信错误和死锁,以及协议一致性。MPST能否为“主流”语言的并发和分布式编程提供理论基础?我们的地址这个问题是通过(1)开发成熟的多方会议pi-calculus到linearpi-calculus,以及(2)使用编码作为Scala中用于安全多方编程的实用工具链。我们的编码是类型保护的,操作上是合理和完整的。至关重要的是,它保持了MPST,说明多方会话的安全属性可以通过分解为二进制来精确表示线性通道。以前的工作只研究了这种关系在(有限的)多方和二进制会话之间通过集中式编排方式。我们利用这些结果来实现为多方会话自动生成Scala API,为二进制通信信道抽象现有库。这使得多方系统可以在二进制文件上安全实现消息传输,这在实践中很常见。我们的实施是第一个支持分布式多方授权的公司:我们的通过现有的二进制机制,编码可以免费生成授权。

引用为

阿尔切斯特·斯卡拉斯(Alceste Scalas)、奥内拉·达达(Ornela Dardha)、雷蒙德·胡(Raymond Hu)和吉田信子(Nobuko Yoshida)。安全分布式编程中多方会话的线性分解。第31届欧洲面向对象编程会议(ECOOP 2017)。《莱布尼茨国际信息学论文集》,第74卷,第24:1-24:31页,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2017)


将BibTex复制到剪贴板

@会议记录{scalas_et_al:LIPIcs.ECOOP.2017.24,author={Scalas、Alcester和Dardha、Ornela和Hu、Raymond和Yoshida、Nobuko},title={{安全分布式编程多方会话的线性分解}},booktitle={第31届面向对象编程欧洲会议(ECOOP 2017)},页数={24:1--24:31},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.24},URN={URN:nbn:de:0030-drops-72637},doi={10.4230/LIPIcs.ECOOP.2017.24},annote={关键词:进程计算,会话类型,并发编程,Scala}}
文件
演员程序静态分析的邮箱抽象

作者:昆汀·斯蒂文纳特(Quentin Stiévenart)、延斯·尼古拉(Jens Nicolay)、沃尔夫冈·德梅特(Wolfgang De Meuter)和科恩·德鲁弗(Coen De Roover)


摘要
对于基于actor的程序,很难静态推断出诸如没有错误或邮箱大小边界之类的属性。这是因为基于演员的程序除了演员并发执行所固有的不确定性外,还表现出了几个无限性的来源。我们开发了一种基于抽象解释的静态技术,以便在有限的时间内对基于演员的程序的可能执行进行合理的推理。我们使用我们的技术静态验证基于actor的程序中是否没有错误,并计算actor邮箱的上限。这些邮箱的声音抽象对于任何此类技术的精确性都至关重要。我们提供了几个邮箱抽象,并根据它们在邮箱中保留消息顺序和消息多样性的程度对它们进行分类。我们正式证明了每个邮箱抽象的合理性,并在基准测试程序的语料库上实证评估了它们的精度和性能权衡。结果表明,与最新的分析相比,我们的技术可以静态验证更多基准程序的无错误性。

引用为

昆汀·斯蒂文纳特(Quentin Stiévenart)、延斯·尼古拉(Jens Nicolay)、沃尔夫冈·德梅特(Wolfgang De Meuter)和科恩·德鲁弗(Coen De Roover)。演员程序静态分析的邮箱抽象。在第31届面向对象编程欧洲会议(ECOOP 2017)上。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第25:1-25:30页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2017)


将BibTex复制到剪贴板

@会议记录{stievenart_et_al:LIPIcs.ECOOP.2017.25,author={Sti\'{e} 维纳特、昆廷和尼古拉、延斯和德梅特、沃尔夫冈和德鲁弗、科恩}、,title={{演员程序静态分析的邮箱抽象}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={25:1--25:30},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.25},URN={URN:nbn:de:0030-drops-72541},doi={10.4230/LIPIcs.ECOOP.2017.25},annote={关键词:静态分析、抽象、抽象解释、参与者、邮箱}}
文件
编译树变换以操作压缩表示

作者:Michael Vollmer、Sarah Spall、Buddhika Chamith、Laith Sakka、Chaitanya Koparkar、Milind Kulkarni、Sam Tobin-Hochstadt和Ryan R.Newton


摘要
当用大多数编程语言以惯用方式编写时,程序遍历和构造树操作基于指针的数据结构,每个叶和每个节点使用一个堆对象。这个表示对于随机访问和形状变换是有效的修改,但对于遍历,例如编译器传递批量处理大部分或全部树,可能效率低下。在这个我们的工作是编译树遍历以进行操作树的无指针预排序序列化。论现代体系结构这样的程序通常比它们基于指针的对等项,而且直接适用于存储和传输而不需要编组。我们提供了一个原型编译器Gibbon,它可以编译小型一阶纯函数语言,足以用于树遍历。编译器将此语言转换为中间语言用指向输入和输出缓冲区的显式指针表示用于打包数据。关键编译器技术包括一种效果捕获遍历行为的系统,结合一种算法插入目标光标。我们在树上评估编译器源代码语法树的真实数据集上的转换。对于涉及整棵树的遍历,例如地图和折叠,打包与高度优化相比,数据允许加速2倍以上基于指针的基线。

引用为

Michael Vollmer、Sarah Spall、Buddhika Chamith、Laith Sakka、Chaitanya Koparkar、Milind Kulkarni、Sam Tobin-Hochstadt和Ryan R.Newton。编译树变换以对打包表示进行操作。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第26:1-26:29页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2017)


将BibTex复制到剪贴板

@在诉讼中{vollmer_et_al:LIPIcs.ECOOP.2017.26,author={Vollmer、Michael和Spall、Sarah和Chamith、Buddhika和Sakka、Laith和Koparkar、Chaitanya和Kulkarni、Milind和Tobin-Hochstadt、Sam和Newton、Ryan R.},title={{编译树转换以操作压缩表示}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={26:1--26:29},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.26},URN={URN:nbn:de:0030-drops-72737},doi={10.4230/LIPIcs.ECOOP.2017.26},annote={关键词:编译器优化,程序转换,树遍历}}
文件
依赖对象类型(DOT)的强规范化

作者:王飞和蒂亚克·隆普夫


摘要
计算的依赖对象类型(DOT)家族被提出,作为Scala和类似语言的新理论基础,统一了函数编程、面向对象编程和ML型模块系统。根据最新类型的坚固性证明DOT,本论文旨在建立更强的元理论特性。主要结果是D_<:强规范化的全面机械化证明,D_<是DOT的一个变体,它排除了递归函数和递归类型。我们进一步讨论了在保持强规范化的同时添加递归类型的技术和挑战,并证明可以成功地集成递归自类型的某些变体。

引用为

王飞和蒂亚克·隆普夫。依赖对象类型(DOT)的强规范化。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第27:1-27:25页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2017)


将BibTex复制到剪贴板

@在诉讼中{wang_et_al:LIPIcs.ECOOP.2017.27,author={Wang,Fei和Rompf,Tiark},title={{依赖对象类型(DOT)的强规范化}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页码={27:1-27:25},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.27},URN={URN:nbn:de:0030-drops-72763},doi={10.4230/LIPIcs.ECOOP.2017.27},annote={关键词:Scala,DOT,强规范化,逻辑关系,递归类型}}
文件
混合消息:衡量TypeScript中的一致性和不干扰性

作者:Jack Williams、J.Garrett Morris、Philip Wadler和Jakub Zalewski


摘要
TypeScript参与了最近的编程趋势支持渐进式键入的语言。DefinelyTyped存储库for TypeScript提供了2000多个流行的类型定义JavaScript库。然而,不能保证实现符合其相应的声明。我们对TypeScript的渐进式键入进行了实际评估。我们开发了一个用于TypeScript的工具,基于多态责备演算,用于监视JavaScript库和针对TypeScript定义的TypeScript客户端。我们应用我们的工具,TypeScript TPD,用于DefinelyTyped中的那些库有足够测试代码可供使用的存储库。在122个图书馆中我们检查了62个案例,其中要么是图书馆,要么是它的测试未能遵守声明。渐进式键入应满足无干扰要求。监视程序不应更改其行为,除非引发类型错误值不符合其声明的类型。然而,我们的经验还表明,使用用于执行合同的JavaScript代理机制。122个我们检查的库中,有22个库或其测试违反了不干涉原则。

引用为

杰克·威廉姆斯(Jack Williams)、杰克·加勒特·莫里斯(J.Garrett Morris)、菲利普·沃德勒(Philip Wadler)和贾库布·扎勒夫斯基(Jakub Zalewski)。混合消息:测量TypeScript中的一致性和非干扰。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第28:1-28:29页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2017)


将BibTex复制到剪贴板

@会议记录{williams_et_al:LIPIcs.ECOOP.2017.28,作者={Williams,Jack和Morris,J.Garrett和Wadler,Philip和Zalewski,Jakub},title={{混合消息:测量TypeScript}}中的一致性和不干扰,booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={28:1--28:29},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.28},URN={URN:nbn:de:0030-drops-72640},doi={10.4230/LIPIcs.ECOOP.2017.28},annote={关键词:渐进式键入,TypeScript,JavaScript,代理}}
文件
EVF:一个用于编程语言重用的可扩展和表达的访问者框架

作者:张维欣和布鲁诺·C·d·S·奥利维拉


摘要
对象代数是一种设计模式,它支持Java等主流面向对象语言的可扩展性、模块化和重用。对象代数的理论基础植根于数据类型的Church编码,而这些数据类型又与函数编程中的折叠紧密相关。不幸的是,众所周知,某些程序很难编写,并且在使用Church-encodings/folds时可能会导致性能下降。本文介绍了EVF:一个可扩展且富于表现力的Java访问者框架。EVF支持的访问者泛化了对象代数,并允许使用一般递归风格而不是折叠来编写程序。使用这种一般递归风格,用户可以更自然地编写程序,否则需要使用类似折叠结构的人为解决方案。EVF访问者保留了对象代数的类型安全扩展性。EVF的关键进步是支持可扩展外部访问者的新技术。可扩展的外部访问者能够通过直接访问被遍历的数据结构来控制遍历,从而允许模块化定义依赖操作,而无需高级类型的系统功能。为了使EVF实用,该框架使用注释自动生成大量与访问者和遍历相关的样板代码。为了说明EVF的适用性,我们进行了一个案例研究,重构了《类型和编程语言》(TAPL)一书中的大量非模块化解释器。使用EVF,我们能够创建TAPL解释器的模块化软件产品线(SPL),从而实现大部分代码和功能的共享。TAPL软件产品线包含几个模块化操作,用标准对象代数定义这些操作并不简单。

引用为

张维新(Weixin Zhang)和布鲁诺(Bruno C.d.S.Oliveira)。EVF:一个用于编程语言重用的可扩展和表达的访问者框架。在第31届面向对象编程欧洲会议(ECOOP 2017)上。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第29:1-29:32页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2017)


将BibTex复制到剪贴板

@会议记录{zhang_et_al:LIPIcs.ECOOP.2017.29,作者={张,魏欣和奥利维拉,布鲁诺·C.d.S.},title={{EVF:用于编程语言重用的可扩展和表达的访问者框架}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={29:1--29:32},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.29},URN={URN:nbn:de:0030-drops-72749},doi={10.4230/LIPIcs.ECOOP.2017.29},annote={关键词:访问者模式、对象代数、模块化、领域特定语言}}
文件
Graal编译器反优化的实证研究

作者:郑宇迪(Yudi Zheng)、卢博米尔·布勒(Lubomír Bulej)和沃尔特·宾德(Walter Binder)


摘要
Java虚拟机或公共语言运行库等托管语言平台依赖于动态编译器来实现高性能。除了根据实际的程序执行和底层硬件平台做出优化决策外,动态编译器还处于执行推测优化的理想位置。然而,这些往往会增加编译成本,因为不成功的推测会触发程序受影响部分的去优化和重新编译,从而浪费了以前的工作。尽管推测性优化被广泛使用,但这些优化在额外编译工作方面的成本以前还没有研究过。本文分析了集成在Oracle HotSpot虚拟机中的Graal动态编译器的行为。我们关注导致程序执行从机器代码切换到解释器的情况,并使用三种不同的去优化策略比较应用程序性能,这三种策略会影响Graal完成的额外编译工作量。使用自适应去优化策略,我们设法提高了DaCapo、ScalaBench和Octane基准测试套件的平均启动性能,主要是通过避免浪费编译工作。在单核系统上,我们观察到DaCapo和ScalaBench工作负载的平均加速率为6.4%,辛烷值工作负荷加速5.1%;随着可用CPU内核数量的增加,改进程度降低。我们还发现,非优化策略的选择对稳态性能的影响可以忽略不计。这表明推测的成本主要在启动期间很重要,在启动期间,它可能会扰乱执行程序和编译器之间的微妙平衡,但在稳定状态下会很快摊销。

引用为

郑宇迪(Yudi Zheng)、卢博米尔·布勒(Lubomír Bulej)和沃尔特·宾德(Walter Binder)。Graal编译器反优化的实证研究。第31届欧洲面向对象编程会议(ECOOP 2017)。莱布尼茨国际信息学论文集(LIPIcs),第74卷,第30:1-30:30页,达格斯图尔-莱布尼兹-泽特鲁姆信息技术学院(2017)


将BibTex复制到剪贴板

@会议记录{zheng_et_al:LIPIcs.ECOOP.2017.30,作者={Zheng,Yudi and Bulej,Lubom{'\i}r and Binder,Walter},title={{Graal编译器反优化的实证研究}},booktitle={第31届欧洲面向对象编程会议(ECOOP 2017)},页数={30:1--30:30},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-95977-035-4},ISSN={1868-8969},年份={2017年},体积={74},编辑器={M\“{u} 勒尔,Peter},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2017.30},URN={URN:nbn:de:0030-drops-72583},doi={10.4230/LIPIcs.ECOOP.2017.30},annote={关键词:动态编译器,profile-guided优化,去优化}}

过滤器


问题/备注/反馈
X(X)

Dagstuhl出版社反馈


感谢您的反馈!

已提交反馈

无法发送消息

请稍后再试或发送电子邮件