Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleOctober 2024
Reducing Feedback Pollution
VMIL '24: Proceedings of the 16th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate LanguagesPages 65–74https://doi.org/10.1145/3689490.3690404Just-in-time compilers enhance the performance of future invocations of a function by generating code tailored to past behavior. To achieve this, compilers use a data structure, often referred to as a feedback vector, to record information about each ...
- research-articleJune 2024
Decidable Subtyping of Existential Types for Julia
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 191, Pages 1091–1114https://doi.org/10.1145/3656421Julia is a modern scientific-computing language that relies on multiple dispatch to implement generic libraries. While the language does not have a static type system, method declarations are decorated with expressive type annotations to determine when ...
Reusing Just-in-Time Compiled Code
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 263, Pages 1176–1197https://doi.org/10.1145/3622839Most code is executed more than once. If not entire programs then libraries remain unchanged from one run to the next. Just-in-time compilers expend considerable effort gathering insights about code they compiled many times, and often end up ...
signatr: A Data-Driven Fuzzing Tool for R
SLE 2022: Proceedings of the 15th ACM SIGPLAN International Conference on Software Language EngineeringPages 216–221https://doi.org/10.1145/3567512.3567530The fast-and-loose, permissive semantics of dynamic programming languages limit the power of static analyses. For that reason, soundness is often traded for precision through dynamic program analysis. Dynamic analysis is only as good as the ...
Deoptless: speculation with dispatched on-stack replacement and specialized continuations
PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and ImplementationPages 749–761https://doi.org/10.1145/3519939.3523729Just-in-time compilation provides significant performance improvements for programs written in dynamic languages. These benefits come from the ability of the compiler to speculate about likely cases and generate optimized code for these. Unavoidably,...
-
- research-articleOctober 2021
First-class environments in R
DLS 2021: Proceedings of the 17th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 12–22https://doi.org/10.1145/3486602.3486768The R programming language is widely used for statistical computing. To enable interactive data exploration and rapid prototyping, R encourages a dynamic programming style. This programming style is supported by features such as first-class ...
- research-articleOctober 2021
Type stability in Julia: avoiding performance pathologies in JIT compilation
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 150, Pages 1–26https://doi.org/10.1145/3485527As a scientific programming language, Julia strives for performance but also provides high-level productivity features. To avoid performance pathologies, Julia users are expected to adhere to a coding discipline that enables so-called type stability. ...
- research-articleOctober 2021
What we eval in the shadows: a large-scale study of eval in R programs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 125, Pages 1–23https://doi.org/10.1145/3485502Most dynamic languages allow users to turn text into code using various functions, often named <tt>eval</tt>, with language-dependent semantics. The widespread use of these reflective functions hinders static analysis and prevents compilers from ...
- research-articleOctober 2021
Promises are made to be broken: migrating R to strict semantics
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 101, Pages 1–20https://doi.org/10.1145/3485478Function calls in the R language do not evaluate their arguments, these are passed to the callee as suspended computations and evaluated if needed. After 25 years of experience with the language, there are very few cases where programmers leverage ...
- research-articleJanuary 2021
Formally verified speculation and deoptimization in a JIT compiler
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue POPLArticle No.: 46, Pages 1–26https://doi.org/10.1145/3434327Just-in-time compilers for dynamic languages routinely generate code under assumptions that may be invalidated at run-time, this allows for specialization of program code to the common case in order to avoid unnecessary overheads due to uncommon cases. ...
Sampling optimized code for type feedback
DLS 2020: Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 99–111https://doi.org/10.1145/3426422.3426984To efficiently execute dynamically typed languages, many language implementations have adopted a two-tier architecture. The first tier aims for low-latency startup times and collects dynamic profiles, such as the dynamic types of variables. The second ...
Contextual dispatch for function specialization
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 220, Pages 1–24https://doi.org/10.1145/3428288In order to generate efficient code, dynamic language compilers often need information, such as dynamic types, not readily available in the program source. Leveraging a mixture of static and dynamic information, these compilers speculate on the missing ...
- research-articleNovember 2020
World age in Julia: optimizing method dispatch in the presence of eval
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 207, Pages 1–26https://doi.org/10.1145/3428275Dynamic programming languages face semantic and performance challenges in the presence of features, such as eval, that can inject new code into a running program. The Julia programming language introduces the novel concept of world age to insulate ...
- research-articleNovember 2020
Designing types for R, empirically
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 181, Pages 1–25https://doi.org/10.1145/3428249The R programming language is widely used in a variety of domains. It was designed to favor an interactive style of programming with minimal syntactic and conceptual overhead. This design is well suited to data analysis, but a bad fit for tools such as ...
- doctoral_thesisJanuary 2020
Deep and Shallow Types
- Ben Greenman,
- Felleisen, Matthias,
- Jan Vitek,
- Amal Ahmed,
- Shriram Krishnamurthi,
- Fritz Henglein,
- Sam Tobin-Hochstadt
AbstractThe design space of mixed-typed languages is lively but disorganized. On one hand, researchers across academia and industry have contributed language designs that allow typed code to interoperate with untyped code. These design efforts explore a ...
- research-articleOctober 2019
R melts brains: an IR for first-class environments and lazy effectful arguments
DLS 2019: Proceedings of the 15th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 55–66https://doi.org/10.1145/3359619.3359744The R programming language combines a number of features considered hard to analyze and implement efficiently: dynamic typing, reflection, lazy evaluation, vectorized primitive types, first-class closures, and extensive use of native code. Additionally, ...
- research-articleOctober 2019
On the Impact of Programming Languages on Code Quality: A Reproduction Study
ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 41, Issue 4Article No.: 21, Pages 1–24https://doi.org/10.1145/3340571In a 2014 article, Ray, Posnett, Devanbu, and Filkov claimed to have uncovered a statistically significant association between 11 programming languages and software defects in 729 projects hosted on GitHub. Specifically, their work answered four research ...
- research-articleOctober 2019
Scala implicits are everywhere: a large-scale study of the use of Scala implicits in the wild
Proceedings of the ACM on Programming Languages (PACMPL), Volume 3, Issue OOPSLAArticle No.: 163, Pages 1–28https://doi.org/10.1145/3360589The Scala programming language offers two distinctive language features implicit parameters and implicit conversions, often referred together as implicits. Announced without fanfare in 2004, implicits have quickly grown to become a widely and pervasively ...
- research-articleOctober 2019
On the design, implementation, and use of laziness in R
Proceedings of the ACM on Programming Languages (PACMPL), Volume 3, Issue OOPSLAArticle No.: 153, Pages 1–27https://doi.org/10.1145/3360579The R programming language has been lazy for over twenty-five years. This paper presents a review of the design and implementation of call-by-need in R, and a data-driven study of how generations of programmers have put laziness to use in their code. We ...
- articleAugust 2019
Verifying a Concurrent Garbage Collector with a Rely-Guarantee Methodology
- Yannick Zakowski,
- David Cachera,
- Delphine Demange,
- Gustavo Petri,
- David Pichardie,
- Suresh Jagannathan,
- Jan Vitek
Journal of Automated Reasoning (JAUR), Volume 63, Issue 2Pages 489–515https://doi.org/10.1007/s10817-018-9489-xConcurrent garbage collection algorithms are a challenge for program verification. In this paper, we address this problem by proposing a mechanized proof methodology based on the Rely-Guarantee proof technique. We design a compiler intermediate ...