LIPIcs,第37卷

第29届欧洲面向对象编程会议(ECOOP 2015)



缩略图PDF

事件

ECOOP 2015年7月5日至10日,捷克共和国布拉格

编辑器

约翰·唐博伊兰

出版物详细信息

  • 发布时间:2015-06-29
  • 出版商:Schloss Dagstuhl–Leibniz Zentrum für Informatik
  • ISBN:978-3-939897-86-6
  • DBLP:db/conf/ecop/ecoop2015

接入号码

文件

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

作者:约翰·唐博伊兰


摘要
LIPIcs,第37卷,ECOOP'15,完整卷

引用为

第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{boyland:LIPIcs.ECOOP.2015,title={{LIPIcs,第37卷,ECOOP'15,完整卷}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015},URN={URN:nbn:de:00030-drops-52737},doi={10.4230/LIPIcs.ECOOP.2015},annote={Keywords:面向对象编程}}
文件
前部物质
封面、目录、前言、工艺品、会议组织

作者:约翰·唐博伊兰


摘要
封面、目录、前言、工艺品、会议组织

引用为

第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第i-xviii页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@论文集{boyland:LIPIcs.ECOOP.2015.i,author={Boyland,John Tang},title={{前言、目录、前言、工件、会议组织}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},pages={i-xvii},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2015.i},URN={URN:nbn:de:00030-drops-52463},doi={10.4230/LIPIcs.ECOOP.2015.i},注释={关键词:前言、目录、前言、工件、会议组织}}
文件
邀请的谈话
无继承的面向对象编程(受邀演讲)

作者:本贾尼·斯特劳斯特卢普


摘要
面向对象编程的特点通常是封装加多态加继承。最初的Simula67证明了我们可以不用封装,Kristen Nygaard坚持认为一些OOP可以不用继承来完成。我将泛型编程描述为提供封装和多态性。在C++中,该视图由语言工具直接支持,例如类、模板和(仅最近)概念。我展示了一系列类型和资源安全技术,涵盖了广泛的应用程序,包括容器、代数概念以及数值和非数值算法。

引用为

本贾尼·斯特劳斯特卢普。无继承的面向对象编程(邀请谈话)。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第1页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{stroustrup:LIPIcs.ECOOP.2015.1,author={Stroustrup,Bjarne},title={{无继承的面向对象编程}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={1--1},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},编辑={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2015.1},URN={URN:nbn:de:0030-drops-52129},doi={10.4230/LIPIcs.ECOOP.2015.1},annote={关键词:面向对象,通用编程,多态性,概念,封装}}
文件
邀请的谈话
物联网大规模编程(受邀演讲)

作者:Jong-Deok Choi先生


摘要
物联网(IoT)这一术语在信息技术和消费电子行业引起了广泛关注。在物联网设置中,大量物理分散的设备(如传感器、执行器和处理单元)相互协调,为用户带来有用的功能。这些设备中有很大一部分的计算和存储占用空间可能很小,但同时,它们可以通过云利用来自潜在巨大计算和存储资源的支持。此外,一组占地面积较小的大型设备不仅可以服务于单个逻辑应用程序或服务,还可以服务于许多独立的逻辑应用程序和服务。出于隐私和安全目的,这需要仔细分离设备内的计算活动及其相关数据。物联网应用程序开发为术语“大规模编程”赋予了全新的含义,其中一些对于实践者来说可能是新的。本次演讲将讨论物联网环境对实际程序员意味着什么,以及物联网的应用程序和应用程序生态系统可能是什么样子。演讲还将讨论这种新环境给软件工程带来的问题和公开挑战,为我们社区的研究人员指出新的机会。

引用为

Jong-Deok Choi。物联网大规模编程(邀请谈话)。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第2页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{choi:LIPIcs.ECOOP.2015.2,author={Choi,Jong-Deok},title={{物联网大规模编程}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={2--2},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2015.2},URN={URN:nbn:de:0030-drops-52132},doi={10.4230/LIPIcs.ECOOP.2015.2},annote={关键词:软件开发方法论、软件体系结构、编程模型、软件工程、物联网}}
文件
邀请的谈话
“跨堆栈”软件验证(受邀演讲)

作者:亚历山大·萨默斯


摘要
生产可靠的程序一直很困难,编程任务的复杂性和多样性不断增加。幸运的是,计算能力的增长也使自动推理取得了实质性进展,特别是SMT求解器和自动定理证明器的开发。反过来,这也为程序正确性带来了新的研究方向,目的是生产能够自动验证软件复杂属性的工具。发展有用的核查技术需要平衡许多相互竞争的因素。我们希望在我们能够支持的程序属性中尽可能具有表现力——如果我们能够写下来,我们希望能够证明它。但是,为了超越笔墨和纸张的努力,我们还需要调整我们的方法,使其能够通过工具实现或编码,理想情况下,结果既精确又高效。为了让事情变得更困难,如果我们希望开发出日常程序员可以从中受益的工具,我们还需要一些技术,这些技术需要用户进行可管理的交互,并提供可理解的反馈。在本次演讲中,我将描述我在处理此类问题时的一些有趣经历,从前端程序逻辑和推理技术的设计到底层实现技术的开发,以及其间出现的棘手的编码挑战。

引用为

亚历山大·萨默斯。软件验证“跨堆栈”(受邀演讲)。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第3页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{夏季:LIPIcs.ECOOP.2015.3,author={萨默斯,亚历山大J.},title={{软件验证“跨堆栈”}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={3--3},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2015.3},URN={URN:nbn:de:0030-drops-52141},doi={10.4230/LIPIcs.ECOOP.2015.3},annote={关键词:软件验证、程序逻辑、自动验证器、程序正确性、SMT求解器}}
文件
走向实用的渐进式打字

作者:Asumu Takikawa、Daniel Feltey、Earl Dean、Matthew Flatt、Robert Bruce Findler、Sam Tobin-Hochstadt和Matthias Felleisen


摘要
在过去的20年里,程序员已经接受了动态类型的编程语言。到目前为止,他们还意识到,这些语言中的程序缺乏用于软件工程目的的可靠类型信息。逐步打字解决了这个问题;它使程序员能够在零碎的基础上用声音类型信息注释现有系统。本文介绍了一种功能齐全的基于类的语言的渐变类型系统的实现,以及一种新的渐变类型性能评估框架。

引用为

Asumu Takikawa、Daniel Feltey、Earl Dean、Matthew Flatt、Robert Bruce Findler、Sam Tobin-Hochstadt和Matthias Felleisen。走向实用的渐进式打字。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第4-27页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{takikawa_et_al:LIPIcs.ECOOP.2015.4,author={Takikawa、Asumu和Feltey、Daniel和Dean、Earl和Flatt、Matthew和Findler、Robert Bruce和Tobin-Hochstadt、Sam和Felleisen、Matthias},title={{走向实用渐变打字}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={4--27},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.4},URN={URN:nbn:de:0030-drops-52156},doi={10.4230/LIPIcs.ECOOP.2015.4},annote={关键词:渐进式键入,面向对象编程,性能评估}}
文件
TreatJS:JavaScript的高阶合同

作者:马蒂亚斯·基尔和彼得·蒂曼


摘要
TreatJS是一个用于JavaScript的嵌入语言的高阶契约系统,它通过运行时监控来执行契约。除了为构建高阶契约(基础契约、函数契约和对象契约)提供标准抽象之外,TreatJS的新贡献是它对不干涉契约执行的保证,它对责任分配的系统方法、对并集和交集类型形式的契约的支持,以及参数化契约范围的概念,这是可组合的运行时生成契约的构建块,它推广了依赖功能契约。TreatJS是作为一个库实现的,因此可以使用完整的JavaScript语言指定合同的所有方面。该库依赖JavaScript代理来保证合同的完全插入。它进一步利用JavaScript的反射特性在沙箱环境中运行契约,从而确保契约代码的执行不会修改应用程序状态。不需要在JavaScript运行时系统中进行源代码转换或更改。使用谷歌辛烷值基准评估合同对执行速度的影响。

引用为

马蒂亚斯·基尔和彼得·蒂曼。TreatJS:JavaScripts的高阶合同。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第28-51页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{keil_et_al:LIPIcs.ECOOP.2015.28,author={Keil、Matthias和Thiemann、Peter},title={{TreatJS:JavaScripts}}的高阶合同,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={28--51},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.28},URN={URN:nbn:de:0030-drops-52164},doi={10.4230/LIPIcs.ECOOP.2015.28},annote={Keywords:高级合同、JavaScript、代理}}
文件
信任,但验证:动态语言的两阶段键入

作者:Panagiotis Vekris、Benjamin Cosman和Ranjit Jhala


摘要
在静态键入所谓的动态语言时,一个关键挑战是基于值的重载的普遍存在,在这种情况下,给定的函数可以根据其参数的类型进行动态反射和行为。因此,为了建立基本类型,分析必须精确地推理值,但在存在高阶函数和多态性的情况下,这种推理本身可能需要基本类型。在本文中,我们通过引入两阶段类型的框架来解决这个鸡和蛋的问题。第一个“信任”阶段执行经典的,即流、路径和值敏感的类型检查,以将基本类型分配给各种程序表达式。当检查由于价值敏感性而不可避免地遇到“错误”时,它会用DEAD-casts来包装有问题的表达式,从而明确第二阶段必须履行的信托义务。第二阶段使用精化类型,这是一种流和路径敏感分析,它用逻辑谓词修饰第一阶段的类型,以跟踪值关系,从而验证强制转换并为动态类型语言建立其他正确性属性。

引用为

Panagiotis Vekris、Benjamin Cosman和Ranjit Jhala。信任,但验证:动态语言的两阶段键入。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第52-75页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{vekris_et_al:LIPIcs.ECOOP.2015.52,author={Vekris、Panagiotis和Cosman、Benjamin和Jhala、Ranjit},title={{信任,但验证:动态语言的两阶段键入}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={52--75},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.52},URN={URN:nbn:de:00030-drops-52173},doi={10.4230/LIPIcs.ECOOP.2015.52},annote={关键词:动态语言,类型系统,精化类型,交集类型,重载}}
文件
TypeScript的具体类型

作者:Gregor Richards、Francesco Zappa Nardelli和Jan Vitek


摘要
Typescript使用可选类型注释扩展JavaScript,这些注释在设计上是不可靠的,并且Typescript编译器在发出代码时会丢弃这些注释。此设计点保留了开发人员熟悉的编程习惯用法,并允许他们保持遗留代码不变,同时在程序中具有类型注释的部分中提供了静态错误检查措施。我们为TypeScript提供了一种替代设计,在这种设计中可以支持相同程度的动态性,但可以加强类型以提供硬保证。我们报告了一个名为StrongScript的实现,它可以在V8 JavaScript引擎的修改版本上运行时提高类型化程序的运行时性能。

引用为

Gregor Richards、Francesco Zappa Nardelli和Jan Vitek。TypeScript的具体类型。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第76-100页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{richards_et_al:LIPIcs.ECOOP.2015.76,author={Richards,Gregor和Zappa Nardelli,Francesco和Vitek,Jan},title={{TypeScript}}的具体类型,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={76--100},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.76},URN={URN:nbn:de:0030-drops-52185},doi={10.4230/LIPIcs.ECOOP.2015.76},annote={关键词:渐进式键入,动态语言}}
文件
通过惰性基本块版本控制简单有效地删除类型检查

