EDBT 2026 Demo / reviewers in the wild / expert
Grégory M. Essertel
dblp:187/9576
· DBLP profile ↗
9ranked-venue papers
4as first author
1since 2021 · last 2021
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 6 · 3 first-author · 1 since 2021Databases, data management, data science and information retrieval · 2 · 1 first-authorArtificial intelligence and machine learning · 1
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
3 papers |
Program analysis · 46% Programming languages and type systems · 28% Compilers and program optimization · 26% | |
| Databases, data mining, and information retrieval
2 papers |
Query processing and optimization · 73% Machine learning and data management · 27% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
High-performance computing · 77% Cloud and datacenter computing · 23% |
Topics — the 14 heaviest of 18, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Query processing and optimization
query compilation |
0.7 | 2 | 2019 | Flare & Lantern: Efficiently Swapping Horses Midstream · Proc. VLDB Endow. 2019 How to Architect a Query Compiler, Revisited · SIGMOD Conference 2018 |
Machine learning and data management
data management for machine learning |
0.4 | 1 | 2019 | Flare & Lantern: Efficiently Swapping Horses Midstream · Proc. VLDB Endow. 2019 |
Program analysis › static analysis
abstract interpretation |
0.4 | 1 | 2019 | Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019 |
Program analysis
heap analysis |
0.4 | 1 | 2019 | Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019 |
Program analysis
loop analysis |
0.4 | 1 | 2019 | Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019 |
Program analysis
static analysis |
0.4 | 1 | 2019 | Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019 |
Query processing and optimization › query compilation
code generation for query execution |
0.3 | 1 | 2018 | How to Architect a Query Compiler, Revisited · SIGMOD Conference 2018 |
Compilers and program optimization
automatic differentiation |
0.3 | 1 | 2018 | Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018 |
Programming languages and type systems › programming paradigms
differentiable programming |
0.3 | 1 | 2018 | Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018 |
Compilers and program optimization › automatic differentiation
reverse-mode automatic differentiation |
0.3 | 1 | 2018 | Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018 |
High-performance computing
performance optimization |
0.3 | 1 | 2018 | Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data · OSDI 2018 |
Programming languages and type systems › computational effects
effect systems |
0.2 | 1 | 2016 | Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect · OOPSLA 2016 |
Programming languages and type systems
type systems |
0.2 | 1 | 2016 | Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect · OOPSLA 2016 |
Compilers and program optimization › code generation
native code generation |
0.1 | 1 | 2018 | Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018 |
Methods — techniques the papers use, named apart from their topics
runtime compilation · 0.8native code generation · 0.8σ-notation · 0.4strongest-postcondition semantics · 0.4mapreduce · 0.4multi-stage programming · 0.3continuation-passing style · 0.3callbacks · 0.3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | On-stack replacement for program generators and source-to-source compilersabstractOn-stack replacement (OSR) describes the ability to replace currently executing code with a different version, either a more optimized one (tiered execution) or a more general one (deoptimization to undo speculative optimization). While OSR is a key component in all modern VMs for languages like Java or JavaScript, OSR has only recently been studied as a more abstract program transformation, independent of language VMs. Still, previous work has only considered OSR in the context of low-level execution models based on stack frames, labels, and jumps. Grégory M. Essertel, Ruby Y. Tahboub, Tiark Rompf |
GPCE | 1 |
| 2019 | Compiling with continuations, or without? whateverabstractWhat makes a good compiler IR? In the context of functional languages, there has been an extensive debate on the advantages and disadvantages of continuation-passing-style (CPS). The consensus seems to be that some form of explicit continuations is necessary to model jumps in a functional style, but that they should have a 2nd-class status, separate from regular functions, to ensure efficient code generation. Building on this observation, a recent study from PLDI 2017 proposed a direct-style IR with explicit join points, which essentially represent local continuations, i.e., functions that do not return or escape. While this IR can work well in practice, as evidenced by the implementation of join points in the Glasgow Haskell Compiler (GHC), there still seems to be room for improvement, especially with regard to the way continuations are handled in the course of optimization. In this paper, we contribute to the CPS debate by developing a novel IR with the following features. First, we integrate a control operator that resembles Felleisen’s C , eliminating certain redundant rewrites observed in the previous study. Second, we treat the non-returning and non-escaping aspects of continuations separately, allowing efficient compilation of well-behaved functions defined by the user. Third, we define a selective CPS translation of our IR, which erases control operators while preserving the meaning and typing of programs. These features enable optimizations in both direct style and full CPS, as well as in any intermediate style with selectively exposed continuations. Thus, we change the spectrum of available options from “CPS yes or no” to “as much or as little CPS as you want, when you want it”. Youyou Cong, Leo Osvald, Grégory M. Essertel, Tiark Rompf |
Proc. ACM Program. Lang. | 3 |
| 2019 | Precise reasoning with structured time, structured heaps, and collective operationsabstractDespite decades of progress, static analysis tools still have great difficulty dealing with programs that combine arithmetic, loops, dynamic memory allocation, and linked data structures. In this paper we draw attention to two fundamental reasons for this difficulty: First, typical underlying program abstractions are low-level and inherently scalar, characterizing compound entities like data structures or results computed through iteration only indirectly. Second, to ensure termination, analyses typically project away the dimension of time, and merge information per program point, which incurs a loss in precision. As a remedy, we propose to make collective operations first-class in program analysis – inspired by Σ-notation in mathematics, and also by the success of high-level intermediate languages based on @map/reduce@ operations in program generators and aggressive optimizing compilers for domain-specific languages (DSLs). We further propose a novel structured heap abstraction that preserves a symbolic dimension of time, reflecting the program’s loop structure and thus unambiguously correlating multiple temporal points in the dynamic execution with a single point in the program text. This paper presents a formal model, based on a high-level intermediate analysis language, a practical realization in a prototype tool that analyzes C code, and an experimental evaluation that demonstrates competitive results on a series of benchmarks. Remarkably, our implementation achieves these results in a fully semantics-preserving strongest-postcondition model, which is a worst-case for analysis/verification. The underlying ideas, however, are not tied to this model and would equally apply in other settings, e.g., demand-driven invariant inference in a weakest-precondition model. Given its semantics-preserving nature, our implementation is not limited to analysis for verification, but can also check program equivalence, and translate legacy C code to high-performance DSLs. Grégory M. Essertel, Guannan Wei 0001, Tiark Rompf |
Proc. ACM Program. Lang. | 1 |
| 2019 | Demystifying differentiable programming: shift/reset the penultimate backpropagatorabstractDeep learning has seen tremendous success over the past decade in computer vision, machine translation, and gameplay. This success rests crucially on gradient-descent optimization and the ability to “learn” parameters of a neural network by backpropagating observed errors. However, neural network architectures are growing increasingly sophisticated and diverse, which motivates an emerging quest for even more general forms of differentiable programming, where arbitrary parameterized computations can be trained by gradient descent. In this paper, we take a fresh look at automatic differentiation (AD) techniques, and especially aim to demystify the reverse-mode form of AD that generalizes backpropagation in neural networks. We uncover a tight connection between reverse-mode AD and delimited continuations, which permits implementing reverse-mode AD purely via operator overloading and without managing any auxiliary data structures. We further show how this formulation of AD can be fruitfully combined with multi-stage programming (staging), leading to an efficient implementation that combines the performance benefits of deep learning frameworks based on explicit reified computation graphs (e.g., TensorFlow) with the expressiveness of pure library approaches (e.g., PyTorch). Fei Wang 0046, Daniel Zheng, James M. Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf |
Proc. ACM Program. Lang. | 5 |
| 2019 | Flare & Lantern: Efficiently Swapping Horses MidstreamabstractRunning machine learning (ML) workloads at scale is as much a data management problem as a model engineering problem. Big performance challenges exist when data management systems invoke ML classifiers as user-defined functions (UDFs) or when stand-alone ML frameworks interact with data stores for data loading and pre-processing (ETL). In particular, UDFs can be precompiled or simply a black box for the data management system and the data layout may be completely different from the native layout, thus adding overheads at the boundaries. In this demo, we will show how bottlenecks between existing systems can be eliminated when their engines are designed around runtime compilation and native code generation, which is the case for many state-of-the-art relational engines as well as ML frameworks. We demonstrate an integration of Flare (an accelerator for Spark SQL), and Lantern (an accelerator for TensorFlow and PyTorch) that results in a highly optimized end-to-end compiled data path, switching between SQL and ML processing with negligible overhead. Grégory M. Essertel, Ruby Y. Tahboub, Fei Wang 0046, James M. Decker, Tiark Rompf |
Proc. VLDB Endow. | 1 |
| 2018 | Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable ProgrammingabstractTraining of deep learning models depends on gradient descent and end-to-end differentiation. Under the slogan of differentiable programming, there is an increasing demand for efficient automatic gradient computation for emerging network architectures that incorporate dynamic control flow, especially in NLP. In this paper we propose an implementation of backpropagation using functions with callbacks, where the forward pass is executed as a sequence of function calls, and the backward pass as a corresponding sequence of function returns. A key realization is that this technique of chaining callbacks is well known in the programming languages community as continuation-passing style (CPS). Any program can be converted to this form using standard techniques, and hence, any program can be mechanically converted to compute gradients. Our approach achieves the same flexibility as other reverse-mode automatic differentiation (AD) techniques, but it can be implemented without any auxiliary data structures besides the function call stack, and it can easily be combined with graph construction and native code generation techniques through forms of multi-stage programming, leading to a highly efficient implementation that combines the performance benefits of define-then-run software frameworks such as TensorFlow with the expressiveness of define-by-run frameworks such as PyTorch. Fei Wang 0046, James M. Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf |
NeurIPS | 4 |
| 2018 | Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data
Grégory M. Essertel, Ruby Y. Tahboub, James M. Decker, Kevin J. Brown, Kunle Olukotun, Tiark Rompf |
OSDI | 1 |
| 2018 | How to Architect a Query Compiler, RevisitedabstractTo leverage modern hardware platforms to their fullest, more and more database systems embrace compilation of query plans to native code. In the research community, there is an ongoing debate about the best way to architect such query compilers. This is perceived to be a difficult task, requiring techniques fundamentally different from traditional interpreted query execution. Ruby Y. Tahboub, Grégory M. Essertel, Tiark Rompf |
SIGMOD Conference | 2 |
| 2016 | Gentrification gone too far? affordable 2nd-class values for fun and (co-)effectabstractFirst-class functions dramatically increase expressiveness, at the expense of static guarantees. In ALGOL or PASCAL, functions could be passed as arguments but never escape their defining scope. Therefore, function arguments could serve as temporary access tokens or capabilities, enabling callees to perform some action, but only for the duration of the call. In modern languages, such programming patterns are no longer available. Leo Osvald, Grégory M. Essertel, Xilun Wu, Lilliam I. González Alayón, Tiark Rompf |
OOPSLA | 2 |