VLDB 2026 Research / reviewers in the wild / expert
Bratin Saha
dblp:52/6044
· DBLP profile ↗
25ranked-venue papers
7as first author
0since 2021 · last 2011
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 15 · 5 first-authorSoftware engineering, systems software and programming languages · 11 · 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
13 papers |
Concurrent programming · 52% Runtime systems and virtual machines · 16% Programming languages and type systems · 14% | |
| Computer architecture, parallel and distributed computing, and storage systems
6 papers |
Parallel and multicore computing · 54% Processor architecture and microarchitecture · 22% Embedded and real-time systems · 14% |
Topics — the 30 heaviest of 39, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Concurrent programming
transactional memory |
0.5 | 6 | 2008 | Concurrent GC leveraging transactional memory · PPoPP 2008 Model checking transactional memory with spin · PODC 2008 Design and implementation of transactional constructs for C/C++ · OOPSLA 2008 |
Concurrent programming › transactional memory
software transactional memory |
0.4 | 6 | 2008 | Design and implementation of transactional constructs for C/C++ · OOPSLA 2008 Transactional programming in a multi-core environment · PPoPP 2007 Enforcing isolation and ordering in STM · PLDI 2007 |
Operating systems › i/o › i/o subsystem
device drivers |
0.1 | 1 | 2011 | CIRUS: a scalable modular architecture for reusable drivers · DAC 2011 |
Concurrent programming › transactional memory
nested transactions |
0.1 | 2 | 2006 | McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006 Compiler and runtime support for efficient software transactional memory · PLDI 2006 |
Runtime systems and virtual machines
garbage collection |
0.1 | 2 | 2008 | Concurrent GC leveraging transactional memory · PPoPP 2008 Principled Scavenging · PLDI 2001 |
Program verification
proof-carrying code |
0.1 | 3 | 2005 | A type system for certified binaries · ACM Trans. Program. Lang. Syst. 2005 A type system for certified binaries · POPL 2002 Principled Scavenging · PLDI 2001 |
Programming languages and type systems › language implementation
typed intermediate language |
0.1 | 2 | 2005 | A type system for certified binaries · ACM Trans. Program. Lang. Syst. 2005 Intensional analysis of quantified types · ACM Trans. Program. Lang. Syst. 2003 |
GPUs and heterogeneous computing
heterogeneous programming models |
0.1 | 1 | 2009 | Programming model for a heterogeneous x86 platform · PLDI 2009 |
Parallel and multicore computing
parallel programming models |
0.1 | 1 | 2009 | Programming model for a heterogeneous x86 platform · PLDI 2009 |
Parallel and multicore computing
transactional memory |
0.1 | 2 | 2007 | Architectural Support for Software Transactional Memory · MICRO 2006 Open nesting in software transactional memory · PPoPP 2007 |
Runtime systems and virtual machines › garbage collection
concurrent garbage collection |
0.1 | 1 | 2008 | Concurrent GC leveraging transactional memory · PPoPP 2008 |
Programming languages and type systems › concurrent programming languages
language constructs for concurrency |
0.1 | 1 | 2008 | Design and implementation of transactional constructs for C/C++ · OOPSLA 2008 |
Program verification
model checking |
0.1 | 1 | 2008 | Model checking transactional memory with spin · PODC 2008 |
Concurrent programming › transactional memory
hardware transactional memory |
0.1 | 1 | 2007 | Transactional programming in a multi-core environment · PPoPP 2007 |
Runtime systems and virtual machines
language runtime |
0.1 | 1 | 2007 | Enabling scalability and performance in a large scale CMP environment · EuroSys 2007 |
Concurrent programming
memory models |
0.1 | 1 | 2007 | Enforcing isolation and ordering in STM · PLDI 2007 |
Processor architecture and microarchitecture
chip multiprocessor |
0.1 | 1 | 2007 | Enabling scalability and performance in a large scale CMP environment · EuroSys 2007 |
Parallel and multicore computing
concurrent programming |
0.1 | 1 | 2007 | Open nesting in software transactional memory · PPoPP 2007 |
Parallel and multicore computing
parallel programming runtimes |
0.1 | 1 | 2007 | Enabling scalability and performance in a large scale CMP environment · EuroSys 2007 |
Parallel and multicore computing › transactional memory
software transactional memory |
0.1 | 1 | 2007 | Open nesting in software transactional memory · PPoPP 2007 |
Processor architecture and microarchitecture › instruction set architecture
ISA extension |
0.1 | 1 | 2006 | Architectural Support for Software Transactional Memory · MICRO 2006 |
Programming languages and type systems
type theory |
0.0 | 1 | 2003 | Intensional analysis of quantified types · ACM Trans. Program. Lang. Syst. 2003 |
Processor architecture and microarchitecture › multiprocessor architecture
heterogeneous-ISA |
0.0 | 1 | 2009 | Programming model for a heterogeneous x86 platform · PLDI 2009 |
Processor architecture and microarchitecture
instruction set architecture |
0.0 | 1 | 2009 | Programming model for a heterogeneous x86 platform · PLDI 2009 |
Parallel and multicore computing
memory model |
0.0 | 1 | 2009 | Programming model for a heterogeneous x86 platform · PLDI 2009 |
Compilers and program optimization › compiler construction
compiler support for transactional memory |
0.0 | 1 | 2008 | Design and implementation of transactional constructs for C/C++ · OOPSLA 2008 |
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.0 | 1 | 2006 | Compiler and runtime support for efficient software transactional memory · PLDI 2006 |
Parallel and multicore computing › synchronization
fine-grained locking |
0.0 | 1 | 2006 | McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006 |
Parallel and multicore computing › synchronization
lock-based synchronization |
0.0 | 1 | 2006 | McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006 |
Parallel and multicore computing
synchronization |
0.0 | 1 | 2006 | Architectural Support for Software Transactional Memory · MICRO 2006 |
Methods — techniques the papers use, named apart from their topics
layered modular architecture · 0.2experimental evaluation · 0.1undo logging · 0.1optimistic concurrency · 0.1conflict detection · 0.1simulator-based evaluation · 0.1transactional memory · 0.1spin model checker · 0.1parameterized model · 0.1garbage collection · 0.1compiler optimization · 0.1write buffering · 0.1simulation · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2011 | CIRUS: a scalable modular architecture for reusable driversabstractThe system on a chip (SoC) market segment is driven by rapid TTM (time to market), OS scalability, and efficiency. This requires the SW stack to be designed with TTM, scalability and efficiency as first order design constraints. In this paper we propose a layered modular architecture for SoC drivers to enable aggressive driver code reuse between OSes and platforms. This cuts SW development, validation, integration, and maintenance effort. We then discuss the implementation of such an architecture in a media driver that is highly reusable across SoCs in different market segments and operating systems. Bratin Saha |
DAC | 1 |
| 2009 | Terascale chip multiprocessor memory hierarchy and programming modelabstractSmall scale chip multiprocessors are being shipped in volume by all microprocessor vendors. Many of these vendors are also investigating large scale chip multiprocessors targeted towards highly parallel workloads in media, graphics, and others. One of the most challenging aspects of architecting terascale processors is the design of a scalable memory hierarchy. Current proposals for providing coherent shared memory in terascale systems require a sophisticated coherence protocol and memory hierarchy. In this paper we propose an alternate memory configuration along with a programming model that significantly simplifies the terascale memory hierarchy. Our proposal still provides fully coherent shared memory but eliminates the hardware coherence protocol. Our programming model enables the programmer to better express the memory characteristic of terascale workloads. Finally, our proposed memory hierarchy performs better and is more scalable than conventional designs. Shoumeng Yan, Xiaocheng Zhou, Sai Luo, Peinan Zhang, Naveen Cherukuri, Ronny Ronen, Bratin Saha |
HiPC | 9 |
| 2009 | Model Checking Transactional Memory with SpinabstractWe used the Spin model checker to show that Intel's implementation of software transactional memory is correct. Transactional memory makes it possible to write properly-synchronized multi-threaded programs without the explicit use of locks. We describe our model of Intel's implementation, our experience with Spin, what we have shown, and what obstacles remain to showing more. John W. O'Leary, Bratin Saha, Mark R. Tuttle |
ICDCS | 2 |
| 2009 | Programming model for a heterogeneous x86 platformabstractThe client computing platform is moving towards a heterogeneous architecture consisting of a combination of cores focused on scalar performance, and a set of throughput-oriented cores. The throughput oriented cores (e.g. a GPU) may be connected over both coherent and non-coherent interconnects, and have different ISAs. This paper describes a programming model for such heterogeneous platforms. We discuss the language constructs, runtime implementation, and the memory model for such a programming environment. We implemented this programming environment in a x86 heterogeneous platform simulator. We ported a number of workloads to our programming environment, and present the performance of our programming environment on these workloads. Bratin Saha, Xiaocheng Zhou, Shoumeng Yan, Mohan Rajagopalan, Jesse Fang, Peinan Zhang, Ronny Ronen, Avi Mendelson |
PLDI | 1 |
| 2008 | Design and implementation of transactional constructs for C/C++abstractThis paper presents a software transactional memory system that introduces first-class C++ language constructs for transactional programming. We describe new C++ language extensions, a production-quality optimizing C++ compiler that translates and optimizes these extensions, and a high-performance STM runtime library. The transactional language constructs support C++ language features including classes, inheritance, virtual functions, exception handling, and templates. The compiler automatically instruments the program for transactional execution and optimizes TM overheads. The runtime library implements multiple execution modes and implements a novel STM algorithm that supports both optimistic and pessimistic concurrency control. The runtime switches a transaction's execution mode dynamically to improve performance and to handle calls to precompiled functions and I/O libraries. We present experimental results on 8 cores (two quad-core CPUs) running a set of 20 non-trivial parallel programs. Our measurements show that our system scales well as the numbers of cores increases and that our compiler and runtime optimizations improve scalability. Adam Welc, Ali-Reza Adl-Tabatabai, Moshe Bach, Sion Berkowits, James Cownie, Robert Geva, Sergey Kozhukow, Ravi Narayanaswamy, Jeffrey Olivier, Serguei Preis, Bratin Saha, Ady Tal, Xinmin Tian |
OOPSLA | 12 |
| 2008 | Model checking transactional memory with spinabstractWe used the Spin model checker to show that Intel's implementation of software transactional memory is correct, and built a preprocessor to accelerate the performance of Spin on parameterized models of shared-memory protocols. John W. O'Leary, Bratin Saha, Mark R. Tuttle |
PODC | 2 |
| 2008 | Concurrent GC leveraging transactional memoryabstractWe predict that the ever-growing number of cores on our desktops will require a re-examination of concurrent programming. Two technologies are likely to become mainstream in response: Transactional memory provides a superior programming model to traditional lock-based concurrency, while Concurrent GC can take advantage of multiple cores to eliminate perceptible pauses in desktop applications such as games or Internet telephony. This paper proposes a combination of the two technologies, producing a synergy that improves scalability while eliminating the annoyance of user-perceivable pauses. Phil McGachey, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Vijay Menon 0002, Bratin Saha, Tatiana Shpeisman |
PPoPP | 5 |
| 2008 | Practical weak-atomicity semantics for java stmabstractAs memory transactions have been proposed as a language-level replacement for locks, there is growing need for well-defined semantics. In contrast to database transactions, transaction memory (TM) semantics are complicated by the fact that programs may access the same memory locations both inside and outside transactions. Strongly atomic semantics, where non transactional accesses are treated as implicit single-operation transactions, remain difficult to provide without specialized hardware support or significant performance overhead. As an alternative, many in the community have informally proposed that a single global lock semantics [18,10], where transaction semantics are mapped to those of regions protected by a single global lock, provide an intuitive and efficiently implementable model for programmers. Vijay Menon 0002, Steven Balensiefer, Tatiana Shpeisman, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Bratin Saha, Adam Welc |
SPAA | 6 |
| 2008 | Irrevocable transactions and their applicationsabstractTransactional memory (TM) provides a safer, more modular, and more scalable alternative to traditional lock-based synchronization. Implementing high performance TM systems has recently been an active area of research. However, current TM systems provide limited, if any, support for transactions executing irrevocable actions, such as I/O and system calls, whose side effects cannot in general be rolled back. This severely limits the ability of these systems to run commercial workloads. Adam Welc, Bratin Saha, Ali-Reza Adl-Tabatabai |
SPAA | 2 |
| 2008 | Kicking the tires of software transactional memory: why the going gets toughabstractTransactional Memory (TM) promises to simplify concurrent programming, which has been notoriously difficult but crucial in realizing the performance benefit of multi-core processors. Software Transaction Memory (STM), in particular, represents a body of important TM technologies since it provides a mechanism to run transactional programs when hardware TM support is not available, or when hardware TM resources are exhausted. Nonetheless, most previous researches on STMs were constrained to executing trivial, small-scale workloads. The assumption was that the same techniques applied to small-scale workloads could readily be applied to real-life, large-scale workloads. However, by executing several nontrivial workloads such as particle dynamics simulation and game physics engine on a state of the art STM, we noticed that this assumption does not hold. Specifically, we identified four major performance bottlenecks that were unique to the case of executing large-scale workloads on an STM: false conflicts, over-instrumentation, privatization-safety cost, and poor amortization. We believe that these bottlenecks would be common for any STM targeting real-world applications. In this paper, we describe those identified bottlenecks in detail, and we propose novel solutions to alleviate the issues. We also thoroughly validate these approaches with experimental results on real machines. Richard M. Yoo, Adam Welc, Bratin Saha, Ali-Reza Adl-Tabatabai, Hsien-Hsin S. Lee |
SPAA | 4 |
| 2007 | Code Generation and Optimization for Transactional Memory Constructs in an Unmanaged LanguageabstractTransactional memory offers significant advantages for concurrency control compared to locks. This paper presents the design and implementation of transactional memory constructs in an unmanaged language. Unmanaged languages pose a unique set of challenges to transactional memory constructs - for example, lack of type and memory safety, use of function pointers, aliasing of local variables, and others. This paper describes novel compiler and runtime mechanisms that address these challenges and optimize the performance of transactions in an unmanaged environment. We have implemented these mechanisms in a production-quality C compiler and a high-performance software transactional memory runtime. We measure the effectiveness of these optimizations and compare the performance of lock-based versus transaction-based programming on a set of concurrent data structures and the SPLASH-2 benchmark suite. On a 16 processor SMP system, the transaction-based version of the SPLASH-2 benchmarks scales much better than the coarse-grain locking version and performs comparably to the fine-grain locking version. Compiler optimizations significantly reduce the overheads of transactional memory so that, on a single thread, the transaction-based version incurs only about 6.4% overhead compared to the lock-based version for the SPLASH-2 benchmark suite. Thus, our system is the first to demonstrate that transactions integrate well with an unmanaged language, and can perform as well as fine-grain locking while providing the programming ease of coarse-grain locking even on an unmanaged environment Cheng Wang 0013, Wei-Yu Chen, Youfeng Wu, Bratin Saha, Ali-Reza Adl-Tabatabai |
CGO | 4 |
| 2007 | Enabling scalability and performance in a large scale CMP environmentabstractHardware trends suggest that large-scale CMP architectures, with tens to hundreds of processing cores on a single piece of silicon, are iminent within the next decade. While existing CMP machines have traditionally been handled in the same way as SMPs, this magnitude of parallelism introduces several fundamental challenges at the architectural level and this, in turn, translates to novel challenges in the design of the software stack for these platforms. This paper presents the "Many Core Run Time" (McRT), a software prototype of an integrated language runtime that was designed to explore configurations of the software stack for enabling performance and scalability on large scale CMP platforms. This paper presents the architecture of McRT and discusses our experiences with the system, including experimental evaluation that lead to several interesting, non-intuitive findings, providing key insights about the structure of the system stack at this scale. A key contribution of this paper is to demonstrate how McRT enables near linear improvements in performance and scalability for desktop workloads such as the popular XviD encoder and a set of RMS (recognition, mining, and synthesis) applications. Another key contribution of this work is its use of McRT to explore non-traditional system configurations such as a light-weight executive in which McRT runs on "bare metal" and replaces the traditional OS. Such configurations are becoming an increasingly attractive alternative to leverage heterogeneous computing uints as seen in today's CPU-GPU configurations. Bratin Saha, Ali-Reza Adl-Tabatabai, Anwar M. Ghuloum, Mohan Rajagopalan, Richard L. Hudson, Leaf Petersen, Vijay Menon 0002, Brian R. Murphy, Tatiana Shpeisman, Eric Sprangle, Anwar Rohillah, Doug Carmean, Jesse Fang |
EuroSys | 1 |
| 2007 | Enforcing isolation and ordering in STMabstractTransactional memory provides a new concurrency control mechanism that avoids many of the pitfalls of lock-based synchronization. High-performance software transactional memory (STM) implementations thus far provide weak atomicity: Accessing shared data both inside and outside a transaction can result in unexpected, implementation-dependent behavior. To guarantee isolation and consistent ordering in such a system, programmers are expected to enclose all shared-memory accesses inside transactions. Tatiana Shpeisman, Vijay Menon 0002, Ali-Reza Adl-Tabatabai, Steven Balensiefer, Dan Grossman, Richard L. Hudson, Katherine F. Moore, Bratin Saha |
PLDI | 8 |
| 2007 | Transactional programming in a multi-core environmentabstractWith single thread performance starting to plateau, HW architects have turned to chip level multiprocessing (CMP) to increase processing power. All major microprocessor companies are aggressively shipping multi-core products in the mainstream computing market. Moore's law will largely be used to increase HW thread-level parallelism through higher core counts in a CMP environment. CMPs bring new challenges into the design of the software system stack.In this tutorial, we talk about the shift to multi-core processors and the programming implications. In particular, we focus on transactional programming. Transactions have emerged as a promising alternative to lock-based synchronization that eliminates many of the problems associated with lock-based synchronization. We discuss the design of both hardware and software transactional memory and quantify the tradeoffs between the different design points. We show how to extend the Java and C languages with transactional constructs, and how to integrate transactions with compiler optimizations and the language runtime (e.g., memory manager and garbage collection). Ali-Reza Adl-Tabatabai, Christoforos E. Kozyrakis, Bratin Saha |
PPoPP | 3 |
| 2007 | Open nesting in software transactional memoryabstractTransactional memory (TM) promises to simplify concurrent programming while providing scalability competitive to fine-grained locking. Language-based constructs allow programmers to denote atomic regions declaratively and to rely on the underlying system to provide transactional guarantees along with concurrency. In contrast with fine-grained locking, TM allows programmers to write simpler programs that are composable and deadlock-free. Vijay Menon 0002, Ali-Reza Adl-Tabatabai, Antony L. Hosking, Richard L. Hudson, J. Eliot B. Moss, Bratin Saha, Tatiana Shpeisman |
PPoPP | 7 |
| 2006 | Software transactional memory
Bratin Saha |
Hot Chips Symposium | 1 |
| 2006 | McRT-Malloc: a scalable transactional memory allocatorabstractEmerging multi-core processors promise to provide an exponentially increasing number of hardware threads with every generation. Applications will need to be highly concurrent to fullyuse the power of these processors. To enable maximum concurrency, libraries (such as malloc-free packages) would therefore need to use non-blocking algorithms. But lock-free algorithms are notoriously difficult to reason about and inappropriate for average programmers. Transactional memory promises to significantly ease concurrent programming for the average programmer. This paper describes a highly efficient non-blocking malloc/free algorithm that supports memory allocation and deallocation inside transactional code blocks. Thus this paper describes a memory allocator that is suitable for emerging multi-core applications, while supporting modern concurrency constructs.This paper makes several novel contributions. It is the first to integrate a software transactional memory system with a malloc/free based memory allocator. We present the first algorithm which ensures that space allocated in an aborted transaction is properly freed and does not lead to a space blowup. Unlike previous lock-free malloc packages, our algorithm avoids atomic operations on typical code paths, making our algorithm substantially more efficient. Richard L. Hudson, Bratin Saha, Ali-Reza Adl-Tabatabai, Ben Hertzberg |
ISMM | 2 |
| 2006 | Architectural Support for Software Transactional MemoryabstractTransactional memory provides a concurrency control mechanism that avoids many of the pitfalls of lock-based synchronization. Researchers have proposed several different implementations of transactional memory, broadly classified into software transactional memory (STM) and hardware transactional memory (HTM). Both approaches have their pros and cons: STMs provide rich and flexible transactional semantics on stock processors but incur significant overheads. HTMs, on the other hand, provide high performance but implement restricted semantics or add significant hardware complexity. This paper is the first to propose architectural support for accelerating transactions executed entirely in software. We propose instruction set architecture (ISA) extensions and novel hardware mechanisms that improve STM performance. We adapt a high-performance STM algorithm supporting rich transactional semantics to our ISA extensions (called hardware accelerated software transactional memory or HASTM). HASTM accelerates fully virtualized nested transactions, supports language integration, and provides both object-based and cache-line based conflict detection. We have implemented HASTM in an accurate multi-core IA32 simulator. Our simulation results show that (1) HASTM single-thread performance is comparable to a conventional HTM implementation; (2) HASTM scaling is comparable to a STM implementation; and (3) HASTM is resilient to spurious aborts and can scale better than HTM in a multi-core setting. Thus, HASTM provides the flexibility and rich semantics of STM, while giving the performance of HTM Bratin Saha, Ali-Reza Adl-Tabatabai, Quinn Jacobson |
MICRO | 1 |
| 2006 | Compiler and runtime support for efficient software transactional memoryabstractProgrammers have traditionally used locks to synchronize concurrent access to shared data. Lock-based synchronization, however, has well-known pitfalls: using locks for fine-grain synchronization and composing code that already uses locks are both difficult and prone to deadlock. Transactional memory provides an alternate concurrency control mechanism that avoids these pitfalls and significantly eases concurrent programming. Transactional memory language constructs have recently been proposed as extensions to existing languages or included in new concurrent language specifications, opening the door for new compiler optimizations that target the overheads of transactional memory.This paper presents compiler and runtime optimizations for transactional memory language constructs. We present a high-performance software transactional memory system (STM) integrated into a managed runtime environment. Our system efficiently implements nested transactions that support both composition of transactions and partial roll back. Our JIT compiler is the first to optimize the overheads of STM, and we show novel techniques for enabling JIT optimizations on STM operations. We measure the performance of our optimizations on a 16-way SMP running multi-threaded transactional workloads. Our results show that these techniques enable transactional memory's performance to compete with that of well-tuned synchronization. Ali-Reza Adl-Tabatabai, Brian T. Lewis, Vijay Menon 0002, Brian R. Murphy, Bratin Saha, Tatiana Shpeisman |
PLDI | 5 |
| 2006 | McRT-STM: a high performance software transactional memory system for a multi-core runtimeabstractApplications need to become more concurrent to take advantage of the increased computational power provided by chip level multiprocessing. Programmers have traditionally managed this concurrency using locks (mutex based synchronization). Unfortunately, lock based synchronization often leads to deadlocks, makes fine-grained synchronization difficult, hinders composition of atomic primitives, and provides no support for error recovery. Transactions avoid many of these problems, and therefore, promise to ease concurrent programming.We describe a software transactional memory (STM) system that is part of McRT, an experimental Multi-Core RunTime. The McRT-STM implementation uses a number of novel algorithms, and supports advanced features such as nested transactions with partial aborts, conditional signaling within a transaction, and object based conflict detection for C/C++ applications. The McRT-STM exports interfaces that can be used from C/C++ programs directly or as a target for compilers translating higher level linguistic constructs.We present a detailed performance analysis of various STM design tradeoffs such as pessimistic versus optimistic concurrency, undo logging versus write buffering, and cache line based versus object based conflict detection. We also show a MCAS implementation that works on arbitrary values, coexists with the STM, and can be used as a more efficient form of transactional memory. To provide a baseline we compare the performance of the STM with that of fine-grained and coarse-grained locking using a number of concurrent data structures on a 16-processor SMP system. We also show our STM performance on a non-synthetic workload -- the Linux sendmail application. Bratin Saha, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Chi Cao Minh, Ben Hertzberg |
PPoPP | 1 |
| 2005 | A type system for certified binariesabstractA certified binary is a value together with a proof that the value satisfies a given specification. Existing compilers that generate certified code have focused on simple memory and control-flow safety rather than more advanced properties. In this article, we present a general framework for explicitly representing complex propositions and proofs in typed intermediate and assembly languages. The new framework allows us to reason about certified programs that involve effects while still maintaining decidable typechecking. We show how to integrate an entire proof system (the calculus of inductive constructions) into a compiler intermediate language and how the intermediate language can undergo complex transformations (CPS and closure conversion) while preserving proofs represented in the type system. Our work provides a foundation for the process of automatically generating certified binaries in a type-theoretic framework. Zhong Shao 0001, Valery Trifonov, Bratin Saha, Nikolaos S. Papaspyrou |
ACM Trans. Program. Lang. Syst. | 3 |
| 2003 | Intensional analysis of quantified typesabstractCompilers for polymorphic languages can use run-time type inspection to support advanced implementation techniques such as tagless garbage collection, polymorphic marshalling, and flattened data structures. Intensional type analysis is a type-theoretic framework for expressing and certifying such type-analyzing computations. Unfortunately, existing approaches to intensional analysis do not work well on quantified types such as existential or polymorphic types. This makes it impossible to code (in a type-safe language) applications such as garbage collection, persistency, or marshalling which must be able to examine the type of any run-time value. We present a typed intermediate language that supports the analysis of quantified types. In particular, we provide both type-level and term-level constructs for analyzing quantified types. Our system supports structural induction on quantified types yet type-checking remains decidable. We also show that our system is compatible with a type-erasure semantics. Bratin Saha, Valery Trifonov, Zhong Shao 0001 |
ACM Trans. Program. Lang. Syst. | 1 |
| 2002 | A type system for certified binariesabstractA certified binary is a value together with a proof that the value satisfies a given specification. Existing compilers that generate certified code have focused on simple memory and control-flow safety rather than more advanced properties. In this paper, we present a general framework for explicitly representing complex propositions and proofs in typed intermediate and assembly languages. The new framework Zhong Shao 0001, Bratin Saha, Valery Trifonov, Nikolaos S. Papaspyrou |
POPL | 2 |
| 2001 | Principled ScavengingabstractProof-carrying code and typed assembly languages aim to minimize the trusted computing base by directly certifying the actual machine code. Unfortunately, these systems cannot get rid of the dependency on a trusted garbage collector. Indeed, constructing a provably type-safe garbage collector is one of the major open problems in the area of certifying compilation. Stefan Monnier, Bratin Saha, Zhong Shao 0001 |
PLDI | 2 |
| 2000 | Fully reflexive intensional type analysisabstractCompilers for polymorphic languages can use runtime type inspection to support advanced implementation techniques such as tagless garbage collection, polymorphic marshalling, and flattened data structures. Intensional type analysis is a type-theoretic framework for expressing and certifying such type-analyzing computations. Unfortunately, existing approaches to intensional analysis do not work well on types with universal, existential, or fixpoint quantifiers. This makes it impossible to code applications such as garbage collection, persistence, or marshalling which must be able to examine the type of any runtime value. We present a typed intermediate language that supports fully reflexive intensional type analysis. By fully reflexive, we mean that type-analyzing operations are applicable to the type of any runtime value in the language. In particular, we provide both type-level and term-level constructs for analyzing quantified types. Our system supports structural induction on quant... Valery Trifonov, Bratin Saha, Zhong Shao 0001 |
ICFP | 2 |