作者:马克西姆·谢瓦利尔·博伊斯维特和马克·费利


摘要
JavaScript和Python等动态类型编程语言将类型检查推迟到运行时。为了最大限度地提高性能,动态语言VM实现必须尝试消除冗余的动态类型检查。然而,类型推理分析通常代价高昂,并且涉及编译时间和结果精度之间的权衡。这导致创建越来越复杂的多层VM体系结构。本文介绍了惰性基本块版本控制,这是一种简单的JIT编译技术,可以有效地从关键代码路径中删除冗余类型检查。这种新方法在传播上下文相关的类型信息的同时,延迟地实时生成基本块的类型特定版本。这不需要使用昂贵的程序分析,不受传统类型分析的精度限制,并避免了投机优化技术的实现复杂性。我们已经在JavaScript JIT编译器中实现了过程内惰性基本块版本控制。该方法与经典的基于流的类型分析进行了比较。懒惰的基本块版本控制在所有基准上都表现得很好或更好。平均而言,71%的型式试验被淘汰,加速率高达50%。我们还表明,在几个基准上,我们的实现比TraceMonkey(一种针对JavaScript的跟踪JIT编译器)生成更高效的机器代码。实现简单、算法复杂度低和良好的运行时性能的结合使得基本块版本控制对基准JIT编译器具有吸引力。

引用为

马克西姆·谢瓦利·博伊斯维特和马克·费利。通过惰性基本块版本控制简单有效地删除类型检查。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第101-123页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{chevalierboivert_et_al:LIPIcs.ECOOP.2015.01,author={谢瓦利尔·博伊斯维特(Chevalier-Boisvert)、马克西姆(Maxime)和费利(Feeley)、马克(Marc}),title={{通过惰性基本块版本控制删除简单有效的类型检查}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={101--123},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/documents/10.4230/LIPIcs.ECOOP.2015.101},URN={URN:nbn:de:0030-drops-52196},doi={10.4230/LIPIcs.ECOOP.2015.101},annote={关键词:实时编译、动态优化、类型检查、代码生成、JavaScript}}
文件
出现异常时的循环平铺

作者:阿比拉什·班达里和V.Krishna Nandivada


摘要
OO语言中的异常为处理异常情况提供了一种方便的机制。然而,由于可能的交叉迭代控制依赖性,许多循环优化技术不能应用于循环体中存在条件throw语句的情况。编译器要么忽略此类throw语句并应用传统的循环优化(语义非保留),要么保守地避免调用所有这些优化(效率低下)。如果优化可以以语义保持的方式应用于(可能)抛出异常的循环,那么我们将循环优化定义为异常安全。在本文中,我们提出了一个进行异常安全循环优化的广义方案,并提出了一种优化的异常安全循环平铺(oESLT)方案,作为其特化。oESLT平铺输入循环,假设永远不会抛出异常。为了确保语义保持(在抛出异常的情况下),oESLT生成代码以回滚在高级迭代中完成的更新(未优化的代码不会执行的迭代,而是由oESLT所生成的代码推测执行的迭代)并安全地执行延迟的迭代(未优化的代码本可以执行的迭代,但不是由oESLT生成的代码执行的迭代)。为了使回滚阶段有效工作,oESLT确定了要备份的最少元素数,并生成了必要的代码。我们在GCC 4.8的Graphite框架中实现了oESLT,以及一个简单的方案(nESLT,在这里我们备份每个元素,并在抛出异常时执行完全回滚和安全执行)。为了帮助这一过程,我们定义了一个名为ESCoP(扩展静态控制部件)的新程序区域,它有助于识别具有多个出口点的循环,并与底层多面体表示接口。我们使用流行的PolyBench套件对nESLT和oESLT与未优化版本进行了比较评估。

