Collapsible contracts: fixing a pathology of gradual typing
Collapsible contracts: fixing a pathology of gradual typing
复制标题
可折叠合约:修复渐进式打字的病态
DOI:
10.1145/3276503
复制
发表时间:
2018
影响因子:
--
通讯作者:
St-Amour, Vincent
中科院分区:
文献类型:
--
作者:
Feltey, Daniel;Greenman, Ben;Scholliers, Christophe;Findler, Robert Bruce;St-Amour, Vincent
The promise of gradual typing is that programmers should get the best of both worlds: the static guarantees of static types, and the dynamic flexibility of untyped programming. This is an enticing benefit, but one that, in practice, may carry significant costs. Significant enough, in fact, to threaten the very practicality of gradual typing; slowdowns as high as 120x are reported as arising from gradual typing.If one examines these results closely, though, it becomes clear that the costs of gradual typing are not evenly distributed. Indeed, while mixing typed and untyped code almost invariably carries non-trivial costs, many truly deal-breaking slowdowns exhibit pathological performance. Unfortunately, the very presence of these pathological cases---and therefore the possibility of hitting them during development---makes gradual typing a risky proposition in any setting that even remotely cares about performance.This work attacks one source of large overheads in these pathological cases: an accumulation of contract wrappers that perform redundant checks. The work introduces a novel strategy for contract checking---collapsible contracts---which eliminates this redundancy for function and vector contracts and drastically reduces the overhead of contract wrappers.We implemented this checking strategy as part of the Racket contract system, which is used in the Typed Racket gradual typing system. Our experiments show that our strategy successfully brings a class of pathological cases in line with normal cases, while not introducing an undue overhead to any of the other cases. Our results also show that the performance of gradual typing in Racket remains prohibitive for many programs, but that collapsible contracts are one essential ingredient in reducing the cost of gradual typing.
登录
查看更多内容
影响因子:
--
作者:
G. Richards;Francesco Zappa Nardelli;J. Vitek
通讯作者:
J. Vitek
DOI:
--
发表时间:
2016
期刊:
ACM-SIGACT Symposium on Principles of Programming Languages
影响因子:
--
作者:
Asumu Takikawa;Daniel Feltey;B. Greenman;Max S. New;J. Vitek;M. Felleisen
通讯作者:
M. Felleisen
DOI:
10.1007/s10990-011-9066-z
发表时间:
2010
期刊:
Higher-Order and Symbolic Computation
影响因子:
--
作者:
David Herman;Aaron Tomb;C. Flanagan
通讯作者:
C. Flanagan
DOI:
10.1145/165854.165893
发表时间:
1993
期刊:
ACM Trans. Program. Lang. Syst.
影响因子:
--
作者:
Gilad Bracha;David Griswold
通讯作者:
David Griswold
DOI:
--
发表时间:
2017
期刊:
European Conference on Object-Oriented Programming
影响因子:
--
作者:
Jack Williams;J. Garrett Morris;P. Wadler;Jakub Zalewski
通讯作者:
Jakub Zalewski