VLDB 2026 Research / reviewers in the wild / expert
Vincent St-Amour
dblp:37/9698
· DBLP profile ↗
13ranked-venue papers
6as first author
0since 2021 · last 2019
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 12 · 6 first-authorSystems, architecture and hardware · 2
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
7 papers |
Programming languages and type systems · 44% Compilers and program optimization · 28% Program analysis · 9% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Parallel and multicore computing · 100% |
Topics — the 17 heaviest of 20, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › language design
language features |
0.4 | 1 | 2019 | Feature-Specific Profiling · ACM Trans. Program. Lang. Syst. 2019 |
Program analysis › dynamic analysis
profiling |
0.4 | 1 | 2019 | Feature-Specific Profiling · ACM Trans. Program. Lang. Syst. 2019 |
Programming languages and type systems
domain-specific languages |
0.4 | 2 | 2018 | POP-PL: A Patient-Oriented Prescription Programming Language · ACM Trans. Program. Lang. Syst. 2018 Languages as libraries · PLDI 2011 |
Programming languages and type systems › language design
language extension |
0.3 | 2 | 2015 | Profile-guided meta-programming · PLDI 2015 Languages as libraries · PLDI 2011 |
Compilers and program optimization › parallelization
automatic parallelization |
0.3 | 1 | 2018 | Unconventional Parallelization of Nondeterministic Applications · ASPLOS 2018 |
Program verification › contract verification
contract checking |
0.3 | 1 | 2018 | Collapsible contracts: fixing a pathology of gradual typing · Proc. ACM Program. Lang. 2018 |
Programming languages and type systems › type systems
gradual typing |
0.3 | 1 | 2018 | Collapsible contracts: fixing a pathology of gradual typing · Proc. ACM Program. Lang. 2018 |
Compilers and program optimization › parallelization
speculative parallelization |
0.3 | 1 | 2018 | Unconventional Parallelization of Nondeterministic Applications · ASPLOS 2018 |
Parallel and multicore computing
thread-level parallelism |
0.3 | 1 | 2018 | Unconventional Parallelization of Nondeterministic Applications · ASPLOS 2018 |
Programming languages and type systems
metaprogramming |
0.2 | 1 | 2015 | Profile-guided meta-programming · PLDI 2015 |
Compilers and program optimization › dynamic optimization
profile-guided optimization |
0.2 | 1 | 2015 | Profile-guided meta-programming · PLDI 2015 |
Compilers and program optimization › compiler construction
compiler diagnostics |
0.1 | 1 | 2012 | Optimization coaching: optimizers learn to communicate with programmers · OOPSLA 2012 |
Programming languages and type systems › metaprogramming
macros |
0.1 | 1 | 2011 | Languages as libraries · PLDI 2011 |
Debugging and program repair
performance debugging |
0.1 | 1 | 2019 | Feature-Specific Profiling · ACM Trans. Program. Lang. Syst. 2019 |
Medical and health informatics
clinical decision support |
0.1 | 1 | 2018 | POP-PL: A Patient-Oriented Prescription Programming Language · ACM Trans. Program. Lang. Syst. 2018 |
Usability and user experience research › psychology of programming
programming language usability |
0.1 | 1 | 2018 | POP-PL: A Patient-Oriented Prescription Programming Language · ACM Trans. Program. Lang. Syst. 2018 |
Programming languages and type systems › type systems
type soundness |
0.1 | 1 | 2018 | Collapsible contracts: fixing a pathology of gradual typing · Proc. ACM Program. Lang. 2018 |
Methods — techniques the papers use, named apart from their topics
profiling · 1.3user evaluation · 1.0language design · 1.0runtime system · 0.7auto-tuning · 0.7feature-specific profiling · 0.4contract collapsing · 0.3macro expansion · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Feature-Specific ProfilingabstractWhile high-level languages come with significant readability and maintainability benefits, their performance remains difficult to predict. For example, programmers may unknowingly use language features inappropriately, which cause their programs to run slower than expected. To address this issue, we introduce feature-specific profiling , a technique that reports performance costs in terms of linguistic constructs. Feature-specific profilers help programmers find expensive uses of specific features of their language. We describe the architecture of a profiler that implements our approach, explain prototypes of the profiler for two languages with different characteristics and implementation strategies, and provide empirical evidence for the approach’s general usefulness as a performance debugging tool. Leif Andersen, Vincent St-Amour, Jan Vitek, Matthias Felleisen |
ACM Trans. Program. Lang. Syst. | 2 |
| 2018 | Unconventional Parallelization of Nondeterministic ApplicationsabstractThe demand for thread-level-parallelism (TLP) on commodity processors is endless as it is essential for gaining performance and saving energy. However, TLP in today's programs is limited by dependences that must be satisfied at run time. We have found that for nondeterministic programs, some of these actual dependences can be satisfied with alternative data that can be generated in parallel, thus boosting the program's TLP. Satisfying these dependences with alternative data nonetheless produces final outputs that match those of the original nondeterministic program. To demonstrate the practicality of our technique, we describe the design, implementation, and evaluation of our compilers, autotuner, profiler, and runtime, which are enabled by our proposed C++ programming language extensions. The resulting system boosts the performance of six well-known nondeterministic and multi-threaded benchmarks by 158.2% (geometric mean) on a 28-core Intel-based platform. Enrico Armenio Deiana, Vincent St-Amour, Peter A. Dinda, Nikos Hardavellas, Simone Campanoni |
ASPLOS | 2 |
| 2018 | Collapsible contracts: fixing a pathology of gradual typingabstractThe promise of gradual typing is that programmers should get the best of both worlds: the static guarantees of static types, and the dynamic flexibility of untyped programming. This is an enticing benefit, but one that, in practice, may carry significant costs. Significant enough, in fact, to threaten the very practicality of gradual typing; slowdowns as high as 120x are reported as arising from gradual typing. If one examines these results closely, though, it becomes clear that the costs of gradual typing are not evenly distributed. Indeed, while mixing typed and untyped code almost invariably carries non-trivial costs, many truly deal-breaking slowdowns exhibit pathological performance. Unfortunately, the very presence of these pathological cases---and therefore the possibility of hitting them during development---makes gradual typing a risky proposition in any setting that even remotely cares about performance. This work attacks one source of large overheads in these pathological cases: an accumulation of contract wrappers that perform redundant checks. The work introduces a novel strategy for contract checking---collapsible contracts---which eliminates this redundancy for function and vector contracts and drastically reduces the overhead of contract wrappers. We implemented this checking strategy as part of the Racket contract system, which is used in the Typed Racket gradual typing system. Our experiments show that our strategy successfully brings a class of pathological cases in line with normal cases, while not introducing an undue overhead to any of the other cases. Our results also show that the performance of gradual typing in Racket remains prohibitive for many programs, but that collapsible contracts are one essential ingredient in reducing the cost of gradual typing. Daniel Feltey, Ben Greenman, Christophe Scholliers, Robert Bruce Findler, Vincent St-Amour |
Proc. ACM Program. Lang. | 5 |
| 2018 | POP-PL: A Patient-Oriented Prescription Programming LanguageabstractA medical prescription is a set of health care instructions that govern the plan of care for an individual patient, which may include orders for drug therapy, diet, clinical assessment, and laboratory testing. Clinicians have long used algorithmic thinking to describe and implement prescriptions but without the benefit of a formal programming language. Instead, medical algorithms are expressed using a natural language patois, flowcharts, or as structured data in an electronic medical record system. The lack of a prescription programming language inhibits expressiveness; results in prescriptions that are difficult to understand, hard to debug, and awkward to reuse; and increases the risk of fatal medical error. This article reports on the design and evaluation of Patient-Oriented Prescription Programming Language (POP-PL), a domain-specific programming language designed for expressing prescriptions. The language is based around the idea that programs and humans have complementary strengths that, when combined properly, can make for safer, more accurate performance of prescriptions. Use of POP-PL facilitates automation of certain low-level vigilance tasks, freeing up human cognition for abstract thinking, compassion, and human communication. We implemented this language and evaluated its design attempting to write prescriptions in the new language and evaluated its usability by assessing whether clinicians can understand and modify prescriptions written in the language. We found that some medical prescriptions can be expressed in a formal domain-specific programming language, and we determined that medical professionals can understand and correctly modify programs written in POP-PL. We also discuss opportunities for refining and further developing POP-PL. Spencer P. Florence, Burke Fetscher, Matthew Flatt, William H. Temps, Vincent St-Amour, Tina Kiguradze, Dennis P. West, Charlotte Niznik, Paul R. Yarnold, Robert Bruce Findler, Steven M. Belknap |
ACM Trans. Program. Lang. Syst. | 5 |
| 2017 | POSTER: The Liberation Day of Nondeterministic ProgramsabstractThe demand for thread-level parallelism (TLP) is endless, especially on commodity processors, as TLP is essential for gaining performance. However, the TLP of today's programs is limited by dependences that must be satisfied at run time. We have found that for nondeterministic programs, some of these actual dependences can be satisfied with alternative data that can be generated in parallel, therefore boosting the program's TLP. We show how these dependences (which we call "state dependences" because they are related to the program's state) can be exploited using algorithm-specific knowledge. To demonstrate the practicality of our technique, we implemented a system called April25th that incorporates the concept of "state dependences". This system boosts the performance of five nondeterministic, multi-threaded PARSEC benchmarks by 100.5%. Enrico Armenio Deiana, Vincent St-Amour, Peter A. Dinda, Nikos Hardavellas, Simone Campanoni |
PACT | 2 |
| 2017 | Herbarium Racketensis: a stroll through the woods (functional pearl)abstractDomain-specific languages are the ultimate abstraction, dixit Paul Hudak. But what abstraction should we use to build such ultimate abstractions? What is sauce for the goose is sauce for the gander: a language, of course! Racket is the ultimate abstraction-abstraction, a platform for quickly and easily building new ultimate abstractions. This pearl demonstrates Racket's power by taking a leisurely walk through the implementation of a DSL for Lindenmayer systems, the computational model par excellence of theoretical botany. Vincent St-Amour, Daniel Feltey, Spencer P. Florence, Shu-Hung You, Robert Bruce Findler |
Proc. ACM Program. Lang. | 1 |
| 2015 | Feature-Specific Profiling
Vincent St-Amour, Leif Andersen, Matthias Felleisen |
CC | 1 |
| 2015 | Optimization Coaching for JavaScriptabstractThe performance of dynamic object-oriented programming languages such as JavaScript depends heavily on highly optimizing just-in-time compilers. Such compilers, like all compilers, can silently fall back to generating conservative, low-performance code during optimization. As a result, programmers may inadvertently cause performance issues on users' systems by making seemingly inoffensive changes to programs. This paper shows how to solve the problem of silent optimization failures. It specifically explains how to create a so-called optimization coach for an object-oriented just-in-time-compiled programming language. The development and evaluation build on the SpiderMonkey JavaScript engine, but the results should generalize to a variety of similar platforms. Vincent St-Amour, Shu-yu Guo |
ECOOP | 1 |
| 2015 | Profile-guided meta-programmingabstractContemporary compiler systems such as GCC, .NET, and LLVM incorporate profile-guided optimizations (PGOs) on low-level intermediate code and basic blocks, with impressive results over purely static heuristics. Recent work shows that profile information is also useful for performing source-to-source optimizations via meta-programming. For example, using profiling information to inform decisions about data structures and algorithms can potentially lead to asymptotic improvements in performance. We present a design for profile-guided meta-programming in a general-purpose meta-programming system. Our design is parametric over the particular profiler and meta-programming system. We implement this design in two different meta-programming systems---the syntactic extensions systems of Chez Scheme and Racket---and provide several profile-guided meta-programs as usability case studies. William J. Bowman, Swaha Miller, Vincent St-Amour, R. Kent Dybvig |
PLDI | 3 |
| 2013 | Experience report: applying random testing to a base type environmentabstractAs programmers, programming in typed languages increases our confidence in the correctness of our programs. As type system designers, soundness proofs increase our confidence in the correctness of our type systems. There is more to typed languages than their typing rules, however. To be usable, a typed language needs to provide a well-furnished standard library and to specify types for its exports. Vincent St-Amour, Neil Toronto |
ICFP | 1 |
| 2012 | Optimization coaching: optimizers learn to communicate with programmersabstractOptimizing compilers map programs in high-level languages to high-performance target language code. To most programmers, such a compiler constitutes an impenetrable black box whose inner workings are beyond their understanding. Since programmers often must understand the workings of their compilers to achieve their desired performance goals, they typically resort to various forms of reverse engineering, such as examining compiled code or intermediate forms. Instead, optimizing compilers should engage programmers in a dialog. This paper introduces one such possible form of dialog: optimization coaching. An optimization coach watches while a program is compiled, analyzes the results, generates suggestions for enabling further compiler optimization in the source program, and presents a suitable synthesis of its results to the programmer. We present an evaluation based on case studies, which illustrate how an optimization coach can help programmers achieve optimizations resulting in substantial performance improvements. Vincent St-Amour, Sam Tobin-Hochstadt, Matthias Felleisen |
OOPSLA | 1 |
| 2012 | Typing the Numeric Tower
Vincent St-Amour, Sam Tobin-Hochstadt, Matthew Flatt, Matthias Felleisen |
PADL | 1 |
| 2011 | Languages as librariesabstractProgramming language design benefits from constructs for extending the syntax and semantics of a host language. While C's string-based macros empower programmers to introduce notational shorthands, the parser-level macros of Lisp encourage experimentation with domain-specific languages. The Scheme programming language improves on Lisp with macros that respect lexical scope. Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, Matthias Felleisen |
PLDI | 2 |