引用为

阿比拉什·班达里(Abhilash Bhandari)和V.Krishna Nandivada。出现异常时的循环平铺。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第124-148页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{bhandari_et_al:LIPIcs.ECOOP.2015.124,作者={Bhandari,Abhilash和Nandivada,V.Krishna},title={{出现异常时的循环平铺}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={124--148},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.124},URN={URN:nbn:de:0030-drops-52202},doi={10.4230/LIPIcs.ECOOP.2015.124},annote={Keywords:编译器优化、语义保留、异常、循环}}
文件
JavaScript中的透明对象代理

作者:马蒂亚斯·基尔(Matthias Keil)、桑哈·纳拉扬·古里亚(Sankha Narayan Guria)、安德烈亚斯·施莱格尔(Andreas Schlegel)、曼努埃尔·杰夫肯(Manuel Geffken)和彼得·蒂曼(Peter Thiemann)


摘要
代理是对象自适应的瑞士军刀。它们引入了一种间接级别来拦截目标对象上的选择操作,并将其作为对处理程序的方法调用进行转移。代理有很多用途,比如实现访问控制、强制执行合同、虚拟化资源。代理API设计中的一个重要问题是代理对象是否应继承其目标的标识。显然,代理对于安全相关的应用程序应该有自己的身份,而其他应用程序,尤其是合同系统,需要与目标对象相比较的透明代理。我们研究了代理的各种用例中的透明度问题,讨论了获得透明度的不同方法,并提出了两种需要在JavaScript引擎中进行适度修改且程序员无法绕过的设计。我们在SpiderMonkey JavaScript解释器和字节码编译器中实现了我们的设计。我们的评估表明,的这些修改对JavaScript引擎的基准性能没有统计上的显著影响。此外,我们还演示了基于包装器的契约系统需要透明代理,以避免在实际环境中干扰程序执行。

引用为

马提亚斯·基尔(Matthias Keil)、桑哈·纳拉扬·古里亚(Sankha Narayan Guria)、安德烈亚斯·施莱格尔(Andreas Schlegel)、曼努埃尔·杰夫肯(Manuel Geffken)和彼得·蒂曼(Peter Thiemann)。JavaScript中的透明对象代理。第29届欧洲面向对象编程会议(ECOOP 2015)。《莱布尼茨国际信息学论文集》,第37卷,第149-173页,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2015)


将BibTex复制到剪贴板

@会议记录{keil_et_al:LIPIcs.ECOOP.2015.149,作者={Keil、Matthias和Guria、Sankha Narayan和Schlegel、Andreas和Geffken、Manuel和Thiemann、Peter},title={{JavaScript}}中的透明对象代理,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页码={149-173},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.149},URN={URN:nbn:de:0030-drops-52299},doi={10.4230/LIPIcs.ECOOP.2015.149},annote={关键词:JavaScript、代理、相等、合同}}
文件
标记对象理论

作者:Joseph Lee、Jonathan Aldrich、Troy Shaw和Alex Potanin


摘要
面向对象构造的基础模型通常将对象建模为具有结构类型的记录。然而,许多面向对象的语言是基于类的;这些语言的静态类型的形式化模型往往牺牲了基于记录的模型的基本性质,而且不能表示动态类加载或创建。在本文中,我们探讨了如何使用类型理论的基本构造来为支持动态类创建的静态类型的面向对象语言建模。我们从一个受类型理论驱动的可扩展标记构造开始,并对其进行调整以支持关于类层次结构和每个对象支持的标记的静态推理。结果是一个模型更好地解释了面向对象和函数编程范式之间的关系,建议对函数编程语言进行有用的增强,并为更具表现力的静态类型面向对象语言铺平了道路。按照这种思路,我们描述了利用我们的理论的Wyvern语言的设计和实现。

引用为

Joseph Lee、Jonathan Aldrich、Troy Shaw和Alex Potanin。标记对象理论。第29届欧洲面向对象编程会议(ECOOP 2015)。《莱布尼茨国际信息学论文集》,第37卷,第174-197页,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2015)


将BibTex复制到剪贴板

@会议记录{lee_et_al:LIPIcs.ECOOP.2015.174,author={Lee、Joseph和Aldrich、Jonathan和Shaw、Troy和Potanin、Alex},title={{标记对象理论}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},pages={174-197},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.174},URN={URN:nbn:de:0030-drops-52305},doi={10.4230/LIPIcs.ECOOP.2015.174},annote={关键词:对象、类、标记、标称和结构类型}}
文件
用于命名输入的品牌对象

作者:蒂莫西·琼斯、迈克尔·霍默和詹姆斯·诺布尔


摘要
Scala、Whiteoak和Unity等系统中的结构对象类型和标称对象类型的组合集中于使用结构子类型扩展现有的标称、基于类的系统。名词性键入的典型规则不适合这样的扩展,导致了重大修改。将对象标记添加到现有的结构系统中,可以集成标称类型和结构类型,而不会使类型系统过于复杂。我们使用结构类型语言Grace的现有功能,以及将品牌视为标称类型的静态类型检查器,将品牌对象实现为显式类型对象。我们证明了这些品牌在Grace的现有实现中是有用的,并提供了该语言扩展的正式模型。

引用为

蒂莫西·琼斯、迈克尔·霍默和詹姆斯·诺布尔。用于标称输入的品牌对象。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第198-221页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{jones_et_al:LIPIcs.ECOOP.2015.198,作者={Jones,Timothy和Homer,Michael和Noble,James},title={{名词性打字的品牌对象}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={198--221},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.198},URN={URN:nbn:de:0030-drops-52314},doi={10.4230/LIPIcs.ECOOP.2015.198},annote={关键词:品牌、类型、结构、名义、格雷斯}}
文件
受试者在场时的访问权限分析

作者:保琳娜·森托泽、马克·皮斯托亚和奥马尔·特里普


摘要
现代软件开发和运行时环境,如Java和Microsoft。NET公共语言运行库(CLR)采用了声明形式的访问控制。权限被授予代码提供程序,在执行期间,平台会验证安全敏感操作所需的权限与授予执行代码的权限之间的兼容性。虽然方便,但配置程序的访问控制策略并不容易。如果代码组件未被授予足够的权限,则可能会发生授权失败。因此,安全管理员倾向于定义过于宽松的策略,这违反了最小特权原则(PLP)。大量研究致力于构建程序分析工具,以计算程序的最佳策略。然而,Java和CLR也允许在主题(用户或服务)的授权下执行代码,并且没有任何程序分析解决方案能够解决在存在主题的情况下确定程序策略的挑战。本文介绍了主题访问权限分析(SARA),这是一种新的分析算法,用于静态计算主题在运行时所需的权限。我们已经将SARA应用于IBM WebSphere Application Server中的348个库,这是一个用Java编写的商业企业应用程序服务器,包含200多万行代码,需要支持Java权限和基于主题的安全模型。SARA检测到263个违反PLP的行为,219个缺少权限的策略案例,以及29个导致代码在主体权限下不必要地执行的错误。SARA自动更正了所有这些漏洞,并为所有库合成了新的策略,误报率为5%,每个库的平均运行时间为103秒。严重急性呼吸系统综合征还实施了一些机制,以减轻由于反射和本地代码而导致的假阴性风险;根据测试结果进行全面评估,未发现假阴性。SARA使IBM WebSphere Application Server能够接收信息技术安全评估保证级别4的通用标准认证。

引用为

保琳娜·森托泽、马可·皮斯托亚和奥马尔·特里普。在受试者在场的情况下进行访问权限分析。在第29届面向对象编程欧洲会议(ECOOP 2015)上。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第222-246页,达格斯图尔-莱布尼兹-中央信息学院(2015)


将BibTex复制到剪贴板

@会议记录{centonze_et_al:LIPIcs.ECOOP.2015.222,author={Centonze、Paolina和Pistoia、Marco和Tripp、Omer},title={{主体在场时的访问权限分析}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={222--246},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.222},URN={URN:nbn:de:0030-drops-52249},doi={10.4230/LIPIcs.ECOOP.2015.222},annote={关键词:静态分析、安全性、访问控制}}
文件
变异性抽象:基于家族分析中速度的交易精度

作者:Aleksandar S.Dimovski、Claus Brabrand和Andrzej Wasowski


摘要
基于系列(提升)的软件产品线(SPL)数据流分析能够分析所有有效的产品(变体),而无需显式生成任何产品。它只接受通用代码库作为输入,该代码库对SPL的所有变体进行编码,并生成与所有变体对应的分析结果。然而,提升分析的计算成本本质上仍然取决于变量的数量(在最坏的情况下,变量的数量是指数的)。对于大量特征,提升分析可能成本过高,甚至不可行。在本文中,我们引入了被定义为伽罗瓦连接的可变性抽象,并使用抽象解释作为SPL程序的近似(抽象)提升分析的基于计算的推导的形式化方法,这些分析在结构上是合理的。此外,给定一个抽象,我们定义了一个语法转换,将任何SPL程序转换为其抽象版本,以便对抽象SPL的分析与对原始SPL的相应抽象分析相一致。我们在一个适用于面向对象Java程序族的工具中实现了转换,并在三个JavaSPL基准上评估了这种方法的实用性。

引用为

Aleksandar S.Dimovski、Claus Brabrand和Andrzej Wasowski。易变性抽象:基于家族分析的速度交易精度。在第29届面向对象编程欧洲会议(ECOOP 2015)上。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第247-270页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{dimovski_et_al:LIPIcs.ECOOP.2015.247,author={Dimovski,Aleksandar S.和Brabrand,Claus和Wasowski,Andrzej},title={{可变抽象:基于家族分析的速度交易精度}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={247--270},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.247},URN={URN:nbn:de:0030-drops-52253},doi={10.4230/LIPIcs.ECOOP.2015.247},annote={关键词:软件产品线,基于系列的程序分析,抽象解释}}
文件
JavaScript优化指导

作者:文森特·圣穆尔和郭树友


摘要
动态面向对象编程语言(如JavaScript)的性能在很大程度上依赖于高度优化的实时编译器。与所有编译器一样,此类编译器可以在优化过程中自动返回到生成保守的低性能代码。因此,程序员可能会无意中对程序进行看似无害的更改,从而导致用户系统的性能问题。本文介绍了如何解决无提示优化失败的问题。它特别解释了如何为面向对象的即时编译编程语言创建所谓的优化coach。开发和评估基于SpiderMonkey JavaScript引擎,但结果应该推广到各种类似的平台。

引用为

文森特·圣穆尔和郭树友。JavaScript优化指导。第29届欧洲面向对象编程会议(ECOOP 2015)。《莱布尼茨国际信息学论文集》,第37卷,第271-295页,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2015)


将BibTex复制到剪贴板

@会议记录{stamour_et_al:LIPIcs.ECOOP.2015.271,author={St-Amour,Vincent和Guo,Shu-yu},title={{JavaScript}}优化指导,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={271--295},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.271},URN={URN:nbn:de:00030-drops-52260},doi={10.4230/LIPIcs.ECOOP.2015.271},annote={关键词:优化指导,JavaScript,性能工具}}
文件
PerfBlower:通过放大快速检测与内存相关的性能问题

作者:陆芳、梁斗、徐国庆


摘要
托管语言中的性能问题极难找到。尽管为找到这些问题做了很多努力,但现有的大多数工作都集中在如何调试已经出现性能问题的用户提供的测试执行。在软件发布之前,如何有效地发现性能缺陷,这在很大程度上仍然是未知的。因此,性能错误经常会逃逸到生产运行中,从而损害软件的可靠性和用户体验。本文介绍了PerfBlower,它是一个通用的性能测试框架,允许开发人员快速测试Java程序,以发现与内存相关的性能问题。PerfBlower提供了(1)一种新的规范语言ISL,用于描述具有可观察症状的一般类性能问题;(2) 通过emph{虚拟放大}的自动测试预言机;(3)通过对象镜像获得精确的基于参考通道的诊断信息。使用此框架,我们放大了三种不同类型的问题。我们的实验结果表明:(1)ISL的表达能力足以描述各种与内存相关的性能问题;(2) PerfBlower成功区分有问题和无问题的执行;在小工作量下快速发现8个未知问题;和(3)PerfBlower优于现有检测器,并且没有遗漏文献中以前研究过的任何错误。

引用为

陆芳、梁斗、徐国庆。PerfBlower:通过放大快速检测与内存相关的性能问题。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第296-320页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{fang_et_al:LIPIcs.ECOOP.2015.296,author={方、鲁、窦、梁、徐、国庆},title={{PerfBlower:通过放大}}快速检测与内存相关的性能问题,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={296-320},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.296},URN={URN:nbn:de:0030-drops-52278},doi={10.4230/LIPIcs.ECOOP.2015.296},annote={关键词:性能错误、内存问题、托管语言、垃圾收集\}}}
文件
JavaScript的混合DOM-Sensitive更改影响分析

作者:Saba Alimadadi、Ali Mesbah和Karthik Pattabiraman


摘要
JavaScript已经发展成为最受欢迎的编程语言之一。然而,由于与DOM的无缝交互、事件驱动和动态函数调用以及异步客户机/服务器通信等功能,对JavaScript应用程序执行更改影响分析具有挑战性。我们首先对变更传播进行了实证研究,结果表明,在分析中需要考虑JavaScript的DOM相关和动态特性,因为它们会影响变更影响传播。我们通过静态和动态分析的结合,为Javascript提出了一种DOM敏感的混合更改影响分析技术。该方法结合了一种新的排序算法,用于指示影响集中每个实体的重要性。我们的方法是在一个名为Tochal的工具中实现的。我们的评估结果表明,与静态或动态方法相比,Tochal提供了更完整的分析。此外,通过一个工业控制实验,我们发现Tochal帮助开发人员将任务完成时间提高了78%,准确性提高了223%。

引用为

Saba Alimadadi、Ali Mesbah和Karthik Pattabiraman。JavaScript的混合DOM-Sensitive更改影响分析。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第321-345页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{alimadadi_et_al:LIPIcs.ECOOP.2015.321,author={Alimadadi、Saba和Mesbah、Ali和Pattabiraman、Karthik},title={{JavaScript}}的混合DOM-Sensitive更改影响分析,booktitle={第29届面向对象编程欧洲会议(ECOOP 2015)},页码={321--345},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.321},URN={URN:nbn:de:0030-drops-52280},doi={10.4230/LIPIcs.ECOOP.2015.321},annote={关键词:更改影响分析,JavaScript,混合分析}}
文件
内涵效应多态性

作者:Yuheng Long、Yu David Liu和Hridesh Rajan


