首页 > 最新文献

ACM Transactions on Programming Languages and Systems最新文献

英文 中文
A Relational Program Logic with Data Abstraction and Dynamic Framing 具有数据抽象和动态框架的关系程序逻辑
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-01-10 DOI: https://dl.acm.org/doi/10.1145/3551497
Anindya Banerjee, Ramana Nagasamudram, David Naumann, Mohammad Nikouei

Dedicated to Tony Hoare.

In a paper published in 1972, Hoare articulated the fundamental notions of hiding invariants and simulations. Hiding: invariants on encapsulated data representations need not be mentioned in specifications that comprise the API of a module. Simulation: correctness of a new data representation and implementation can be established by proving simulation between the old and new implementations using a coupling relation defined on the encapsulated state. These results were formalized semantically and for a simple model of state, though the paper claimed this could be extended to encompass dynamically allocated objects. In recent years, progress has been made toward formalizing the claim, for simulation, though mainly in semantic developments. In this article, hiding and simulation are combined with the idea in Hoare’s 1969 paper: a logic of programs. For an object-based language with dynamic allocation, we introduce a relational Hoare logic with stateful frame conditions that formalizes encapsulation, hiding of invariants, and couplings that relate two implementations. Relations and other assertions are expressed in first-order logic. Specifications can express a wide range of relational properties such as conditional equivalence and noninterference with declassification. The proof rules facilitate relational reasoning by means of convenient alignments and are shown sound with respect to a conventional operational semantics. A derived proof rule for equivalence of linked programs directly embodies representation independence. Applicability to representative examples is demonstrated using an SMT-based implementation.

