VLDB 2026 Research / reviewers in the wild / expert
Neal Glew
dblp:31/4095 · also Arthur Neal Glew
· DBLP profile ↗
18ranked-venue papers
7as first author
0since 2021 · last 2013
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 15 · 7 first-authorSystems, architecture and hardware · 1Databases, data management, data science and information retrieval · 1Theory of computation · 1Applied, interdisciplinary, general and emerging computing · 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 · 58% Compilers and program optimization · 18% Program verification · 12% | |
| Network and information security
3 papers |
Cryptographic protocols and secure computation · 84% Systems and software security · 16% |
Topics — the 20 heaviest of 23, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems › static typing
typed assembly language |
0.1 | 4 | 2005 | Certifying Compilation for a Language with Stack Allocation · LICS 2005 From system F to typed assembly language · ACM Trans. Program. Lang. Syst. 1999 Type-Safe Linking and Modular Assembly Language · POPL 1999 |
Programming languages and type systems › type systems
type soundness |
0.1 | 3 | 2006 | A verifiable SSA program representation for aggressive compiler optimization · POPL 2006 Type-Safe Linking and Modular Assembly Language · POPL 1999 From System F to Typed Assembly Language · POPL 1998 |
Programming languages and type systems
type systems |
0.1 | 3 | 2005 | Certifying Compilation for a Language with Stack Allocation · LICS 2005 An efficient class and object encoding · OOPSLA 2000 Type-Safe Linking and Modular Assembly Language · POPL 1999 |
Program verification › security property verification
memory safety verification |
0.1 | 1 | 2006 | A verifiable SSA program representation for aggressive compiler optimization · POPL 2006 |
Program analysis
program representation |
0.1 | 1 | 2006 | A verifiable SSA program representation for aggressive compiler optimization · POPL 2006 |
Compilers and program optimization › intermediate representation
static single assignment form |
0.1 | 1 | 2006 | A verifiable SSA program representation for aggressive compiler optimization · POPL 2006 |
Programming languages and type systems › type theory
linear logic |
0.1 | 1 | 2005 | Certifying Compilation for a Language with Stack Allocation · LICS 2005 |
Programming languages and type systems › language-based security
memory safety |
0.1 | 1 | 2005 | Certifying Compilation for a Language with Stack Allocation · LICS 2005 |
Compilers and program optimization
verified compilation |
0.1 | 1 | 2005 | Certifying Compilation for a Language with Stack Allocation · LICS 2005 |
Cryptographic protocols and secure computation › fair exchange
certified email |
0.0 | 1 | 2002 | Certified email with a light on-line trusted third party: design and implementation · WWW 2002 |
Compilers and program optimization
compiler construction |
0.0 | 1 | 2000 | An efficient class and object encoding · OOPSLA 2000 |
Programming languages and type systems › object-oriented programming
object-oriented language design |
0.0 | 1 | 2000 | An efficient class and object encoding · OOPSLA 2000 |
Runtime systems and virtual machines
object representation |
0.0 | 1 | 2000 | An efficient class and object encoding · OOPSLA 2000 |
Programming languages and type systems › language implementation
type-preserving compilation |
0.0 | 1 | 1999 | From system F to typed assembly language · ACM Trans. Program. Lang. Syst. 1999 |
Programming languages and type systems › language-based security
type-safe linking |
0.0 | 1 | 1999 | Type-Safe Linking and Modular Assembly Language · POPL 1999 |
Compilers and program optimization › program transformation
closure conversion |
0.0 | 1 | 1998 | From System F to Typed Assembly Language · POPL 1998 |
Program verification
proof-carrying code |
0.0 | 1 | 1998 | From System F to Typed Assembly Language · POPL 1998 |
Runtime systems and virtual machines › runtime memory management
stack allocation |
0.0 | 1 | 2005 | Certifying Compilation for a Language with Stack Allocation · LICS 2005 |
Systems and software security › operating system security
extensible security architecture |
0.0 | 1 | 1999 | Type-Safe Linking and Modular Assembly Language · POPL 1999 |
Systems and software security › isolation
isolation of untrusted code |
0.0 | 1 | 1999 | From system F to typed assembly language · ACM Trans. Program. Lang. Syst. 1999 |
Methods — techniques the papers use, named apart from their topics
closure conversion · 0.1type system · 0.1SSA · 0.1linear logic · 0.1domain-specific predicates · 0.1link calculus · 0.0inference rules · 0.0higher-order type constructors · 0.0abstract types · 0.0CPS conversion · 0.0trusted third party · 0.0protocol design · 0.0polymorphic closure conversion · 0.0type-preserving compilation · 0.0CPS transformation · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2013 | The Intel labs Haskell research compilerabstractThe Glasgow Haskell Compiler (GHC) is a well supported optimizing compiler for the Haskell programming language, along with its own extensions to the language and libraries. Haskell's lazy semantics imposes a runtime model which is in general difficult to implement efficiently. GHC achieves good performance across a wide variety of programs via aggressive optimization taking advantage of the lack of side effects, and by targeting a carefully tuned virtual machine. The Intel Labs Haskell Research Compiler uses GHC as a frontend, but provides a new whole-program optimizing backend by compiling the GHC intermediate representation to a relatively generic functional language compilation platform. We found that GHC's external Core language was relatively easy to use, but reusing GHC's libraries and achieving full compatibility were harder. For certain classes of programs, our platform provides substantial performance benefits over GHC alone, performing 2x faster than GHC with the LLVM backend on selected modern performance-oriented benchmarks; for other classes of programs, the benefits of GHC's tuned virtual machine continue to outweigh the benefits of more aggressive whole program optimization. Overall we achieve parity with GHC with the LLVM backend. In this paper, we describe our Haskell compiler stack, its implementation and optimization approach, and present benchmark results comparing it to GHC. Hai Liu 0012, Neal Glew, Leaf Petersen, Todd A. Anderson 0001 |
Haskell | 2 |
| 2013 | Automatic SIMD vectorization for HaskellabstractExpressing algorithms using immutable arrays greatly simplifies the challenges of automatic SIMD vectorization, since several important classes of dependency violations cannot occur. The Haskell programming language provides libraries for programming with immutable arrays, and compiler support for optimizing them to eliminate the overhead of intermediate temporary arrays. We describe an implementation of automatic SIMD vectorization in a Haskell compiler which gives substantial vector speedups for a range of programs written in a natural programming style. We compare performance with that of programs compiled by the Glasgow Haskell Compiler. Leaf Petersen, Dominic A. Orchard, Neal Glew |
ICFP | 3 |
| 2012 | GC-Safe Interprocedural Unboxing
Leaf Petersen, Neal Glew |
CC | 2 |
| 2006 | A verifiable SSA program representation for aggressive compiler optimizationabstractWe present a verifiable low-level program representation to embed, propagate, and preserve safety information in high perfor-mance compilers for safe languages such as Java and C#. Our representation precisely encodes safety information via static single-assignment (SSA) [11, 3] proof variables that are first-class constructs in the program.We argue that our representation allows a compiler to both (1) express aggressively optimized machine-independent code and (2) leverage existing compiler infrastructure to preserve safety information during optimization. We demonstrate that this approach supports standard compiler optimizations, requires minimal changes to the implementation of those optimizations, and does not artificially impede those optimizations to preserve safety. We also describe a simple type system that formalizes type safety in an SSA-style control-flow graph program representation. Through the types of proof variables, our system enables compositional verification of memory safety in optimized code. Finally, we discuss experiences integrating this representation into the machine-independent global optimizer of STARJIT, a high-performance just-in-time compiler that performs aggressive control-flow, data-flow, and algebraic optimizations and is competitive with top production systems. Vijay Menon 0002, Neal Glew, Brian R. Murphy, Andrew McCreight, Tatiana Shpeisman, Ali-Reza Adl-Tabatabai, Leaf Petersen |
POPL | 2 |
| 2005 | Certifying Compilation for a Language with Stack AllocationabstractThis paper describes an assembly-language type system capable of ensuring memory safety in the presence of both heap and stack allocation. The type system uses linear logic and a set of domain-specific predicates to specify invariants about the shape of the store. Part of the model for our logic is a tree of "stack tags" that tracks the evolution of the stack over time. To demonstrate the expressiveness of the type system, we define Micro-CLI, a simple imperative language that captures the essence of stack allocation in the common language infrastructure. We show how to compile well-typed Micro-CLI into well-typed assembly. Limin Jia 0001, Frances Spalding, David Walker 0001, Neal Glew |
LICS | 4 |
| 2005 | Type-Safe Optimisation of Plugin Architectures
Neal Glew, Jens Palsberg, Christian Grothoff |
SAS | 1 |
| 2005 | The Open Runtime Platform: a flexible high-performance managed runtime environmentabstractAbstract The Open Runtime Platform (ORP) is a high‐performance managed runtime environment (MRTE) that features exact generational garbage collection, fast thread synchronization, and multiple coexisting just‐in‐time compilers (JITs). ORP was designed for flexibility in order to support experiments in dynamic compilation, garbage collection, synchronization, and other technologies. It can be built to run either Java or Common Language Infrastructure (CLI) applications, to run under the Windows or Linux operating systems, and to run on the IA‐32 or Itanium processor family (IPF) architectures. Achieving high performance in a MRTE presents many challenges, particularly when flexibility is a major goal. First, to enable the use of different garbage collectors and JITs, each component must be isolated from the rest of the environment through a well‐defined software interface. Without careful attention, this isolation could easily harm performance. Second, MRTEs have correctness and safety requirements that traditional languages such as C++ lack. These requirements, including null pointer checks, array bounds checks, and type checks, impose additional runtime overhead. Finally, the dynamic nature of MRTEs makes some traditional compiler optimizations, such as devirtualization of method calls, more difficult to implement or more limited in applicability. To get full performance, JITs and the core virtual machine (VM) must cooperate to reduce or eliminate (where possible) these MRTE‐specific overheads. In this paper, we describe the structure of ORP in detail, paying particular attention to how it supports flexibility while preserving high performance. We describe the interfaces between the garbage collector, the JIT, and the core VM; how these interfaces enable multiple garbage collectors and JITs without sacrificing performance; and how they allow the JIT and the core VM to reduce or eliminate MRTE‐specific performance issues. Copyright © 2005 John Wiley & Sons, Ltd. Michal Cierniak, Marsha Eng, Neal Glew, Brian T. Lewis, James M. Stichnoth |
Concurr. Pract. Exp. | 3 |
| 2004 | Type-safe method inlining
Neal Glew, Jens Palsberg |
Sci. Comput. Program. | 1 |
| 2003 | Stack-based typed assembly languageabstractThe following three figures (figures 10, 11 and 12) were not shown in the original published version of the article. These figures constitute the entire static semantics of the STAL type system. J. Gregory Morrisett, Karl Crary, Neal Glew, David Walker 0001 |
J. Funct. Program. | 3 |
| 2002 | Type-Safe Method Inlining
Neal Glew, Jens Palsberg |
ECOOP | 1 |
| 2002 | A Theory of Second-Order Trees
Neal Glew |
ESOP | 1 |
| 2002 | Certified email with a light on-line trusted third party: design and implementationabstractThis paper presents a new protocol for certified email. The protocol aims to combine security, scalability, easy implementation, and viable deployment. The protocol relies on a light on-line trusted third party; it can be implemented without any special software for the receiver beyond a standard email reader and web browser, and does not require any public-key infrastructure. Martín Abadi, Neal Glew |
WWW | 2 |
| 2002 | Stack-based typed assembly languageabstractThis paper presents STAL, a variant of Typed Assembly Language with constructs and types to support a limited form of stack allocation. As with other statically-typed low-level languages, the type system of STAL ensures that a wide class of errors cannot occur at run time, and therefore the language can be adapted for use in certifying compilers where security is a concern. Like the Java Virtual Machine Language (JVML), STAL supports stack allocation of local variables and procedure activation records, but unlike the JVML, STAL does not pre-suppose fixed notions of procedures, exceptions, or calling conventions. Rather, compiler writers can choose encodings for these high-level constructs using the more primitive RISC-like mechanisms of STAL. Consequently, some important optimizations that are impossible to perform within the JVML, such as tail call elimination or callee-saves registers, can be easily expressed within STAL. J. Gregory Morrisett, Karl Crary, Neal Glew, David Walker 0001 |
J. Funct. Program. | 3 |
| 2000 | An efficient class and object encodingabstractAn object encoding translates a language with object primitives to one without. Similarly, a class encoding translates classes into other primitives. Both are important theoretically for comparing the expressive power of languages and for transferring results from traditional languages to those with objects and classes. Both are also important foundations for the implementation of object-oriented languages as compilers typically include a phase that performs these translations.This paper describes a language with a primitive notion of classes and objects and presents an encoding of this language into one with records and functions. The encoding uses two techniques often used in compilers for single-inheritance class-based object-oriented languages: the self-application semantics and the method-table technique. To type the output of the encoding, the encoding uses a new formulation of self quantifiers that is more powerful than previous approaches. Neal Glew |
OOPSLA | 1 |
| 1999 | Type Dispatch for Named Hierarchical TypesabstractType dispatch constructs are an important feature of many programming languages. Scheme has predicates for testing the runtime type of a value. Java has a class cast expression and a try statement for switching on an exception's class. Crucial to these mechanisms, in typed languages, is type renement: The static type system will use type dispatch to rene types in successful dispatch branches. Existing work in functional languages has addressed certain kinds of type dispatch, namely, intensional type analysis. However, this work does not extend to languages with subtyping nor to named types. This paper describes a number of type dispatch constructs that share a common theme: class cast and class case constructs in object oriented languages, ML style exceptions, hier-archical extensible sums, and multimethods. I describe a unifying mechanism, tagging, that abstracts the operation of these constructs, and formalise a small tagging language. After discussing how to implement the tagging language, I present a more primitive language and give a formal translation from the tagging language. 1 Neal Glew |
ICFP | 1 |
| 1999 | Type-Safe Linking and Modular Assembly LanguageabstractLinking is a low-level task that is usually vaguely specified, if at all, by language definitions. However, the security of web browsers and other extensible systems depends crucially upon a set of checks that must be performed at link time. Building upon the simple, but elegant ideas of Cardelli, and module constructs from high-level languages, we present a formal model of typed object files and a set of inference rules that are sufficient to guarantee that type safety is preserved by the linking process.\n\nWhereas Cardelli's link calculus is built on top of the simply-typed lambda calculus, our object files are based upon typed assembly language so that we may model important low-level implementation issues. Furthermore, unlike Cardelli, we provide support for abstract types and higher-order type constructors - features critical for building extensible systems or modern programming languages such as ML. Neal Glew, J. Gregory Morrisett |
POPL | 1 |
| 1999 | From system F to typed assembly languageabstractWe motivate the design of typed assembly language (TAL) and present a type-preserving ttranslation from Systemn F to TAL. The typed assembly language we pressent is based on a conventional RISC assembly language, but its static type sytem provides support for enforcing high-level language abstratctions, such as closures, tuples, and user-defined abstract data types. The type system ensures that well-typed programs cannot violatet these abstractionsl In addition, the typing constructs admit many low-level compiler optimiztaions. Our translation to TAL is specified as a sequence of type-preserving transformations, including CPS and closure conversion phases; type-correct source programs are mapped to type-correct assembly language. A key contribution is an approach to polymorphic closure conversion that is considerably simpler than previous work. The compiler and typed assembly lanugage provide a fully automatic way to produce certified code, suitable for use in systems where unstrusted and potentially malicious code must be checked for safety before execution. J. Gregory Morrisett, David Walker 0001, Karl Crary, Neal Glew |
ACM Trans. Program. Lang. Syst. | 4 |
| 1998 | From System F to Typed Assembly LanguageabstractWe motivate the design of a statically typed assembly language (TAL) and present a type-preserving translation from System F to TAL. The TAL we present is based on a conventional RISC assembly language, but its static type system provides support for enforcing high-level language abstractions, such as closures, tuples, and objects, as well as user-defined abstract data types. The type system ensures that well-typed programs cannot violate these abstractions. In addition, the typing constructs place almost no restrictions on low-level optimizations such as register allocation, instruction selection, or instruction scheduling.Our translation to TAL is specified as a sequence of type-preserving transformations, including CPS and closure conversion phases; type-correct source programs are mapped to type-correct assembly language. A key contribution is an approach to polymorphic closure conversion that is considerably simpler than previous work. The compiler and typed assembly language provide a fully automatic way to produce proof carrying code, suitable for use in systems where untrusted and potentially malicious code must be checked for safety before execution. J. Gregory Morrisett, David Walker 0001, Karl Crary, Neal Glew |
POPL | 4 |