Jakob Hain

dblp:245/0226 · DBLP profile ↗
← Back
3ranked-venue papers
0as first author
1since 2021 · last 2026
0009-0002-7471-0702ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 1 since 2021

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
2 papers
Programming languages and type systems · 47% Compilers and program optimization · 45% Runtime systems and virtual machines · 9%

Topics — the 8 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
dynamic languages
1.012026
A Typed Intermediate Representation for Dynamic Languages · ACM Trans. Program. Lang. Syst. 2026
Programming languages and type systems › type systems
gradual typing
1.012026
A Typed Intermediate Representation for Dynamic Languages · ACM Trans. Program. Lang. Syst. 2026
Compilers and program optimization
intermediate representation
1.012026
A Typed Intermediate Representation for Dynamic Languages · ACM Trans. Program. Lang. Syst. 2026
Compilers and program optimization
specialization
1.012026
A Typed Intermediate Representation for Dynamic Languages · ACM Trans. Program. Lang. Syst. 2026
Programming languages and type systems › language implementation
typed intermediate language
1.012026
A Typed Intermediate Representation for Dynamic Languages · ACM Trans. Program. Lang. Syst. 2026
Runtime systems and virtual machines
dynamic language implementation
0.412020
Contextual dispatch for function specialization · Proc. ACM Program. Lang. 2020
Compilers and program optimization › compiler optimization
speculative optimization
0.412020
Contextual dispatch for function specialization · Proc. ACM Program. Lang. 2020
Runtime systems and virtual machines › dynamic compilation › just-in-time compilation
deoptimization
0.112020
Contextual dispatch for function specialization · Proc. ACM Program. Lang. 2020

Methods — techniques the papers use, named apart from their topics

ownership tracking · 1.0gradual typing · 1.0function versioning · 0.4dynamic type speculation · 0.4
YearPublicationVenuePosition
2026 A Typed Intermediate Representation for Dynamic Languages
abstract
Dynamic programming languages pose significant challenges for optimizing compilers due to features such as dynamic typing, late binding, reflection, copy-on-write, and delayed evaluation. To generate efficient code, compilers must speculate on which dynamic features will be exercised and produce specialized code based on these assumptions. This article presents the design of a statically typed, high-level intermediate representation (IR) that makes dynamic behaviors explicit and amenable to static analysis. Our IR combines gradual typing with ownership tracking, and explicitly represents promises, multiple function versions, and contextual dispatch. Together, these features directly support optimizations such as specialization, inlining, scope elision, and copy elimination. We formalize a core calculus, called FIŘ, that captures the essential features required for these optimizations. We provide an operational semantics, a type system, and flow and reflection analyses, and we prove the soundness of the type system.
Mickaël Laurent, Jakob Hain, Filip Krikava, Sebastián Krynski, Jan Vitek
ACM Trans. Program. Lang. Syst.2
2020 Contextual dispatch for function specialization
abstract
In 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 information. Within one compilation unit, they specialize the generated code to the previously observed behaviors, betting that past is prologue. When speculation fails, the execution must jump back to unoptimized code. In this paper, we propose an approach to further the specialization, by disentangling classes of behaviors into separate optimization units. With contextual dispatch, functions are versioned and each version is compiled under different assumptions. When a function is invoked, the implementation dispatches to a version optimized under assumptions matching the dynamic context of the call. As a proof-of-concept, we describe a compiler for the R language which uses this approach. Our implementation is, on average, 1.7× faster than the GNU R reference implementation. We evaluate contextual dispatch on a set of benchmarks and measure additional speedup, on top of traditional speculation with deoptimization techniques. In this setting contextual dispatch improves the performance of 18 out of 46 programs in our benchmark suite.
Olivier Flückiger, Guido Chari, Ming-Ho Yee, Jan Jecmen, Jakob Hain, Jan Vitek
Proc. ACM Program. Lang.5
2019 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 intermediate representation with explicit support for first-class environments and effectful lazy evaluation. We describe two dataflow analyses on PIR: the first enables reasoning about variables and their environments, and the second infers where arguments are evaluated. Leveraging their results, we show how to elide environment creation and inline functions.
Olivier Flückiger, Guido Chari, Jan Jecmen, Ming-Ho Yee, Jakob Hain, Jan Vitek
DLS5