摘要
类型和效果系统是程序构建和验证的强大工具。我们描述了内涵效应多态性,这是集成静态和动态效应检查的效应系统的新基础。我们的系统允许通过动态类型的轻量级概念来深入检查多态代码的效果。当与参数多态性相结合时,强大的系统利用运行时信息实现精确的效果推理,同时保留了强大的类型安全保证。我们将我们的想法建立在带有区域的命令式核心演算之上。我们设计的技术创新包括效果检查的关系概念,使用有界存在类型捕捉静态类型和动态类型之间的微妙交互,以及差分对齐策略以实现动态类型的效率。我们演示了内涵效应多态性在并发编程、安全性、图形用户界面访问和记忆中的应用。

引用为

Yuheng Long、Yu David Liu和Hridesh Rajan。内涵效应多态性。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第346-370页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{long_et_al:LIPIcs.ECOOP.2015.346,作者={Long,Yuheng and Liu,Yu David and Rajan,Hridesh},title={{内涵效应多态}},booktitle={第29届面向对象编程欧洲会议(ECOOP 2015)},页数={346--370},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.346},URN={URN:nbn:de:0030-drops-52213},doi={10.4230/LIPIcs.ECOOP.2015.346},annote={关键词:内涵效应多态性,类型系统,混合类型}}
文件
可放置对象的类型推断

作者:Riyaz Haque和Jens Palsberg


摘要
在分布式系统中,访问本地数据比访问远程数据快得多。为了帮助程序员,有些语言要求每个访问都是本地的。使用这些语言的程序可以通过首先移动计算位置,然后进行本地访问来访问远程数据。为了加强这一学科,研究人员提出了类型系统,以确定每个访问是否都是本地的,每个位置转换是否合适。然而,这些类型的系统无法处理我们称之为位置遗忘对象的常见编程模式。这些物体在不知道其位置的情况下安全地接触其他物体。作为回应,我们提出了可放置对象的第一类系统,以及有效的推理算法和推理是P-完全的证明。我们的示例语言使用移位和存在类型扩展了Abadi-Cardelli对象演算,并且我们的实现为一些微基准点推断了类型。

引用为

利亚兹·哈克(Riyaz Haque)和延斯·帕尔斯伯格(Jens Palsberg),《宜居物体的类型推断》。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第371-395页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{haque_et_al:LIPIcs.ECOOP.2015.371,author={Haque,Riyaz和Palsberg,Jens},title={{Place-Olivious对象的类型推断}},booktitle={第29届面向对象编程欧洲会议(ECOOP 2015)},页数={371--395},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.371},URN={URN:nbn:de:0030-drops-52223},doi={10.4230/LIPIcs.ECOOP.2015.371},annote={关键词:并行性,局部性,类型}}
文件
异步液体分离类型

作者:Johannes Kloos、Rupak Majumdar和Viktor Vafeiadis


摘要
我们提出了一个精化类型的系统,用于推理异步程序操作共享可变状态。我们的类型系统使用两种思想的组合来保证没有种族和保留用户特定的不变量:细化类型和并发分离逻辑。我们的类型系统允许使用两种成分对程序进行精确推理。首先,我们的类型由一组资源名称索引,类型系统跟踪程序执行对各个堆位置和任务句柄的影响。特别是,它允许对堆位置的类型进行强更新。其次,我们的类型跟踪并发发布任务之间共享状态的所有权,并允许使用权限推理任务之间的所有权转移。我们通过几个示例证明,这两个成分在液体类型框架之上的作用非常强大,足以解释操作共享堆资源的实际、复杂、异步系统的正确行为。我们已经为我们的类型系统实现了类型推理,并用它证明了异步OCaml程序的复杂不变量。我们还展示了类型系统如何检测文件系统实现中的细微并发错误。

引用为

约翰内斯·克鲁斯(Johannes Kloos)、鲁帕克·马朱姆达尔(Rupak Majumdar)和维克托·瓦菲亚迪斯(Viktor Vafeiadis)。异步液体分离类型。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第396-420页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{kloos_et_al:LIPIcs.ECOOP.2015.396,作者={Kloos,Johannes和Majumdar,Rupak和Vafeiadis,Viktor},title={{异步液体分离类型}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={396--420},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.396},URN={URN:nbn:de:0030-drops-52233},doi={10.4230/LIPIcs.ECOOP.2015.396},annote={关键词:液体类型,异步并行,分离逻辑,类型系统}}
文件
推测性任务并行的Eureka规划模型

作者:Shams Imam和Vivek Sarkar


摘要
在本文中,我们描述了Eureka编程模型(EuPM),它简化了推测性并行任务的表达,特别适合于并行搜索和优化应用程序。这项工作的重点是为一般结构化任务并行编程模型中的此类“eureka-style”计算(EuSC)提供清晰的语义并有效支持。在EuSC中,尤里卡事件是程序中宣布找到结果的一个点。由推测任务触发的eureka可能会导致一组相关的推测任务变得多余,并使它们能够在定义良好的程序点处终止。我们的方法提供了一个界限,即在发生这种尤里卡事件后,在冗余推测任务中完成的额外工作。我们确定了由我们的eureka构造支持的各种模式,包括搜索、优化、收敛和软实时截止日期。这些不同的计算模式还可以安全地组合或嵌套在EuPM中,以及常规的任务并行构造,从而实现高度的可组合性和可重用性。正如我们的实现所证明的那样,EuPM也可以有效地实现。我们使用一个协作运行时,该运行时使用分隔的延续来管理冗余任务的终止及其在连接点的同步。与当前的方法相比,EuPM避免了程序员进行繁琐的手动重构的需要,例如,程序员可能需要在调用链中的每个方法中插入if检查和早期返回语句。实验结果表明,使用EuPM的解决方案简化了可编程性,实现了与手工编码的推测性任务解决方案相当的性能,并且性能优于非推测性任务处理方案。

引用为

Shams Imam和Vivek Sarkar。用于推测性任务并行性的Eureka编程模型。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第421-444页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{imam_et_al:LIPIcs.ECOOP.2015.421,author={Imam、Shams和Sarkar、Vivek},title={{The Eureka Programming Model for Speculative Task Parallelism}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={421--444},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.421},URN={URN:nbn:de:0030-drops-52327},doi={10.4230/LIPIcs.ECOOP.2015.421},annote={关键词:异步完成模型,带分隔符的继续符,Eureka模型,并行编程,推测并行性,任务取消,任务终止}}
文件
烹饪书籍:使JMM实现食谱正规化

作者:古斯塔沃·佩特里(Gustavo Petri)、扬·维泰克(Jan Vitek)和苏雷什·贾加纳森(Suresh Jagannathan)


摘要
Java内存模型(JMM)旨在描述并发Java程序的含义。然而,由于模型的复杂性,它的定义不能轻易移植到优化的Java编译器中,尽管其设计的一个重要理由是确保Java编译器优化不会因语言的并发特性而受到过度阻碍。作为回应,Lea的JSR-133编译器编写者食谱(Cookbook for Compiler Writers)开发了一本非正式指南,用于在不同(松弛内存)平台上实现JMM的基本原理。该食谱的目标是为编译器编写人员提供一组相对简单但相当有效的基于重新排序的食谱,以满足JMM约束。在本文中,我们提出了食谱的第一种形式化,提供了一个语义基础,在此基础上可以严格建立食谱定义的食谱和JMM强制执行的保证之间的关系。值得注意的是,我们调查的一个结果是,食谱中定义的将Java编译到Power上的规则与JMM的要求不一致,这是一个令人惊讶的结果,也证明了我们需要正式可证明的定义来推理Java中复杂(和活泼)的并发模式,以及它们在现代松弛内存硬件上的实现。我们的形式化使Lea建议的那种依赖于体系结构的中间表示与Power和x86的机器抽象之间能够进行模拟。此外,我们为与目标平台承认的行为不一致的食谱食谱提供了修复,并证明了这些修复的正确性。

