EDBT 2026 Demo / reviewers in the wild / expert
Gabriel Dos Reis
dblp:41/1321
· DBLP profile ↗
10ranked-venue papers
1as first author
0since 2021 · last 2015
0000-0002-1908-1424ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 1 first-authorTheory of computation · 2Computer networks · 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
6 papers |
Programming languages and type systems · 79% Program verification · 10% Compilers and program optimization · 9% | |
| Network and information security
1 paper |
Systems and software security · 100% |
Topics — the 15 heaviest of 19, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems
language design |
0.3 | 3 | 2013 | Eliminating network protocol vulnerabilities through abstraction and systems language design · ICNP 2013 Specifying C++ concepts · POPL 2006 Concepts: linguistic support for generic programming in C++ · OOPSLA 2006 |
Programming languages and type systems › language semantics › formal semantics
operational semantics |
0.2 | 2 | 2012 | A mechanized semantics for C++ object construction and destruction, with applications to resource management · POPL 2012 Formal verification of object layout for c++ multiple inheritance · POPL 2011 |
Programming languages and type systems › object-oriented programming
multiple inheritance |
0.2 | 2 | 2012 | Formal verification of object layout for c++ multiple inheritance · POPL 2011 Open and efficient type switch for C++ · OOPSLA 2012 |
Programming languages and type systems › object-oriented programming
c++ object model |
0.1 | 1 | 2012 | A mechanized semantics for C++ object construction and destruction, with applications to resource management · POPL 2012 |
Programming languages and type systems
language semantics |
0.1 | 1 | 2012 | A mechanized semantics for C++ object construction and destruction, with applications to resource management · POPL 2012 |
Program verification › mechanized verification
mechanized metatheory |
0.1 | 1 | 2012 | A mechanized semantics for C++ object construction and destruction, with applications to resource management · POPL 2012 |
Programming languages and type systems › object-oriented programming
object-oriented languages |
0.1 | 1 | 2011 | Formal verification of object layout for c++ multiple inheritance · POPL 2011 |
Compilers and program optimization
verified compilation |
0.1 | 1 | 2011 | Formal verification of object layout for c++ multiple inheritance · POPL 2011 |
Programming languages and type systems › metaprogramming
c++ templates |
0.1 | 1 | 2006 | Specifying C++ concepts · POPL 2006 |
Programming languages and type systems › programming paradigms
generic programming |
0.1 | 1 | 2006 | Concepts: linguistic support for generic programming in C++ · OOPSLA 2006 |
Programming languages and type systems
type systems |
0.1 | 1 | 2006 | Specifying C++ concepts · POPL 2006 |
Programming languages and type systems
object-oriented programming |
0.0 | 1 | 2012 | Open and efficient type switch for C++ · OOPSLA 2012 |
Operating systems
resource management |
0.0 | 1 | 2012 | A mechanized semantics for C++ object construction and destruction, with applications to resource management · POPL 2012 |
Program verification
mechanized verification |
0.0 | 1 | 2011 | Formal verification of object layout for c++ multiple inheritance · POPL 2011 |
Compilers and program optimization › compiler toolchain
separate compilation |
0.0 | 1 | 2006 | Specifying C++ concepts · POPL 2006 |
Methods — techniques the papers use, named apart from their topics
whole-program analysis · 0.5compiler synthesis · 0.5coq mechanization · 0.1mechanized proof · 0.1constraint sets · 0.1concept-based type checking · 0.1concept checking · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2015 | Safer SDN programming through ArbiterabstractSoftware Defined Networking (SDN) programs are written with respect to assumptions on software and hardware facilities and protocol definitions. Silent mismatches between the expected feature set and implemented feature set of SDN artifacts can easily lead to hard to debug network configurations, decreased network performance, outages, or worse, security vulnerabilities. We show how the paradigm of axiomatic programming, supported by practical dependent types, provides effective support for SDN executable specifications and verification. Michael Lopez, C. Jasson Casey, Gabriel Dos Reis, Colton Chojnacki |
GPCE | 3 |
| 2013 | Open pattern matching for C++abstractPattern matching is an abstraction mechanism that can greatly simplify source code. We present functional-style pattern matching for C++ implemented as a library, called Mach71. All the patterns are user-definable, can be stored in variables, passed among functions, and allow the use of class hierarchies. As an example, we implement common patterns used in functional languages. Yuriy Solodkyy, Gabriel Dos Reis, Bjarne Stroustrup |
GPCE | 2 |
| 2013 | Eliminating network protocol vulnerabilities through abstraction and systems language designabstractIncorrect implementations of network protocol message specifications affect the stability, security, and cost of network system development. Most implementation defects fall into one of three categories of well defined message constraints. However, the general process of constructing network protocol stacks and systems does not capture these categorical constraints. We introduce a systems programming language with new abstractions that capture these constraints. Safe and efficient implementations of standard message handling operations are synthesized by our compiler, and whole-program analysis is used to ensure constraints are never violated. We present language examples using the OpenFlow protocol. C. Jasson Casey, Andrew Sutton, Gabriel Dos Reis, Alexander Sprintson |
ICNP | 3 |
| 2012 | Open and efficient type switch for C++abstractSelecting operations based on the run-time type of an object is key to many object-oriented and functional programming techniques. We present a technique for implementing open and efficient type switching on hierarchical extensible data types. The technique is general and copes well with C++ multiple inheritance. To simplify experimentation and gain realistic performance using production-quality compilers and tool chains, we implement a type switch construct as an ISO C++11 library, called Mach7. This library-only implementation provides concise notation and outperforms the visitor design pattern, commonly used for case analysis on types in object-oriented programming. For closed sets of types, its performance roughly equals equivalent code in functional languages, such as OCaml and Haskell. The type-switching code is easier to use and is more expressive than hand-coded visitors are. The library is non-intrusive and circumvents most of the extensibility restrictions typical of the visitor design pattern. It was motivated by applications involving large, typed, abstract syntax trees. Yuriy Solodkyy, Gabriel Dos Reis, Bjarne Stroustrup |
OOPSLA | 2 |
| 2012 | A mechanized semantics for C++ object construction and destruction, with applications to resource managementabstractWe present a formal operational semantics and its Coq mechanization for the C++ object model, featuring object construction and destruction, shared and repeated multiple inheritance, and virtual function call dispatch. These are key C++ language features for high-level system programming, in particular for predictable and reliable resource management. This paper is the first to present a formal mechanized account of the metatheory of construction and destruction in C++, and applications to popular programming techniques such as "resource acquisition is initialization". We also report on irregularities and apparent contradictions in the ISO C++03 and C++11 standards. Tahina Ramananandro, Gabriel Dos Reis, Xavier Leroy |
POPL | 2 |
| 2011 | An automatic parallelization framework for algebraic computation systemsabstractThis paper proposes a non-intrusive automatic parallelization framework for typeful and property-aware computer algebra systems. Automatic parallelization remains a promising computer program transformation for exploiting ubiquitous concurrency facilities available in modern computers. The framework uses semantics-based static analysis to extract reductions in library components based on algebraic properties. An early implementation shows up to 5 times speed-up for library functions and homotopy-based polynomial system solver. The general framework is applicable to algebraic computation systems and programming languages with advanced type systems that support user-defined axioms or annotation systems. Gabriel Dos Reis |
ISSAC | 2 |
| 2011 | Formal verification of object layout for c++ multiple inheritanceabstractObject layout - the concrete in-memory representation of objects - raises many delicate issues in the case of the C++ language, owing in particular to multiple inheritance, C compatibility and separate compilation. This paper formalizes a family of C++ object layout schemes and mechanically proves their correctness against the operational semantics for multiple inheritance of Wasserrab et al. This formalization is flexible enough to account for space-saving techniques such as empty base class optimization and tail-padding optimization. As an application, we obtain the first formal correctness proofs for realistic, optimized object layout algorithms, including one based on the popular "common vendor" Itanium C++ application binary interface. This work provides semantic foundations to discover and justify new layout optimizations; it is also a first step towards the verification of a C++ compiler front-end. Tahina Ramananandro, Gabriel Dos Reis, Xavier Leroy |
POPL | 2 |
| 2007 | Algorithmic differentiation in AxiomabstractThis paper describes the design and implementation of an algorithmic differentiation framework in the Axiom computer algebra system. Our implementation works by transformations on Spad programs at the level of the typed abstract syntax tree -- Spad is the language for extending Axiom with libraries. The framework illustrates an algebraic theory of algorithmic differentiation, here only for Spad programs, but we suggest that the theory is general. In particular, if it is possible to define a compositional semantics for programs, we define the exact requirements for when a program can be algorithmically differentiated. This leads to a general algorithmic differentiation system, and is not confined to functions which compute with basic data types, such as floating point numbers. Jacob N. Smith, Gabriel Dos Reis, Jaakko Järvi |
ISSAC | 2 |
| 2006 | Concepts: linguistic support for generic programming in C++abstractGeneric programming has emerged as an important technique for the development of highly reusable and efficient software libraries. In C++, generic programming is enabled by the flexibility of templates, the C++ type parametrization mechanism. However, the power of templates comes with a price: generic (template) libraries can be more difficult to use and develop than non-template libraries and their misuse results in notoriously confusing error messages. As currently defined in C++98, templates are unconstrained, and type-checking of templates is performed late in the compilation process, i.e., after the use of a template has been combined with its definition. To improve the support for generic programming in C++, we introduce concepts to express the syntactic and semantic behavior of types and to constrain the type parameters in a C++ template. Using concepts, type-checking of template definitions is separated from their uses, thereby making templates easier to use and easier to compile. These improvements are achieved without limiting the flexibility of templates or decreasing their performance - in fact their expressive power is increased. This paper describes the language extensions supporting concepts, their use in the expression of the C++ Standard Template Library, and their implementation in the ConceptGCC compiler. Concepts are candidates for inclusion in the upcoming revision of the ISO C++ standard, C++0x. Douglas P. Gregor, Jaakko Järvi, Jeremy G. Siek, Bjarne Stroustrup, Gabriel Dos Reis, Andrew Lumsdaine |
OOPSLA | 5 |
| 2006 | Specifying C++ conceptsabstractC++ templates are key to the design of current successful mainstream libraries and systems. They are the basis of programming techniques in diverse areas ranging from conventional general-purpose programming to software for safety-critical embedded systems. Current work on improving templates focuses on the notion of concepts (a type system for templates), which promises significantly improved error diagnostics and increased expressive power such as concept-based overloading and function template partial specialization. This paper presents C++ templates with an emphasis on problems related to separate compilation. We consider the problem of how to express concepts in a precise way that is simple enough to be usable by ordinary programmers. In doing so, we expose a few weakness of the current specification of the C++ standard library and suggest a far more precise and complete specification. We also present a systematic way of translating our proposed concept definitions, based on use-patterns rather than function signatures, into constraint sets that can serve as convenient basis for concept checking in a compiler. Gabriel Dos Reis, Bjarne Stroustrup |
POPL | 1 |