献给托尼·霍尔。在1972年发表的一篇论文中,Hoare阐述了隐藏不变量和模拟的基本概念。隐藏:封装数据表示的不变量不需要在包含模块API的规范中提及。仿真:通过使用封装状态上定义的耦合关系证明新旧实现之间的仿真,可以建立新的数据表示和实现的正确性。这些结果在语义上是形式化的,并且适用于一个简单的状态模型,尽管论文声称这可以扩展到包含动态分配的对象。近年来,为了模拟,虽然主要是在语义发展方面,但已经在形式化声明方面取得了进展。在本文中,隐藏和模拟与Hoare 1969年论文中的思想相结合:程序的逻辑。对于具有动态分配的基于对象的语言,我们引入了具有有状态框架条件的关系Hoare逻辑,该逻辑形式化了封装、不变量的隐藏以及与两个实现相关的耦合。关系和其他断言用一阶逻辑表示。规范可以表达广泛的关系属性,如条件等价和不干扰解密。证明规则通过方便的对齐来促进关系推理,并且相对于传统的操作语义显示为合理的。推导出的链接程序等价证明规则直接体现了表示独立性。使用基于smt的实现演示了对代表性示例的适用性。
{"title":"A Relational Program Logic with Data Abstraction and Dynamic Framing","authors":"Anindya Banerjee, Ramana Nagasamudram, David Naumann, Mohammad Nikouei","doi":"https://dl.acm.org/doi/10.1145/3551497","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3551497","url":null,"abstract":"<p>Dedicated to Tony Hoare.</p><p>In a paper published in 1972, Hoare articulated the fundamental notions of hiding invariants and simulations. Hiding: invariants on encapsulated data representations need not be mentioned in specifications that comprise the API of a module. Simulation: correctness of a new data representation and implementation can be established by proving simulation between the old and new implementations using a coupling relation defined on the encapsulated state. These results were formalized semantically and for a simple model of state, though the paper claimed this could be extended to encompass dynamically allocated objects. In recent years, progress has been made toward formalizing the claim, for simulation, though mainly in semantic developments. In this article, hiding and simulation are combined with the idea in Hoare’s 1969 paper: a logic of programs. For an object-based language with dynamic allocation, we introduce a relational Hoare logic with stateful frame conditions that formalizes encapsulation, hiding of invariants, and couplings that relate two implementations. Relations and other assertions are expressed in first-order logic. Specifications can express a wide range of relational properties such as conditional equivalence and noninterference with declassification. The proof rules facilitate relational reasoning by means of convenient alignments and are shown sound with respect to a conventional operational semantics. A derived proof rule for equivalence of linked programs directly embodies representation independence. Applicability to representative examples is demonstrated using an SMT-based implementation.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"261 10","pages":""},"PeriodicalIF":1.3,"publicationDate":"2023-01-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508368","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Programming Languages and Systems: 32nd European Symposium on Programming, ESOP 2023, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2023, Paris, France, April 22–27, 2023, Proceedings 编程语言和系统:第32届欧洲编程研讨会,ESOP 2023,作为欧洲软件理论与实践联合会议的一部分,ETAPS 2023,巴黎,法国,4月22-27日,2023,论文集
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-01-01 DOI: 10.1007/978-3-031-30044-8
{"title":"Programming Languages and Systems: 32nd European Symposium on Programming, ESOP 2023, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2023, Paris, France, April 22–27, 2023, Proceedings","authors":"","doi":"10.1007/978-3-031-30044-8","DOIUrl":"https://doi.org/10.1007/978-3-031-30044-8","url":null,"abstract":"","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"30 1","pages":""},"PeriodicalIF":1.3,"publicationDate":"2023-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77604291","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
A Type Discipline for Message Passing Parallel Programs 消息传递并行程序的类型规则
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-12-21 DOI: https://dl.acm.org/doi/10.1145/3552519
Vasco T. Vasconcelos, Francisco Martins, Hugo-Andrés López, Nobuko Yoshida

We present ParTypes, a type discipline for parallel programs. The model we have in mind comprises a fixed number of processes running in parallel and communicating via collective operations or point-to-point synchronous message exchanges. A type describes a protocol to be followed by each processes in a given program. We present the type theory, a core imperative programming language and its operational semantics, and prove that type checking is decidable (up to decidability of semantic entailment) and that well-typed programs do not deadlock and always terminate. The article is accompanied by a large number of examples drawn from the literature on parallel programming.

我们提出了ParTypes,一种并行程序的类型规范。我们心目中的模型包含固定数量的并行运行的流程,并通过集合操作或点对点同步消息交换进行通信。类型描述了给定程序中每个进程要遵循的协议。我们提出了命令式程序设计语言的核心类型理论及其操作语义,并证明了类型检查是可决定的(直到语义蕴涵的可决定性),并且类型良好的程序不会死锁并且总是终止。本文附带了大量从并行编程文献中抽取的例子。
{"title":"A Type Discipline for Message Passing Parallel Programs","authors":"Vasco T. Vasconcelos, Francisco Martins, Hugo-Andrés López, Nobuko Yoshida","doi":"https://dl.acm.org/doi/10.1145/3552519","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3552519","url":null,"abstract":"<p>We present <span>ParTypes</span>, a type discipline for parallel programs. The model we have in mind comprises a fixed number of processes running in parallel and communicating via collective operations or point-to-point synchronous message exchanges. A type describes a protocol to be followed by each processes in a given program. We present the type theory, a core imperative programming language and its operational semantics, and prove that type checking is decidable (up to decidability of semantic entailment) and that well-typed programs do not deadlock and always terminate. The article is accompanied by a large number of examples drawn from the literature on parallel programming.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"263 10","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-12-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508355","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Contextual Linear Types for Differential Privacy 差分隐私的上下文线性类型
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-12-16 DOI: https://dl.acm.org/doi/10.1145/3565026
Matías Toro, David Darais, Chike Abuah, Joseph P. Near, Damián Árquez, Federico Olmedo, Éric Tanter

Language support for differentially private programming is both crucial and delicate. While elaborate program logics can be very expressive, type-system-based approaches using linear types tend to be more lightweight and amenable to automatic checking and inference, and in particular in the presence of higher-order programming. Since the seminal design of Fuzz, which is restricted to ϵ-differential privacy in its original design, significant progress has been made to support more advanced variants of differential privacy, like (ϵ, δ)-differential privacy. However, supporting these advanced privacy variants while also supporting higher-order programming in full has proven to be challenging. We present Jazz, a language and type system that uses linear types and latent contextual effects to support both advanced variants of differential privacy and higher-order programming. Latent contextual effects allow delaying the payment of effects for connectives such as products, sums, and functions, yielding advantages in terms of precision of the analysis and annotation burden upon elimination, as well as modularity. We formalize the core of Jazz, prove it sound for privacy via a logical relation for metric preservation, and illustrate its expressive power through a number of case studies drawn from the recent differential privacy literature.

对不同私有编程的语言支持既重要又微妙。虽然精心设计的程序逻辑可能非常具有表现力,但是使用线性类型的基于类型系统的方法往往更轻量级,更适合自动检查和推理,特别是在存在高阶编程的情况下。自Fuzz的开创性设计以来,它在原始设计中仅限于ϵ-differential隐私,在支持更高级的差分隐私变体(如(λ, δ)-差分隐私)方面取得了重大进展。然而,要在完全支持高阶编程的同时支持这些高级隐私变体,已被证明是具有挑战性的。我们介绍Jazz,这是一种语言和类型系统,它使用线性类型和潜在的上下文效应来支持差分隐私的高级变体和高阶编程。潜在的上下文效应允许延迟诸如产品、总和和函数等连接词的效果的支付,从而在分析的精确性和消除时的注释负担以及模块化方面产生优势。我们将Jazz的核心形式化,通过度量保存的逻辑关系证明它对隐私是合理的,并通过从最近的差分隐私文献中提取的许多案例研究来说明它的表达能力。
{"title":"Contextual Linear Types for Differential Privacy","authors":"Matías Toro, David Darais, Chike Abuah, Joseph P. Near, Damián Árquez, Federico Olmedo, Éric Tanter","doi":"https://dl.acm.org/doi/10.1145/3565026","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3565026","url":null,"abstract":"<p>Language support for differentially private programming is both crucial and delicate. While elaborate program logics can be very expressive, type-system-based approaches using linear types tend to be more lightweight and amenable to automatic checking and inference, and in particular in the presence of higher-order programming. Since the seminal design of <span>Fuzz</span>, which is restricted to ϵ-differential privacy in its original design, significant progress has been made to support more advanced variants of differential privacy, like (ϵ, <i>δ</i>)-differential privacy. However, supporting these advanced privacy variants while also supporting higher-order programming in full has proven to be challenging. We present <span>Jazz</span>, a language and type system that uses linear types and latent contextual effects to support both advanced variants of differential privacy and higher-order programming. Latent contextual effects allow delaying the payment of effects for connectives such as products, sums, and functions, yielding advantages in terms of precision of the analysis and annotation burden upon elimination, as well as modularity. We formalize the core of <span>Jazz</span>, prove it sound for privacy via a logical relation for metric preservation, and illustrate its expressive power through a number of case studies drawn from the recent differential privacy literature.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"265 5","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-12-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508339","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Immutability and Encapsulation for Sound OO Information Flow Control 面向对象信息流控制的不变性和封装
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-12-02 DOI: 10.1145/3573270
Tobias Runge, M. Servetto, A. Potanin, Ina Schaefer
Security-critical software applications contain confidential information which has to be protected from leaking to unauthorized systems. With language-based techniques, the confidentiality of applications can be enforced. Such techniques are for example type systems that enforce an information flow policy through typing rules. The precision of such type systems, especially in object-oriented languages, is an area of active research: an appropriate system should not reject too many secure programs while soundly preserving noninterference. In this work, we introduce the language SIFO which supports information flow control for an object-oriented language with type modifiers. Type modifiers increase the precision of the type system by utilizing immutability and uniqueness properties of objects for the detection of information leaks. We present SIFO informally by using examples to demonstrate the applicability of the language, formalize the type system, prove noninterference, implement SIFO as a pluggable type system in the programming language L42, and evaluate it with a feasibility study and a benchmark.
安全关键软件应用程序包含机密信息,必须加以保护,以免泄漏到未经授权的系统。使用基于语言的技术,可以强制执行应用程序的机密性。例如,此类技术是通过类型规则强制执行信息流策略的类型系统。这种类型系统的精确性,特别是在面向对象语言中,是一个活跃的研究领域:一个合适的系统不应该拒绝太多的安全程序,同时完好地保持不干扰。在这项工作中,我们引入了SIFO语言,它支持带有类型修饰符的面向对象语言的信息流控制。类型修饰符通过利用对象的不变性和唯一性来检测信息泄漏,从而提高了类型系统的精度。我们通过实例非正式地展示了SIFO语言的适用性,形式化了类型系统,证明了不干扰性,在编程语言L42中实现了SIFO作为可插拔类型系统,并通过可行性研究和基准测试对其进行了评估。
{"title":"Immutability and Encapsulation for Sound OO Information Flow Control","authors":"Tobias Runge, M. Servetto, A. Potanin, Ina Schaefer","doi":"10.1145/3573270","DOIUrl":"https://doi.org/10.1145/3573270","url":null,"abstract":"Security-critical software applications contain confidential information which has to be protected from leaking to unauthorized systems. With language-based techniques, the confidentiality of applications can be enforced. Such techniques are for example type systems that enforce an information flow policy through typing rules. The precision of such type systems, especially in object-oriented languages, is an area of active research: an appropriate system should not reject too many secure programs while soundly preserving noninterference. In this work, we introduce the language SIFO which supports information flow control for an object-oriented language with type modifiers. Type modifiers increase the precision of the type system by utilizing immutability and uniqueness properties of objects for the detection of information leaks. We present SIFO informally by using examples to demonstrate the applicability of the language, formalize the type system, prove noninterference, implement SIFO as a pluggable type system in the programming language L42, and evaluate it with a feasibility study and a benchmark.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"45 1","pages":"1 - 35"},"PeriodicalIF":1.3,"publicationDate":"2022-12-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"45620057","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
The Tortoise and the Hare Algorithm for Finite Lists, Compositionally 有限列表的龟兔赛跑算法
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-09-26 DOI: 10.1145/3564619
O. Danvy
In the tortoise-and-hare algorithm, when the fast pointer reaches the end of a finite list, the slow pointer points to the middle of this list. In the early 2000’s, this property was found to make it possible to program a palindrome detector for immutable lists that operates in one recursive traversal of the given list and performs the smallest possible number of comparisons, using the “There And Back Again” (TABA) recursion pattern. In this article, this palindrome detector is reconstructed in OCaml, formalized with the Coq Proof Assistant, and proved to be correct. More broadly, this article presents a compositional account of the tortoise-and-hare algorithm for finite lists. Concretely, compositionality means that programs that use a fast and a slow pointer can be expressed with an ordinary fold function for lists and reasoned about using ordinary structural induction on the given list. This article also contains a dozen new applications of the TABA recursion pattern and of its tail-recursive variant, “There and Forth Again”.
在乌龟和兔子算法中,当快速指针到达有限列表的末尾时,慢速指针指向该列表的中间。在2000年代初,人们发现这种特性可以为不可变列表编程一个回文检测器,该检测器在给定列表的一次递归遍历中操作,并使用“There and Back Again”(TABA)递归模式执行尽可能少的比较。在本文中,这个回文检测器是在OCaml中重建的,并用Coq-Proof Assistant形式化,证明了它的正确性。更广泛地说,本文介绍了有限列表的乌龟和兔子算法的组成说明。具体来说,复合性意味着使用快速和慢速指针的程序可以用列表的普通折叠函数来表达,并对给定列表使用普通结构归纳进行推理。本文还包含TABA递归模式及其尾部递归变体“There and Forth Again”的十几个新应用程序。
{"title":"The Tortoise and the Hare Algorithm for Finite Lists, Compositionally","authors":"O. Danvy","doi":"10.1145/3564619","DOIUrl":"https://doi.org/10.1145/3564619","url":null,"abstract":"In the tortoise-and-hare algorithm, when the fast pointer reaches the end of a finite list, the slow pointer points to the middle of this list. In the early 2000’s, this property was found to make it possible to program a palindrome detector for immutable lists that operates in one recursive traversal of the given list and performs the smallest possible number of comparisons, using the “There And Back Again” (TABA) recursion pattern. In this article, this palindrome detector is reconstructed in OCaml, formalized with the Coq Proof Assistant, and proved to be correct. More broadly, this article presents a compositional account of the tortoise-and-hare algorithm for finite lists. Concretely, compositionality means that programs that use a fast and a slow pointer can be expressed with an ordinary fold function for lists and reasoned about using ordinary structural induction on the given list. This article also contains a dozen new applications of the TABA recursion pattern and of its tail-recursive variant, “There and Forth Again”.","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":" ","pages":"1 - 35"},"PeriodicalIF":1.3,"publicationDate":"2022-09-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"49148679","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Revisiting Iso-Recursive Subtyping 重温iso -递归子类型
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-09-21 DOI: https://dl.acm.org/doi/10.1145/3549537
Yaoda Zhou, Jinxu Zhao, Bruno C. D. S. Oliveira

The Amber rules are well-known and widely used for subtyping iso-recursive types. They were first briefly and informally introduced in 1985 by Cardelli in a manuscript describing the Amber language. Despite their use over many years, important aspects of the metatheory of the iso-recursive style Amber rules have not been studied in depth or turn out to be quite challenging to formalize.

This article aims to revisit the problem of subtyping iso-recursive types. We start by introducing a novel declarative specification for Amber-style iso-recursive subtyping. Informally, the specification states that two recursive types are subtypes if all their finite unfoldings are subtypes. The Amber rules are shown to have equivalent expressive power to this declarative specification. We then show two variants of sound, complete and decidable algorithmic formulations of subtyping with respect to the declarative specification, which employ the idea of double unfoldings. Compared to the Amber rules, the double unfolding rules have the advantage of: (1) being modular; (2) not requiring reflexivity to be built in; (3) leading to an easy proof of transitivity of subtyping; and (4) being easily applicable to subtyping relations that are not antisymmetric (such as subtyping relations with record types). This work sheds new insights on the theory of subtyping iso-recursive types, and the new rules based on double unfoldings have important advantages over the original Amber rules involving recursive types. All results are mechanically formalized in the Coq theorem prover.

Amber规则是众所周知的,并且广泛用于对等递归类型进行子类型划分。1985年,Cardelli在一份描述琥珀语的手稿中首次简要而非正式地介绍了它们。尽管使用了多年,但等递归风格Amber规则元理论的重要方面尚未得到深入研究,或者证明形式化具有相当大的挑战性。本文旨在重新讨论等递归类型的子类型问题。我们首先为amber风格的等递归子类型引入一种新的声明性规范。非正式地,规范指出,如果两个递归类型的所有有限展开都是子类型,则它们是子类型。Amber规则显示出与此声明性规范具有同等的表达能力。然后,我们展示了两个变体的声音,完整的和可确定的算法公式的子类型相对于声明性规范,其中采用双重展开的思想。与Amber规则相比,双展开规则具有以下优点:(1)模块化;(2)不需要内置反身性;(3)易于证明子类型的及物性;(4)易于应用于非反对称的子类型关系(例如记录类型的子类型关系)。这项工作为子类型等递归类型的理论提供了新的见解,并且基于双重展开的新规则比涉及递归类型的原始Amber规则具有重要的优势。所有结果都在Coq定理证明中机械形式化。
{"title":"Revisiting Iso-Recursive Subtyping","authors":"Yaoda Zhou, Jinxu Zhao, Bruno C. D. S. Oliveira","doi":"https://dl.acm.org/doi/10.1145/3549537","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3549537","url":null,"abstract":"<p>The Amber rules are well-known and widely used for subtyping iso-recursive types. They were first briefly and informally introduced in 1985 by Cardelli in a manuscript describing the Amber language. Despite their use over many years, important aspects of the metatheory of the iso-recursive style Amber rules have not been studied in depth or turn out to be quite challenging to formalize.</p><p>This article aims to revisit the problem of subtyping iso-recursive types. We start by introducing a novel declarative specification for Amber-style iso-recursive subtyping. Informally, the specification states that two recursive types are subtypes <i>if all their finite unfoldings are subtypes</i>. The Amber rules are shown to have equivalent expressive power to this declarative specification. We then show two variants of <i>sound</i>, <i>complete</i> and <i>decidable</i> algorithmic formulations of subtyping with respect to the declarative specification, which employ the idea of <i>double unfoldings</i>. Compared to the Amber rules, the double unfolding rules have the advantage of: (1) being modular; (2) not requiring reflexivity to be built in; (3) leading to an easy proof of transitivity of subtyping; and (4) being easily applicable to subtyping relations that are not antisymmetric (such as subtyping relations with record types). This work sheds new insights on the theory of subtyping iso-recursive types, and the new rules based on double unfoldings have important advantages over the original Amber rules involving recursive types. All results are mechanically formalized in the Coq theorem prover.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"263 11","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-09-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508354","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Deep Dive into ZGC: A Modern Garbage Collector in OpenJDK 深入了解ZGC: OpenJDK中的现代垃圾收集器
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-09-21 DOI: https://dl.acm.org/doi/10.1145/3538532
Albert Mingkun Yang, Tobias Wrigstad

ZGC is a modern, non-generational, region-based, mostly concurrent, parallel, mark-evacuate collector recently added to OpenJDK. It aims at having GC pauses that do not grow as the heap size increases, offering low latency even with large heap sizes. The ZGC C++ source code is readily accessible in the OpenJDK repository, but reading it (25 KLOC) can be very intimidating, and one might easily get lost in low-level implementation details, obscuring the key concepts. To make the ZGC algorithm more approachable, this work provides a thorough description on a high-level, focusing on the overall design with moderate implementation details. To explain the concurrency aspects, we provide a SPIN model that allows studying races between mutators and GC threads, and how they are resolved in ZGC. Such a model is not only useful for learning the current design (offering a deterministic and interactive experience) but also beneficial for prototyping new ideas and extensions. Our hope is that our detailed description and the SPIN model will enable the use of ZGC as a building block for future GC research, and research ideas implemented on top of it could even be adopted in the industry more readily, bridging the gap between academia and industry in the context of GC research.

ZGC是最近添加到OpenJDK中的一种现代的、非分代的、基于区域的、主要是并发的、并行的标记-疏散收集器。它的目标是使GC暂停不会随着堆大小的增加而增长,即使堆大小很大也能提供低延迟。在OpenJDK存储库中可以很容易地访问ZGC c++源代码,但是阅读它(25 KLOC)可能非常令人生畏,而且人们可能很容易迷失在低级实现细节中,从而模糊了关键概念。为了使ZGC算法更容易接近,本文在高层次上提供了一个全面的描述,重点是总体设计和适度的实现细节。为了解释并发性方面的问题,我们提供了一个SPIN模型,该模型允许研究突变器和GC线程之间的竞争,以及它们是如何在ZGC中解决的。这样的模型不仅对学习当前设计(提供确定性和交互式体验)有用,而且对新想法和扩展的原型设计也有益。我们希望我们的详细描述和SPIN模型能够使ZGC作为未来GC研究的构建块,并且在此基础上实现的研究思想甚至可以更容易地被工业界采用,从而弥合GC研究背景下学术界和工业界之间的差距。
{"title":"Deep Dive into ZGC: A Modern Garbage Collector in OpenJDK","authors":"Albert Mingkun Yang, Tobias Wrigstad","doi":"https://dl.acm.org/doi/10.1145/3538532","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3538532","url":null,"abstract":"<p>ZGC is a modern, non-generational, region-based, mostly concurrent, parallel, mark-evacuate collector recently added to OpenJDK. It aims at having GC pauses that do not grow as the heap size increases, offering low latency even with large heap sizes. The ZGC C++ source code is readily accessible in the OpenJDK repository, but reading it (25 KLOC) can be very intimidating, and one might easily get lost in low-level implementation details, obscuring the key concepts. To make the ZGC algorithm more approachable, this work provides a thorough description on a high-level, focusing on the overall design with moderate implementation details. To explain the concurrency aspects, we provide a SPIN model that allows studying races between mutators and GC threads, and how they are resolved in ZGC. Such a model is not only useful for learning the current design (offering a deterministic and interactive experience) but also beneficial for prototyping new ideas and extensions. Our hope is that our detailed description and the SPIN model will enable the use of ZGC as a building block for future GC research, and research ideas implemented on top of it could even be adopted in the industry more readily, bridging the gap between academia and industry in the context of GC research.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"258 12","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-09-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508330","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Containerless Plurals: Separating Number from Type in Object-Oriented Programming 无容器复数:面向对象编程中数字与类型的分离
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-09-21 DOI: https://dl.acm.org/doi/10.1145/3527635
Friedrich Steimann

To let expressions evaluate to no or many objects, most object-oriented programming languages require the use of special constructs that encode these cases as single objects or values. While the requirement to treat these standard situations idiomatically seems to be broadly accepted, I argue that its alternative, letting expressions evaluate to any number of objects directly, has several advantages that make it worthy of consideration. As a proof of concept, I present a core object-oriented programming language, dubbed Num, which separates number from type so that the type of an expression is independent of the number of objects it may evaluate to, thus removing one major obstacle to using no, one, and many objects uniformly. Furthermore, Num abandons null references, replaces the nullability of reference types with the more general notion of countability, and allows methods to be invoked on any number of objects, including no object. To be able to adapt behavior to the actual number of receivers, Num complements instance methods with plural methods, that is, with methods that operate on a number of objects jointly and that replace static methods known from other languages. An implementation of Num in Prolog and accompanying type and number safety proofs are presented.

为了让表达式求值为无对象或多个对象,大多数面向对象编程语言都需要使用特殊的结构,将这些情况编码为单个对象或值。虽然以惯用方式处理这些标准情况的要求似乎被广泛接受,但我认为它的替代方案,让表达式直接求值到任意数量的对象,有几个优点,值得考虑。作为概念的证明,我提出了一种核心的面向对象编程语言,称为Num,它将数字与类型分开,以便表达式的类型独立于它可能求值的对象的数量,从而消除了统一使用无、一个和多个对象的一个主要障碍。此外,Num放弃了空引用,用更一般的可数概念取代了引用类型的可空性,并允许在任意数量的对象上调用方法,包括不调用对象。为了使行为适应实际的接收者数量,Num用复数方法来补充实例方法,也就是说,用联合操作多个对象的方法来替代其他语言中已知的静态方法。给出了Num在Prolog中的一个实现,并给出了相应的类型和数的安全性证明。
{"title":"Containerless Plurals: Separating Number from Type in Object-Oriented Programming","authors":"Friedrich Steimann","doi":"https://dl.acm.org/doi/10.1145/3527635","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3527635","url":null,"abstract":"<p>To let expressions evaluate to no or many objects, most object-oriented programming languages require the use of special constructs that encode these cases as single objects or values. While the requirement to treat these standard situations idiomatically seems to be broadly accepted, I argue that its alternative, letting expressions evaluate to any number of objects directly, has several advantages that make it worthy of consideration. As a proof of concept, I present a core object-oriented programming language, dubbed <span>Num</span>, which separates number from type so that the type of an expression is independent of the number of objects it may evaluate to, thus removing one major obstacle to using no, one, and many objects uniformly. Furthermore, <span>Num</span> abandons null references, replaces the nullability of reference types with the more general notion of countability, and allows methods to be invoked on any number of objects, including no object. To be able to adapt behavior to the actual number of receivers, <span>Num</span> complements instance methods with plural methods, that is, with methods that operate on a number of objects jointly and that replace static methods known from other languages. An implementation of <span>Num</span> in Prolog and accompanying type and number safety proofs are presented.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"263 8","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-09-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508357","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Two Parametricities Versus Three Universal Types 两个参数与三个通用类型
IF 1.3 2区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2022-09-21 DOI: https://dl.acm.org/doi/10.1145/3539657
Dominique Devriese, Marco Patrignani, Frank Piessens

The formal calculus System F models the essence of polymorphism and abstract data types, features that exist in many programming languages. The calculus’ core property is parametricity: a theorem expressing the language’s abstractions and validating important principles like information hiding and modularity.

When System F is combined with features like recursive types, mutable state, continuations or exceptions, the formulation of parametricity needs to be adapted to follow suit, for example using techniques like step-indexing, Kripke world-indexing or biorthogonality. However, it is less clear how this formulation should change when System F is combined with untyped languages, gradual types, dynamic sealing and runtime type analysis (typecase) alongside type generation. Extensions of System F with these features have been proven to satisfy forms of parametricity (with Kripke worlds carrying semantic interpretations of types). However, the relative power of the modified formulations of parametricity with respect to others and the relative expressiveness of System F with and without these extensions are unknown.

In this paper, we explain that the aforementioned different settings have a common characteristic: they do not enforce or preserve the lexical scope of System F’s type variables. Formally, this results in the existence of a universal type (note: this is not the same as a universally-quantified type). We explain why standard parametricity is incompatible with such a type and how type worlds resolve this. Building on these insights, we answer two open conjectures from the literature, negatively, and we point out a deficiency in current proposals for combining System F with gradual types.

形式演算System F对多态和抽象数据类型的本质进行了建模,这些特性存在于许多编程语言中。微积分的核心属性是参数性:一个表达语言抽象和验证信息隐藏和模块化等重要原则的定理。当系统F与递归类型、可变状态、延续或异常等特征相结合时,参数化的表述需要进行调整以适应,例如使用步进索引、Kripke世界索引或双正交等技术。然而,当System F与无类型语言、渐进类型、动态密封和运行时类型分析(typecase)以及类型生成结合在一起时,这种表述应该如何改变就不太清楚了。具有这些特征的系统F的扩展已被证明满足参数化形式(带有类型的语义解释的Kripke世界)。然而,修改后的参数形式相对于其他形式的相对威力,以及系统F在有或没有这些扩展的情况下的相对可表达性是未知的。在本文中,我们解释了上述不同的设置有一个共同的特点:它们不强制或保留System F类型变量的词法范围。形式上,这导致了全称类型的存在(注意:这与全称量化类型不同)。我们将解释为什么标准参数性与这种类型不兼容,以及类型世界如何解决这个问题。在这些见解的基础上,我们从文献中否定地回答了两个公开的猜想,并指出了目前将系统F与渐进类型相结合的建议的不足。
{"title":"Two Parametricities Versus Three Universal Types","authors":"Dominique Devriese, Marco Patrignani, Frank Piessens","doi":"https://dl.acm.org/doi/10.1145/3539657","DOIUrl":"https://doi.org/https://dl.acm.org/doi/10.1145/3539657","url":null,"abstract":"<p>The formal calculus System F models the essence of polymorphism and abstract data types, features that exist in many programming languages. The calculus’ core property is parametricity: a theorem expressing the language’s abstractions and validating important principles like information hiding and modularity.</p><p>When System F is combined with features like recursive types, mutable state, continuations or exceptions, the formulation of parametricity needs to be adapted to follow suit, for example using techniques like step-indexing, Kripke world-indexing or biorthogonality. However, it is less clear how this formulation should change when System F is combined with untyped languages, gradual types, dynamic sealing and runtime type analysis (typecase) alongside type generation. Extensions of System F with these features have been proven to satisfy forms of parametricity (with Kripke worlds carrying semantic interpretations of types). However, the relative power of the modified formulations of parametricity with respect to others and the relative expressiveness of System F with and without these extensions are unknown.</p><p>In this paper, we explain that the aforementioned different settings have a common characteristic: they do not enforce or preserve the lexical scope of System F’s type variables. Formally, this results in the existence of a <i>universal type</i> (note: this is not the same as a <i>universally-quantified</i> type). We explain why standard parametricity is incompatible with such a type and how type worlds resolve this. Building on these insights, we answer two open conjectures from the literature, negatively, and we point out a deficiency in current proposals for combining System F with gradual types.</p>","PeriodicalId":50939,"journal":{"name":"ACM Transactions on Programming Languages and Systems","volume":"264 12","pages":""},"PeriodicalIF":1.3,"publicationDate":"2022-09-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"138508341","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":2,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
ACM Transactions on Programming Languages and Systems
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1