引用为

古斯塔沃·佩特里(Gustavo Petri)、扬·维泰克(Jan Vitek)和苏雷什·贾加纳森(Suresh Jagannathan)。烹饪书籍:正式化JMM实现食谱。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第445-469页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{petri_et_al:LIPIcs.ECOOP.2015.445,author={Petri、Gustavo和Vitek、Jan和Jagannathan、Suresh},title={{写书:形式化JMM实现方法}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页码={445--469},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.445},URN={URN:nbn:de:0030-drops-52334},doi={10.4230/LIPIcs.ECOOP.2015.445},annote={关键词:并发,Java,内存模型,松弛内存}}
文件
定义多核体系结构中并发对象的正确性条件

作者:Brijesh Dongol、John Derrick、Lindsay Groves和Graeme Smith


摘要
并发对象的正确性是根据条件来定义的,这些条件决定了并发对象的历史记录与相应顺序对象的历史纪录之间的允许关系。多年来,人们提出了许多正确性条件,最近又提出了更多的条件,因为实现并发对象的算法已经适应了具有宽松内存体系结构的多核处理器。我们提出了一个定义多核体系结构正确性条件的形式化框架,涵盖了全序内存的标准条件和放松内存的更新条件,这允许它们以统一的方式表示,从而简化了比较。我们的框架区分了顺序属性和承诺属性,从而能够建立正确性条件的层次结构。我们详细考虑了总存储顺序(TSO)内存模型,使用我们的框架形式化了TSO的已知条件,并开发了这些条件的顺序一致变体。我们提出了一种TSO存储器的工作密封设计,它是不可线性化的,但对于这些新条件是正确的。使用我们的框架,我们确定了一个新的非阻塞组成条件,即围栏一致性,它位于TSO的已知条件之间,旨在捕捉程序员指定围栏的意图。

引用为

Brijesh Dongol、John Derrick、Lindsay Groves和Graeme Smith。定义多核体系结构中并发对象的正确性条件。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第470-494页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{dongol_et_al:LIPIcs.ECOOP.2015.470,author={Dongol、Brijesh和Derrick、John和Groves、Lindsay和Smith、Graeme},title={{定义多核架构中并发对象的正确性条件}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={470--494},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.470},URN={URN:nbn:de:0030-drops-52348},doi={10.4230/LIPIcs.ECOOP.2015.470},annote={关键词:并发对象,正确性,松弛内存,验证}}
文件
与C预处理器的爱恨关系:一项访谈研究

作者:弗拉维奥·梅德罗斯、克里斯蒂安·卡斯特纳、马尔西奥·里贝罗、莎拉·纳迪和罗希特·盖伊


摘要
在关注点分离、错误倾向和代码混淆等方面,C预处理器受到了学术界的强烈批评,但在实践中得到了广泛应用。预处理器有许多(主要是学术性的)替代方案,但尚未在实践中采用。由于开发人员不顾所有批评和研究继续使用预处理器,我们询问实践者如何看待C预处理器。我们采访了40名开发人员,使用扎根理论分析数据,并用202名开发人员的调查数据、存储库挖掘和之前研究的结果交叉验证了结果。特别是,我们调查了四个研究问题,这些问题与预处理器为什么仍在实践中广泛使用、常见问题、替代方案以及未规范注释的影响有关。我们的研究表明,开发人员意识到C预处理器受到的批评,但仍然使用它,主要是为了可移植性和可变性。许多开发人员表示,他们经常面临与预处理器相关的问题和与预处理器相关的错误。我们的大多数受访者都没有看到任何可以完全取代C预处理器的当前C本机技术。然而,开发人员倾向于使用指导原则来缓解问题,即使这些指导原则没有得到一致的执行。我们报告了从我们的研究中获得的关键见解,并讨论了对从业者和研究人员的启示,即如何更好地使用C预处理器来最小化其负面影响。

引用为

