Proceedings of the 15th ACM SIGPLAN International Symposium on Dynamic Languages 2019
DOI: 10.1145/3359619.3359744
|View full text |Cite
|
Sign up to set email alerts
|

R melts brains: an IR for first-class environments and lazy effectful arguments

Abstract: The 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, variable scopes are reified at runtime as first-class environments. The combination of these features renders most static program analysis techniques impractical, and thus, compiler optimizations based on them ineffective. We present our work on PIR, an interme… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
2

Citation Types

0
10
0

Year Published

2019
2019
2021
2021

Publication Types

Select...
4
3

Relationship

3
4

Authors

Journals

citations
Cited by 16 publications
(10 citation statements)
references
References 18 publications
0
10
0
Order By: Relevance
“…The alternative was to use an experimental native compiler. There are two available in open source, Oracle's Truffle implementation of R [Stadler et al 2016], and our own Ř [Flückiger et al 2019]. Both systems have their drawbacks.…”
Section: ř S : a Strict-by-default Compilermentioning
confidence: 99%
See 1 more Smart Citation
“…The alternative was to use an experimental native compiler. There are two available in open source, Oracle's Truffle implementation of R [Stadler et al 2016], and our own Ř [Flückiger et al 2019]. Both systems have their drawbacks.…”
Section: ř S : a Strict-by-default Compilermentioning
confidence: 99%
“…The first tier is realized by a bytecode interpreter, the second tier by an optimizing native compiler that relies on LLVM for code generation. The compiler employs, among many other optimizations, speculative inlining of R closures and promises [Flückiger et al 2019. Choosing Ř allows us to better evaluate the impact of laziness.…”
Section: ř S : a Strict-by-default Compilermentioning
confidence: 99%
“…The early V8 JavaScript engine lowered both baseline and optimized functions to native code, and deoptimization toggled between the two; as of now the baseline is an interpreter [Chromium 2020]. The R compiler of Flückiger et al [2019] performs speculation on a dedicated intermediate representation (IR) and offloads code generation to LLVM, with write-only code segments.…”
Section: Introductionmentioning
confidence: 99%
“…As in Graal [Duboscq et al 2013], deoptimization is specified at the IR level by dedicated instructions which have a formally specified semantics. Without loss of generality, we restrict our attention to a uniform execution model in which both the unoptimized and the optimized code are expressed in the same intermediate language, similarly to the approach adopted by Béra et al [2016] and Flückiger et al [2019]. Furthermore, we carefully separate mechanism, i.e., how code is generated, optimized and deoptimized, from policy, i.e., when and what to optimize.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation