Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages最新文献

筛选
英文 中文
Garbage collection and efficiency in dynamic metacircular runtimes: an experience report 动态元循环运行时的垃圾收集和效率:一份经验报告
Javier Pimás, Javier Burroni, Jean-Baptiste Arnaud, Stefan Marr
{"title":"Garbage collection and efficiency in dynamic metacircular runtimes: an experience report","authors":"Javier Pimás, Javier Burroni, Jean-Baptiste Arnaud, Stefan Marr","doi":"10.1145/3133841.3133845","DOIUrl":"https://doi.org/10.1145/3133841.3133845","url":null,"abstract":"In dynamic object-oriented languages, low-level mechanisms such as just-in-time compilation, object allocation, garbage collection (GC) and method dispatch are often handled by virtual machines (VMs). VMs are typically implemented using static languages, allowing only few changes at run time. In such systems, the VM is not part of the language and interfaces to memory management or method dispatch are fixed, not allowing for arbitrary adaptation. Furthermore, the implementation can typically not be inspected or debugged with standard tools used to work on application code. This paper reports on our experience building Bee, a dynamic Smalltalk runtime, written in Smalltalk. Bee is a Dynamic Metacircular Runtime (DMR) and seamlessly integrates the VM into the application and thereby overcomes many restrictions of classic VMs, for instance by allowing arbitrary code modifications of the VM at run time. Furthermore, the approach enables developers to use their standard tools for application code also for the VM, allowing them to inspect, debug, understand, and modify a DMR seamlessly. We detail our experience of implementing GC, compilation, and optimizations in a DMR. We discuss examples where we found that DMRs can improve understanding of the system, provide tighter control of the software stack, and facilitate research. We also show that the Bee DMR matches and surpass the performance of a widely used Smalltalk VM.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"94 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122404299","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
The semantics of name resolution in grace 名称解析的语义是优雅的
V. Vergu, Michiel Haisma, E. Visser
{"title":"The semantics of name resolution in grace","authors":"V. Vergu, Michiel Haisma, E. Visser","doi":"10.1145/3133841.3133847","DOIUrl":"https://doi.org/10.1145/3133841.3133847","url":null,"abstract":"Grace is a dynamic object oriented programming language designed to aid programming education. We present a formal model of and give an operational semantics for its object model and name resolution algorithm. Our main contributions are a systematic model of Grace’s name resolution using scope graphs, relating linguistic features to other languages, and an operationalization of this model in the form of an operational semantics which is readable and executable. The semantics are extensively tested against a reference Grace implementation.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128798141","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Object equivalence: revisiting object equality profiling (an experience report) 对象等价:重新访问对象等价分析(一份经验报告)
A. Infante, Alexandre Bergel
{"title":"Object equivalence: revisiting object equality profiling (an experience report)","authors":"A. Infante, Alexandre Bergel","doi":"10.1145/3133841.3133844","DOIUrl":"https://doi.org/10.1145/3133841.3133844","url":null,"abstract":"Modern object-oriented programming languages greatly alleviate the memory management for programmers. Despite the efficiency of garbage collection and Just-In-Time program analyzes, memory still remains prone to be wasted. A bloated memory may have severe consequences, including frequent execution lags due to a high pressure on the garbage collector and suboptimal object dependencies. We found that dynamically monitoring object production sites and the equivalence of the produced objects is key to identify wasted memory consumption caused by redundant objects. We implemented optimizations for reducing the memory consumption of six applications, achieving a reduction over 40% in half of the applications without having any prior knowledge of these applications. Our results partially replicate the results obtained by Marinov and O'Callahan and explore new ways to identify redundant objects.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121928291","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Challenges and progress toward efficient gradual typing (invited talk) 高效渐进式打字的挑战与进展(特邀演讲)
Jeremy G. Siek
{"title":"Challenges and progress toward efficient gradual typing (invited talk)","authors":"Jeremy G. Siek","doi":"10.1145/3133841.3148570","DOIUrl":"https://doi.org/10.1145/3133841.3148570","url":null,"abstract":"Mixing static and dynamic type checking in the same language is catching on, with the TypeScript and Flow variants of JavaScript, the MyPy and Reticulated variants of Python, the Strongtalk and Gradualtalk variants of Smalltalk, as well as Typed Racket, Typed Clojure, and Perl 6. The gradual typing approach to such mixing seeks to protect the statically typed code from the dynamically typed code, allowing compilers to leverage type information when optimizing the static code. Unfortunately, ensuring soundness requires runtime checking at the boundaries of typed and untyped code, and the cost of this checking can drown out the performance benefits of optimization. For example, in Typed Racket, some partially typed programs are 1000X slower than the untyped or fully typed version of the same program. But all is not lost! In this talk I present the results of ongoing research to tame the runtime overheads of gradual typing in the context of a prototype compiler, named Grift, that we are developing at Indiana University.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123007767","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Semantics of asynchronous JavaScript 异步JavaScript的语义
Matthew C. Loring, Mark Marron, Daan Leijen
{"title":"Semantics of asynchronous JavaScript","authors":"Matthew C. Loring, Mark Marron, Daan Leijen","doi":"10.1145/3133841.3133846","DOIUrl":"https://doi.org/10.1145/3133841.3133846","url":null,"abstract":"JavaScript code running in the Node.js runtime is a major platform for developers building cloud, mobile, or IoT applications. A fundamental concept in Node.js programming is the use of asynchronous callbacks and event loops to provide highly responsive applications. While conceptually simple, this programming model contains numerous subtleties and behaviors that are defined implicitly by the current Node.js implementation. This paper presents the first comprehensive formalization of the Node.js asynchronous execution model and defines a high-level notion of async-contexts to formalize fundamental relationships between asynchronous executions in an application. These formalizations provide a foundation for the construction of static or dynamic program analysis tools, support the exploration of alternative Node.js event loop implementations, and provide a high-level conceptual framework for reasoning about relationships between the execution of asynchronous callbacks in a Node.js application.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"248 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129024435","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 29
The JavaScriptCore virtual machine (invited talk) JavaScriptCore虚拟机(特邀演讲)
F. Pizlo
{"title":"The JavaScriptCore virtual machine (invited talk)","authors":"F. Pizlo","doi":"10.1145/3170472.3148567","DOIUrl":"https://doi.org/10.1145/3170472.3148567","url":null,"abstract":"JavaScriptCore (JSC) is an open-source high-performance implementation of JavaScript. JSC is used in the WebKit open source browser engine as well as a system framework on macOS and iOS. This talk will give a broad high-level overview of JSC’s performance-oriented architecture, including specific details about the object model, garbage collector, optimizing compilers, type inference, and deoptimization.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"358 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122813051","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Dynamic atomicity: optimizing swift memory management 动态原子性:优化快速内存管理
D. Ungar, D. Grove, H. Franke
{"title":"Dynamic atomicity: optimizing swift memory management","authors":"D. Ungar, D. Grove, H. Franke","doi":"10.1145/3133841.3133843","DOIUrl":"https://doi.org/10.1145/3133841.3133843","url":null,"abstract":"Swift is a modern multi-paradigm programming language with an extensive developer community and open source ecosystem. Swift 3's memory management strategy is based on Automatic Reference Counting (ARC) augmented with unsafe APIs for manually-managed memory. We have seen ARC consume as much as 80% of program execution time. A significant portion of ARC's direct performance cost can be attributed to its use of atomic machine instructions to protect reference count updates from data races. Consequently, we have designed and implemented dynamic atomicity, an optimization which safely replaces atomic reference-counting operations with nonatomic ones where feasible. The optimization introduces a store barrier to detect possibly intra-thread references, compiler-generated recursive reference-tracers to find all affected objects, and a bit of state in each reference count to encode its atomicity requirements. Using a suite of 171 microbenchmarks, 9 programs from the Computer Language Benchmarks Game, and the Richards benchmark, we performed a limit study by unsafely making all reference counting operations nonatomic. We measured potential speedups of up to 220% on the microbenchmarks, 120% on the Benchmarks Game and 70% on Richards. By automatically reducing ARC overhead, our optimization both improves Swift 3's performance and reduces the temptation for performance-oriented programmers to resort to unsafe manual memory management. Furthermore, the machinery implemented for dynamic atomicity could also be employed to obtain cheaper thread-safe Swift data structures, or to augment ARC with optional cycle detection or a backup tracing garbage collector.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122050049","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Decoding Lua: formal semantics for the developer and the semanticist 解码Lua:面向开发人员和语义学家的形式语义
Mallku Soldevila, Beta Ziliani, Bruno Silvestre, Daniel Fridlender, Fabio Mascarenhas
{"title":"Decoding Lua: formal semantics for the developer and the semanticist","authors":"Mallku Soldevila, Beta Ziliani, Bruno Silvestre, Daniel Fridlender, Fabio Mascarenhas","doi":"10.1145/3133841.3133848","DOIUrl":"https://doi.org/10.1145/3133841.3133848","url":null,"abstract":"We provide formal semantics for a large subset of the Lua programming language, in its version 5.2. We validate our model by mechanizing it and testing it against the test suite of the reference interpreter of Lua, obtaining evidence that our model accurately represents the language. We target both a PL semanticist \"not necessarily versed in Lua\", and a Lua developer - not necessarily versed in semantic frameworks. To the former, we present the peculiarities of the language, and how we model them in a modular small-step operational semantics, using concepts from Felleisen-Hieb's reduction semantics with evaluation contexts. Moreover, we mechanize and test the model in PLT Redex, the de facto tool for reduction semantics. To the reader unfamiliar with such concepts, we provide a gentle introduction to the model. It is our hope that developers of the different Lua implementations and dialects understand the model and consider it both for testing their work and for experimenting with new language features.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"151 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-06-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122919792","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
A concurrency-agnostic protocol for multi-paradigm concurrent debugging tools 多范式并发调试工具的并发不可知协议
Stefan Marr, Carmen Torres Lopez, Dominik Aumayr, E. G. Boix, H. Mössenböck
{"title":"A concurrency-agnostic protocol for multi-paradigm concurrent debugging tools","authors":"Stefan Marr, Carmen Torres Lopez, Dominik Aumayr, E. G. Boix, H. Mössenböck","doi":"10.1145/3133841.3133842","DOIUrl":"https://doi.org/10.1145/3133841.3133842","url":null,"abstract":"Today's complex software systems combine high-level concurrency models. Each model is used to solve a specific set of problems. Unfortunately, debuggers support only the low-level notions of threads and shared memory, forcing developers to reason about these notions instead of the high-level concurrency models they chose. This paper proposes a concurrency-agnostic debugger protocol that decouples the debugger from the concurrency models employed by the target application. As a result, the underlying language runtime can define custom breakpoints, stepping operations, and execution events for each concurrency model it supports, and a debugger can expose them without having to be specifically adapted. We evaluated the generality of the protocol by applying it to SOMns, a Newspeak implementation, which supports a diversity of concurrency models including communicating sequential processes, communicating event loops, threads and locks, fork/join parallelism, and software transactional memory. We implemented 21 breakpoints and 20 stepping operations for these concurrency models. For none of these, the debugger needed to be changed. Furthermore, we visualize all concurrent interactions independently of a specific concurrency model. To show that tooling for a specific concurrency model is possible, we visualize actor turns and message sends separately.","PeriodicalId":117125,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Symposium on on Dynamic Languages","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126791565","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信