弗拉维奥·梅德罗斯(Flávio Medeiros)、克里斯蒂安·卡斯特纳(Christian Kästner)、马尔西奥·里贝罗(Márcio Ribeiro)、莎拉·纳迪(Sarah Nadi)和罗希特·盖伊(Rohit Gheyi)。与C预处理器的爱/恨关系:一项访谈研究。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第495-518页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{medeiros_et_al:LIPIcs.ECOOP.2015.495,author={Medeiros,F1{a} 维奥和K\“{a} 斯特纳克里斯蒂安和里贝罗{a} rcio公司还有纳迪、莎拉、盖伊、罗希特,title={{与C预处理器的爱/恨关系:访谈研究}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={495--518},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.495},URN={URN:nbn:de:00030-drops-52350},doi={10.4230/LIPIcs.ECOOP.2015.495},annote={关键词:C预处理器、CPP、访谈、调查和扎根理论}}
文件
好、坏和丑:JavaScript中隐式类型转换的实证研究

作者:迈克尔·普拉德尔和库什克·森


摘要
大多数流行的编程语言支持将一种类型的值转换为另一种类型值而不进行任何显式转换的情况。这种隐式类型转换或类型强制是一种备受争议的语言特性。支持者认为类型强制可以编写简洁的代码。反对者认为类型强制很容易出错,并且会降低程序的可理解性。本文研究JavaScript中类型强制的使用,JavaScript是一种因广泛使用强制而臭名昭著的语言。我们动态分析数百个程序,包括真实的web应用程序和流行的基准程序。我们发现胁迫被广泛使用(在所有函数执行中占80.42%),并且大多数胁迫可能是无害的(98.85%)。此外,我们还确定了一组罕见且可能有害的强制,而安全的JavaScript子集或未来的语言设计可能会禁止这些强制。我们的结果表明,类型强制比通常假设的要小得多,针对真实JavaScript程序的分析必须考虑强制。

引用为

Michael Pradel和Koushik Sen.好、坏和丑:JavaScript中隐式类型转换的实证研究。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第519-541页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{pradel_et_al:LIPIcs.ECOOP.2015.519,author={Pradel、Michael和Sen、Koushik},title={{好的、坏的和丑的:JavaScript中隐式类型转换的实证研究}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={519--541},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},编辑={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.519},URN={URN:nbn:de:0030-drops-52367},doi={10.4230/LIPIcs.ECOOP.2015.519},annote={关键词:类型,类型强制,JavaScript,动态类型语言}}
文件
规则语言的模式演算:表达性、编译和机械化

作者:Avraham Shinnar、Jéróme Siméon和Martin Hirzel


摘要
本文介绍了产生式规则语言中模式匹配的核心演算:聚合匹配模式演算(CAMP)。CAMP的表达能力足以捕获JRules等现代规则语言,包括聚合扩展。我们展示了如何将CAMP编译成嵌套关系代数(NRA),只需进行最小扩展。这为将关系技术应用于在大型存储上运行规则铺平了道路。此外,我们还表明,使用命名嵌套关系演算(NNRC)作为中间步骤,NRA也可以编译回CAMP。我们使用现代理论证明技术将正确性证明、程序大小保留和翻译类型保留机械化。类型保留的一个推论是,CAMP和NRA的多态类型推断都是NP完全的。CAMP及其与NRA的通信为使用数据库技术高效实现规则语言奠定了基础。

引用为

Avraham Shinnar、Jéróme Siméon和Martin Hirzel。规则语言的模式演算:表达性、编译和机械化。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第542-567页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{shinnar_et_al:LIPIcs.ECOOP.2015.542,作者={Shinnar、Avraham和Sim\'{e} 上的,J\'{e} 第页\^{o} 我和Martin Hirzel,title={规则语言的模式演算:表达性、编译和机械化}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={542--567},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.542},URN={URN:nbn:de:0030-drops-52374},doi={10.4230/LIPIcs.ECOOP.2015.542},annote={关键词:规则,模式匹配,聚合,嵌套查询,机械化}}
文件
全局序列协议:复制共享状态的稳健抽象

作者:塞巴斯蒂安·伯克哈特(Sebastian Burckhardt)、达安·莱扬(Daan Leijen)、乔纳森·普罗琴科(Jonathan Protzenko)和曼努埃尔·芬德里奇(Manuel Fähndrich)


摘要
在云连接移动设备的时代,用户希望能够随时在任何地方读写共享数据的响应应用程序,即使网络连接速度慢或不可用。解决方案是异步复制数据和传播更新。不幸的是,这种机制很难理解、解释和实施。为了应对这些挑战,我们提出了GSP(全局序列协议),这是一种用于复制共享数据的操作模型。GSP足够简单和抽象,可以作为一个心理参考模型,并提供对异步更新传播(更新事务、强同步)的精细控制。它抽象了数据模型,因此既适用于简单的键值存储,也适用于复杂的结构化数据。然后,我们展示了如何在客户端-服务器架构上稳健地实现GSP(屏蔽静默客户端崩溃、服务器崩溃恢复故障和任意网络故障)并高效地(通过减少更新序列来传输和存储最少的信息)。

引用为

塞巴斯蒂安·伯克哈特(Sebastian Burckhardt)、达安·莱扬(Daan Leijen)、乔纳森·普罗琴科(Jonathan Protzenko)和曼努埃尔·芬德里奇(Manuel Fähndrich)。全局序列协议:复制共享状态的稳健抽象。在第29届面向对象编程欧洲会议(ECOOP 2015)上。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第568-590页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{burckhardt_et_al:LIPIcs.ECOOP.2015.568,author={伯克哈特、塞巴斯蒂安和莱扬、达安和普罗琴科、乔纳森和F“{a} hndrich公司,曼努埃尔},title={{全局序列协议:复制共享状态的稳健抽象}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={568--590},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.568},URN={URN:nbn:de:0030-drops-52385},doi={10.4230/LIPIcs.ECOOP.2015.568},annote={关键词:分布式计算,最终一致性,GSP协议}}
文件
按单流:带对象代数的可扩展管道

作者:阿格洛斯·比布迪斯(Aggelos Biboudis)、尼克·帕拉迪诺斯(Nick Palladinos)、乔治·福图尼斯(George Fourtounis)和亚尼斯·斯马拉格达基斯(Yannis Smaragdakis)


摘要
流式库在面向对象语言中已经无处不在,最近在Java、C#和Scala中都有提供。然而,所有这些库在可扩展性方面都存在问题:如果不更改库代码,就无法更改流管道的语义(例如,融合过滤器操作符、延迟执行计算、记录操作)。此外,在某些语言中,甚至不可能在不更改库的情况下添加新操作符(例如,除了标准映射、过滤器等之外,还可以添加zip操作符)。我们通过流媒体库的新设计解决了这种可扩展性缺陷。该设计的基础架构很大程度上借鉴了Oliveira和Cook针对表达式问题的对象代数解决方案,并通过暴露迭代的推/拉特征和更高类型多态性编码的设计进行了扩展。我们将我们的设计应用于Java,并表明添加完全可扩展性伴随着高性能,与原始的、高度优化的Java流库相匹配或超过。

引用为

阿格洛斯·比布迪斯(Aggelos Biboudis)、尼克·帕拉迪诺斯(Nick Palladinos)、乔治·福图尼斯(George Fourtounis)和亚尼斯·斯马拉格达基斯(Yannis Smaragdakis)。流式点菜:带对象代数的可扩展管道。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第591-613页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{biboudis_et_al:LIPIcs.ECOOP.2015.591,author={Biboudis、Aggelos和Palladinos、Nick和Fourtounis、George和Smaragdakis、Yannis},title={{Streams a la carte:使用对象代数的可扩展管道}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页码={591--613},series={Leibniz国际信息学论文集(LIPIcs)},ISBN={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.591},URN={URN:nbn:de:0030-drops-52392},doi={10.4230/LIPIcs.ECOOP.2015.591},annote={关键词:对象代数、流、可扩展性、领域特定语言、表达式问题、库设计}}
文件
自动验证器中对魔杖的轻量级支持

作者:马尔特·施沃尔霍夫(Malte Schwerhoff)和亚历山大·萨默斯(Alexander J.Summers)


摘要
基于许可的验证逻辑(如分离逻辑)在过去十年中促成了许多实用验证工具的开发。验证程序使用分离连词A*B来优雅地处理混叠问题、成帧、竞争条件等。与分离连词一起引入的魔术棒连接词,书写为A-*B,可以描述当前状态的假设修改,并为结果提供保证。它的形式语义涉及对状态进行量化:因此,自动验证工具通常不支持连接词。尽管如此,魔术棒在手动和机械化证明中还是很有用的,例如,用于指定循环不变量和部分数据结构。在本文中,我们展示了如何将对魔杖的支持集成到自动验证器中,这需要工具用户的低规范开销,因为这是一种自动选择魔杖公式足迹的新方法。我们展示了如何扩展此技术,以便与递归谓词等常见规范特性进行优雅的交互。我们的解决方案旨在与各种逻辑和底层实现技术兼容。我们已经实现了我们的方法,可以下载一个原型验证器以及一组示例。

引用为

马尔特·施沃尔霍夫(Malte Schwerhoff)和亚历山大·萨默斯(Alexander J.Summers)。自动验证器中对魔杖的轻量级支持。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第614-638页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{schwerhoff_et_al:LIPIcs.ECOOP.2015.614,作者={Schwerhoff,Malte and Summers,Alexander J.},title={{自动验证器中魔术棒的轻量级支持}},booktitle={第29届面向对象编程欧洲会议(ECOOP 2015)},页数={614--638},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.614},URN={URN:nbn:de:0030-drops-52408},doi={10.4230/LIPIcs.ECOOP.2015.614},annote={关键词:魔杖,软件验证,自动验证程序,分离逻辑,隐式动态框架}}
文件
非终止程序中有限块的模块化验证

作者:庞图斯·博斯特伦和彼得·米勒


摘要
大多数多线程程序通过阻塞操作(例如获取锁或加入其他线程)来同步线程。这种程序的一个重要正确性属性是每个线程都能取得进展,也就是说,不会永远被阻塞。对于所有线程都终止的程序,进程基本上是从无死锁开始的。然而,对于程序包含服务器或参与者等非终止线程的常见情况,死锁自由是不够的。例如,如果一个线程试图加入该线程或获取该线程持有的锁,则该线程可能会被非终止线程永远阻塞。本文提出了一种非终止程序中有限块的验证技术。关键思想是明确跟踪一个线程是否有义务执行解锁另一个线程的操作,例如,有义务释放锁或终止。每项义务都与一项措施相关联,以确保在有限的多个步骤内实现。义务可以在规范中使用,这使得验证模块化。我们通过将编码形式化为Boogie来规范我们的技术,Boogie统一处理不同类型的义务。它将终止检查视为一种特殊情况。

引用为

蓬图斯·博斯特罗姆和彼得·米勒。非终止程序中有限块的模块化验证。第29届欧洲面向对象编程会议(ECOOP 2015)。《莱布尼茨国际信息学论文集》,第37卷,第639-663页,Schloss Dagstuhl–Leibniz Zentrum für Informatik(2015)


将BibTex复制到剪贴板

@会议记录{bostrom_et_al:LIPIcs.ECOOP.2015.639,author={Bostr\“{o} 米、Pontus和M\“{u} 勒尔,Peter},title={{非终止程序中有限块的模块化验证}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={639--663},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.639},URN={URN:nbn:de:0030-drops-52416},doi={10.4230/LIPIcs.ECOOP.2015.639},annote={关键词:程序验证、并发性、活动性、进度、义务}}
文件
模块化终端验证

作者:Bart Jacobs、Dragan Bosnacki和Ruurd Kuiper


摘要
我们提出了一种面向对象程序的模块化描述和总体正确性验证方法。我们从现有的基于分离逻辑和抽象谓词族的部分正确性程序逻辑开始。我们使用由任意序数限定的调用权限来扩展它,并定义了一种规范样式,该样式基于使用方法和方法包作为序数的思想,适当地隐藏实现细节,并将从对象可访问的方法包公开为抽象谓词参数。这些允许每个方法抽象地请求权限,以便在有限的次数内调用它可以访问的所有方法,并将类似的权限委托给它的被调用方。我们用几个例子来说明这种方法。

引用为

Bart Jacobs、Dragan Bosnacki和Ruurd Kuiper。模块化终端验证。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第664-688页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{jacobs_et_al:LIPIcs.ECOOP.2015.664,author={雅各布斯、巴特和博斯纳奇、德拉甘和柯伊伯、鲁德},title={{模块化终端验证}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={664--688},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.664},URN={URN:nbn:de:0030-drops-52422},doi={10.4230/LIPIcs.ECOOP.2015.664},annote={关键词:终止、程序验证、模块验证、分离逻辑、良好的关系}}
文件
PHP应用程序静态分析框架

作者:David Hauzar和Jan Kofron


摘要
PHP和JavaScript等动态语言广泛使用。它们提供动态特性,例如动态类型系统、虚拟和动态方法调用、动态包含以及内置的动态数据结构。这使得很难创建静态分析,例如,用于自动错误发现。然而,利用这些程序中的错误,尤其是在web应用程序中,可能会产生重大影响。在本文中,我们提出了PHP的静态分析框架,它可以自动解析动态语言的常见特性,从而降低定义新的静态分析的复杂性。特别是,该框架能够独立定义动态语言的值和堆分析,并自动、可靠地组合它们。我们使用该框架实现静态污点分析,以发现安全漏洞。该分析揭示了实际应用中以前未知的安全问题。与现有最先进的PHP分析工具相比,它发现了更多真实问题,误报率更低。

引用为

David Hauzar和Jan Kofron。PHP应用程序静态分析框架。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第689-711页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{hauzar_et_al:LIPIcs.ECOOP.2015.689,author={Hauzar,David和Kofron,Jan},title={{PHP应用程序静态分析框架}},booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={689--711},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.689},URN={URN:nbn:de:0030-drops-52435},doi={10.4230/LIPIcs.ECOOP.2015.689},annote={关键词:静态分析、抽象解释、动态语言、PHP、安全}}
文件
JavaScript的自适应上下文敏感分析

作者:魏世毅(Shiyi Wei)和芭芭拉·赖德(Barbara G.Ryder)


摘要
上下文敏感性是一种通过区分函数调用来提高程序分析精度的技术。特定的上下文敏感分析通常是为了适应特定编程语言的编程范式而设计的。JavaScript同时具有面向对象和函数式编程范式。我们的实证研究表明,没有一种上下文敏感分析能够始终为JavaScript应用程序生成精确的结果。这一观察促使我们设计了一个适应性分析,从每个功能的多项选择中选择一个上下文敏感分析。我们的两阶段自适应上下文敏感分析首先从廉价的分析点中提取函数特征,然后根据启发法为每个函数选择专门的上下文敏感分析。实验结果表明,对于基准测试中的几个JavaScript程序,我们的自适应分析比任何单个上下文敏感分析都能获得更精确的结果。

引用为

魏世毅(Shiyi Wei)和芭芭拉·赖德(Barbara G.Ryder)。JavaScript自适应上下文敏感分析。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第712-734页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2015)


将BibTex复制到剪贴板

@会议记录{wei_et_al:LIPIcs.ECOOP.2015.712,作者={Wei,Shiyi and Ryder,Barbara G.},title={{JavaScript}}的自适应上下文敏感分析,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={712--734},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.712},URN={URN:nbn:de:0030-drops-52446},doi={10.4230/LIPIcs.ECOOP.2015.712},annote={关键词:上下文敏感、JavaScript、静态程序分析}}
文件
通过循环敏感性对JavaScript应用程序进行可扩展和精确的静态分析

