EDBT 2026 Demo / reviewers in the wild / expert
Panagiotis Vekris
dblp:145/7809
· DBLP profile ↗
5ranked-venue papers
2as first author
0since 2021 · last 2017
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 2 first-author
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 |
Programming languages and type systems · 70% Program verification · 15% Program analysis · 9% |
Topics — the 12 heaviest of 13, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems
type systems |
0.5 | 2 | 2017 | Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017 Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Program analysis
static analysis |
0.3 | 1 | 2017 | Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems
type checking |
0.3 | 1 | 2017 | Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems
type inference |
0.3 | 1 | 2017 | Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017 |
Programming languages and type systems › type systems
refinement types |
0.2 | 1 | 2016 | Refinement types for TypeScript · PLDI 2016 |
Programming languages and type systems › type systems › refinement types
refinement type system |
0.2 | 1 | 2016 | Refinement types for TypeScript · PLDI 2016 |
Program verification › type-based verification
refinement type verification |
0.2 | 1 | 2016 | Refinement types for TypeScript · PLDI 2016 |
Program verification
static verification |
0.2 | 1 | 2016 | Refinement types for TypeScript · PLDI 2016 |
Programming languages and type systems › type systems
gradual typing |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Compilers and program optimization
run-time checks |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Programming languages and type systems › type systems › gradual typing
sound gradual typing |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Programming languages and type systems › type systems
soundness |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Methods — techniques the papers use, named apart from their topics
type inference · 0.3parallelization · 0.3incrementalization · 0.3flow-sensitive reasoning · 0.2SSA translation · 0.2simulation proof · 0.2runtime checks · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2017 | Fast and precise type checking for JavaScriptabstractIn this paper we present the design and implementation of Flow, a fast and precise type checker for JavaScript that is used by thousands of developers on millions of lines of code at Facebook every day. Flow uses sophisticated type inference to understand common JavaScript idioms precisely. This helps it find non-trivial bugs in code and provide code intelligence to editors without requiring significant rewriting or annotations from the developer. We formalize an important fragment of Flow's analysis and prove its soundness. Furthermore, Flow uses aggressive parallelization and incrementalization to deliver near-instantaneous response times. This helps it avoid introducing any latency in the usual edit-refresh cycle of rapid JavaScript development. We describe the algorithms and systems infrastructure that we built to scale Flow's analysis. Avik Chaudhuri, Panagiotis Vekris, Sam Goldman, Marshall Roch, Gabriel Levi |
Proc. ACM Program. Lang. | 2 |
| 2016 | Refinement types for TypeScriptabstractWe present Refined TypeScript (RSC), a lightweight refinement type system for TypeScript, that enables static verification of higher-order, imperative programs. We develop a formal system for RSC that delineates the interaction between refinement types and mutability, and enables flow-sensitive reasoning by translating input programs to an equivalent intermediate SSA form. By establishing type safety for the intermediate form, we prove safety for the input programs. Next, we extend the core to account for imperative and dynamic features of TypeScript, including overloading, type reflection, ad hoc type hierarchies and object initialization. Finally, we evaluate RSC on a set of real-world benchmarks, including parts of the Octane benchmarks, D3, Transducers, and the TypeScript compiler. We show how RSC successfully establishes a number of value dependent properties, such as the safety of array accesses and downcasts, while incurring a modest overhead in type annotations and code restructuring. Panagiotis Vekris, Benjamin Cosman, Ranjit Jhala |
PLDI | 1 |
| 2015 | Trust, but Verify: Two-Phase Typing for Dynamic LanguagesabstractA key challenge when statically typing so-called dynamic languages is the ubiquity of value-based overloading, where a given function can dynamically reflect upon and behave according to the types of its arguments. Thus, to establish basic types, the analysis must reason precisely about values, but in the presence of higher-order functions and polymorphism, this reasoning itself can require basic types. In this paper we address this chicken-and-egg problem by introducing the framework of two-phased typing. The first "trust" phase performs classical, i.e. flow-, path- and value-insensitive type checking to assign basic types to various program expressions. When the check inevitably runs into "errors" due to value-insensitivity, it wraps problematic expressions with DEAD-casts, which explicate the trust obligations that must be discharged by the second phase. The second phase uses refinement typing, a flow- and path-sensitive analysis, that decorates the first phase's types with logical predicates to track value relationships and thereby verify the casts and establish other correctness properties for dynamically typed languages. Panagiotis Vekris, Benjamin Cosman, Ranjit Jhala |
ECOOP | 1 |
| 2015 | Safe & Efficient Gradual Typing for TypeScriptabstractCurrent proposals for adding gradual typing to JavaScript, such as Closure, TypeScript and Dart, forgo soundness to deal with issues of scale, code reuse, and popular programming patterns. We show how to address these issues in practice while retaining soundness. We design and implement a new gradual type system, prototyped for expediency as a 'Safe' compilation mode for TypeScript. Our compiler achieves soundness by enforcing stricter static checks and embedding residual runtime checks in compiled code. It emits plain JavaScript that runs on stock virtual machines. Our main theorem is a simulation that ensures that the checks introduced by Safe TypeScript (1) catch any dynamic type error, and (2) do not alter the semantics of type-safe TypeScript code. Aseem Rastogi, Nikhil Swamy, Cédric Fournet, Gavin M. Bierman, Panagiotis Vekris |
POPL | 5 |
| 2011 | Dynamic deadlock avoidance in systems code using statically inferred effectsabstractDeadlocks can have devastating effects in systems code. We have developed a type and effect system that provably avoids them and in this paper we present a tool that uses a sound static analysis to instrument multithreaded C programs and then links these programs with a run-time system that avoids possible deadlocks. In contrast to most other purely static tools for deadlock freedom, our tool does not insist that programs adhere to a strict lock acquisition order or use lock primitives in a block-structured way, thus it is appropriate for systems code and OS applications. We also report some very promising benchmark results which show that all possible deadlocks can automatically be avoided with only a small run-time overhead. More importantly, this is done without having to modify the original source program by altering the order of resource acquisition operations or by adding annotations. Prodromos Gerakios, Nikolaos S. Papaspyrou, Konstantinos Sagonas, Panagiotis Vekris |
PLOS@SOSP | 4 |