Compiler and runtime support for continuation marks

Compiler and runtime support for continuation marks
复制标题

编译器和运行时对连续标记的支持

DOI:
10.1145/3385412.3385981
复制
发表时间:
2020
期刊:
PLDI
影响因子:
--
通讯作者:
Dybvig, R. Kent
Dybvig, R. Kent
中科院分区:
--
文献类型:
--
作者:
Flatt, Matthew;Dybvig, R. Kent

文献摘要

参考文献

被引文献

相似文献

连续标记允许在一种语言中进行动态绑定和上下文检查,并正确处理尾部调用和一流的、多提示的、带分隔符的继续。连续标记最简单、最直接的用法是实现动态作用域的变量,例如当前输出流或当前异常处理程序。其他用途包括用于调试或安全检查的堆栈检查、正在进行的计算的序列化以及运行时删除冗余检查。通过向编程语言的用户公开连续标记,可以将更多类型的语言扩展实现为库,而无需对编译器进行进一步的更改。同时,编译器和运行时系统必须提供连续标记的有效实现,以确保库实现的语言扩展与更改编译器一样有效。我们实现的CHEZ方案的连续标记(支持球拍)使得动态绑定和查找保持恒定的时间和速度,保持了CHEZ方案的一类延续的性能,并且对不使用一类延续或标记的程序片段施加了可以忽略的开销。
Continuation marks enable dynamic binding and context inspection in a language with proper handling of tail calls and first-class, multi-prompt, delimited continuations. The simplest and most direct use of continuation marks is to implement dynamically scoped variables, such as the current output stream or the current exception handler. Other uses include stack inspection for debugging or security checks, serialization of an in-progress computation, and run-time elision of redundant checks. By exposing continuation marks to users of a programming language, more kinds of language extensions can be implemented as libraries without further changes to the compiler. At the same time, the compiler and runtime system must provide an efficient implementation of continuation marks to ensure that library-implemented language extensions are as effective as changing the compiler. Our implementation of continuation marks for Chez Scheme (in support of Racket) makes dynamic binding and lookup constant-time and fast, preserves the performance of Chez Scheme's first-class continuations, and imposes negligible overhead on program fragments that do not use first-class continuations or marks.
通过授权合约进行可扩展的访问控制
DOI: 10.1145/2983990.2984021
发表时间: 2016
期刊: Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications
影响因子: --
作者:
Scott Moore;Christos Dimoulas;R. Findler;M. Flatt;Stephen Chong
通讯作者: Stephen Chong
特定功能的分析
DOI: --
发表时间: 2018
影响因子: 1.3
作者:
Leif Andersen;Vincent St;J. Vitek;M. Felleisen
通讯作者: M. Felleisen
可折叠合约:修复渐进式打字的病态
DOI: 10.1145/3276503
发表时间: 2018
影响因子: --
作者:
Feltey, Daniel;Greenman, Ben;Scholliers, Christophe;Findler, Robert Bruce;St-Amour, Vincent
通讯作者: St-Amour, Vincent
使用隐式值、函数和控制进行编程(或隐式函数:具有词法作用域的动态绑定)
DOI: --
发表时间: 2019
期刊:
影响因子: --
作者:
Jonathan Brachthauser;Daan Leijen
通讯作者: Daan Leijen
DOI: --
发表时间: 1996
期刊: ACM-SIGPLAN Symposium on Programming Language Design and Implementation
影响因子: --
作者:
Carl Bruggeman;Oscar Waddell;R. Dybvig
通讯作者: R. Dybvig