作者:昌河公园和苏京琉


摘要
JavaScript应用程序的数量和大小都在不断增加,但用于分析大规模JavaScript应用的静态分析技术还没有准备好以可扩展和精确的方式进行分析。即使在用JavaScript构建编译器和操作系统等复杂软件时,开发人员也无法从现有的静态分析器中获得太多好处,因为静态分析器存在可伸缩性和不精确性这两个相互交织的问题。在本文中,我们提出了循环敏感分析(LSA),它通过提高循环中的分析精度来提高分析的可扩展性。LSA通过在分析过程中自动选择循环展开数来根据需要区分循环迭代次数。我们在抽象解释框架中形式化了LSA,并使用Coq证明了其稳健性和精度定理。我们使用5个最流行网站中的主网页和使用前5个JavaScript库的程序的主网页的分析结果来评估LSA的实现,并表明它在分析可伸缩性方面优于最先进的JavaScript静态分析器。我们的机械化和LSA的实施都是公开的。

引用为

昌河公园和苏京琉。通过循环敏感性对JavaScript应用程序进行可扩展和精确的静态分析。第29届欧洲面向对象编程会议(ECOOP 2015)。莱布尼茨国际信息学论文集(LIPIcs),第37卷,第735-756页,达格斯图尔-莱布尼兹-泽特鲁姆信息学研究所(2015)


将BibTex复制到剪贴板

@会议记录{park_et_al:LIPIcs.ECOOP.2015.735,author={Park,Changhee和Ryu,Sukyoung},title={{通过循环敏感度}}对JavaScript应用程序进行可伸缩和精确的静态分析,booktitle={第29届欧洲面向对象编程会议(ECOOP 2015)},页数={735--756},series={Leibniz国际信息学论文集(LIPIcs)},国际标准图书编号={978-3-939897-86-6},ISSN={1868-8969},年份={2015年},体积={37},editor={Boyland,John Tang},publisher={Schloss Dagstuhl--Leibniz Zentrum f{\“u}r Informatik},地址={Dagstuhl,德国},URL={https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2015.735},URN={URN:nbn:de:0030-drops-52458},doi={10.4230/LIPIcs.ECOOP.2015.735},annote={关键词:JavaScript,静态分析,循环}}

过滤器


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

Dagstuhl出版社反馈


感谢您的反馈!

已提交反馈

无法发送消息

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