Affiliation:
1. Oracle Labs, Austria
2. Oracle Labs, USA
3. Oracle Labs, Switzerland
Abstract
The R language, from the point of view of language design and implementation, is a unique combination of various programming language concepts. It has functional characteristics like lazy evaluation of arguments, but also allows expressions to have arbitrary side effects. Many runtime data structures, for example variable scopes and functions, are accessible and can be modified while a program executes. Several different object models allow for structured programming, but the object models can interact in surprising ways with each other and with the base operations of R.
R works well in practice, but it is complex, and it is a challenge for language developers trying to improve on the current state-of-the-art, which is the reference implementation -- GNU R. The goal of this work is to demonstrate that, given the right approach and the right set of tools, it is possible to create an implementation of the R language that provides significantly better performance while keeping compatibility with the original implementation.
In this paper we describe novel optimizations backed up by aggressive speculation techniques and implemented within FastR, an alternative R language implementation, utilizing Truffle -- a JVM-based language development framework developed at Oracle Labs. We also provide experimental evidence demonstrating effectiveness of these optimizations in comparison with GNU R, as well as Renjin and TERR implementations of the R language.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference27 articles.
1. RPython
2. BeDataDriven. Renjin 2016. BeDataDriven. Renjin 2016.
3. Optimistic evaluation
Cited by
19 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Debugging Dynamic Language Features in a Multi-tier Virtual Machine;Proceedings of the 15th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages;2023-10-18
2. Reusing Just-in-Time Compiled Code;Proceedings of the ACM on Programming Languages;2023-10-16
3. Lazy Evaluation for the Lazy: Automatically Transforming Call-by-Value into Call-by-Need;Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction;2023-02-17
4. Deoptless: speculation with dispatched on-stack replacement and specialized continuations;Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation;2022-06-09
5. Integrating Genome-wide association and whole transcriptome analysis to reveal genetic control of leaf traits in Gossypium arboreum L.;Genomics;2022-05