Bratin Saha

dblp:52/6044 · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Concurrent programming
transactional memory
0.562008
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.462008
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.112011
CIRUS: a scalable modular architecture for reusable drivers · DAC 2011
Concurrent programming › transactional memory
nested transactions
0.122006
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.122008
Concurrent GC leveraging transactional memory · PPoPP 2008
Principled Scavenging · PLDI 2001
Program verification
proof-carrying code
0.132005
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.122005
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.112009
Programming model for a heterogeneous x86 platform · PLDI 2009
Parallel and multicore computing
parallel programming models
0.112009
Programming model for a heterogeneous x86 platform · PLDI 2009
Parallel and multicore computing
transactional memory
0.122007
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.112008
Concurrent GC leveraging transactional memory · PPoPP 2008
Programming languages and type systems › concurrent programming languages
language constructs for concurrency
0.112008
Design and implementation of transactional constructs for C/C++ · OOPSLA 2008
Program verification
model checking
0.112008
Model checking transactional memory with spin · PODC 2008
Concurrent programming › transactional memory
hardware transactional memory
0.112007
Transactional programming in a multi-core environment · PPoPP 2007
Runtime systems and virtual machines
language runtime
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Concurrent programming
memory models
0.112007
Enforcing isolation and ordering in STM · PLDI 2007
Processor architecture and microarchitecture
chip multiprocessor
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Parallel and multicore computing
concurrent programming
0.112007
Open nesting in software transactional memory · PPoPP 2007
Parallel and multicore computing
parallel programming runtimes
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Parallel and multicore computing › transactional memory
software transactional memory
0.112007
Open nesting in software transactional memory · PPoPP 2007
Processor architecture and microarchitecture › instruction set architecture
ISA extension
0.112006
Architectural Support for Software Transactional Memory · MICRO 2006
Programming languages and type systems
type theory
0.012003
Intensional analysis of quantified types · ACM Trans. Program. Lang. Syst. 2003
Processor architecture and microarchitecture › multiprocessor architecture
heterogeneous-ISA
0.012009
Programming model for a heterogeneous x86 platform · PLDI 2009
Processor architecture and microarchitecture
instruction set architecture
0.012009
Programming model for a heterogeneous x86 platform · PLDI 2009
Parallel and multicore computing
memory model
0.012009
Programming model for a heterogeneous x86 platform · PLDI 2009
Compilers and program optimization › compiler construction
compiler support for transactional memory
0.012008
Design and implementation of transactional constructs for C/C++ · OOPSLA 2008
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.012006
Compiler and runtime support for efficient software transactional memory · PLDI 2006
Parallel and multicore computing › synchronization
fine-grained locking
0.012006
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.012006
McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006
Parallel and multicore computing
synchronization
0.012006
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
YearPublicationVenuePosition
2011 CIRUS: a scalable modular architecture for reusable drivers
abstract
The 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
DAC1
2009 Terascale chip multiprocessor memory hierarchy and programming model
abstract
Small 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
HiPC9
2009 Model Checking Transactional Memory with Spin
abstract
We 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
ICDCS2
2009 Programming model for a heterogeneous x86 platform
abstract
The 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
PLDI1
2008 Design and implementation of transactional constructs for C/C++
abstract
This 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
OOPSLA12
2008 Model checking transactional memory with spin
abstract
We 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
PODC2
2008 Concurrent GC leveraging transactional memory
abstract
We 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
PPoPP5
2008 Practical weak-atomicity semantics for java stm
abstract
As 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
SPAA6
2008 Irrevocable transactions and their applications
abstract
Transactional 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
SPAA2
2008 Kicking the tires of software transactional memory: why the going gets tough
abstract
Transactional 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
SPAA4
2007 Code Generation and Optimization for Transactional Memory Constructs in an Unmanaged Language
abstract
Transactional 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
CGO4
2007 Enabling scalability and performance in a large scale CMP environment
abstract
Hardware 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
EuroSys1
2007 Enforcing isolation and ordering in STM
abstract
Transactional 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
PLDI8
2007 Transactional programming in a multi-core environment
abstract
With 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
PPoPP3
2007 Open nesting in software transactional memory
abstract
Transactional 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
PPoPP7
2006 Software transactional memory
Bratin Saha
Hot Chips Symposium1
2006 McRT-Malloc: a scalable transactional memory allocator
abstract
Emerging 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
ISMM2
2006 Architectural Support for Software Transactional Memory
abstract
Transactional 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
MICRO1
2006 Compiler and runtime support for efficient software transactional memory
abstract
Programmers 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
PLDI5
2006 McRT-STM: a high performance software transactional memory system for a multi-core runtime
abstract
Applications 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
PPoPP1
2005 A type system for certified binaries
abstract
A 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 types
abstract
Compilers 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 binaries
abstract
A 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
POPL2
2001 Principled Scavenging
abstract
Proof-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
PLDI2
2000 Fully reflexive intensional type analysis
abstract
Compilers 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
ICFP2