Implementation of the typed call-by-value λ-calculus using a stack of regions
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient detection of all pointer and array access errors
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Better static memory management: improving region-based analysis of higher-order languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
The implementation of the Cilk-5 multithreaded language
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Weak ordering—a new definition
ISCA '90 Proceedings of the 17th annual international symposium on Computer Architecture
Memory consistency and event ordering in scalable shared-memory multiprocessors
ISCA '90 Proceedings of the 17th annual international symposium on Computer Architecture
A New Approach to Proving the Correctness of Multiprocess Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
On regions and linear types (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Ownership types for safe programming: preventing data races and deadlocks
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-safe multithreading in cyclone
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
A direct approach to control-flow sensitive region-based memory management
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
The nesC language: A holistic approach to networked embedded systems
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Ownership types for safe region-based memory management in real-time Java
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Scoped Types for Real-Time Java
RTSS '04 Proceedings of the 25th IEEE International Real-Time Systems Symposium
Threads cannot be implemented as a library
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
CCured: type-safe retrofitting of legacy software
ACM Transactions on Programming Languages and Systems (TOPLAS)
LOCKSMITH: context-sensitive correlation analysis for race detection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Safe manual memory management in cyclone
Science of Computer Programming - Special issue on five perspectives on modern memory management: Systems, hardware and theory
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
SharC: checking data sharing strategies for multithreaded c
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Implicit ownership types for memory management
Science of Computer Programming
Lightweight annotations for controlling sharing in concurrent data structures
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Checking interference with fractional permissions
SAS'03 Proceedings of the 10th international conference on Static analysis
Dependent types for low-level programming
ESOP'07 Proceedings of the 16th European conference on Programming
Oracle semantics for concurrent separation logic
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Linear regions are all you need
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
A type and effect system for deadlock avoidance in low-level languages
Proceedings of the 7th ACM SIGPLAN workshop on Types in language design and implementation
Flow sensitive-insensitive pointer analysis based memory safety for multithreaded programs
ICCSA'11 Proceedings of the 2011 international conference on Computational science and Its applications - Volume Part V
DRASync: distributed region-based memory allocation and synchronization
Proceedings of the 20th European MPI Users' Group Meeting
Static safety guarantees for a low-level multithreaded language with regions
Science of Computer Programming
Hi-index | 0.00 |
We present the design of a formal low-level multi-threaded language with advanced region-based memory management and synchronization primitives, where well-typed programs are memory safe and race free. In our language, regions and locks are combined in a single hierarchy and are subject to uniform ownership constraints imposed by a hierarchical structure: deallocating a region causes its sub-regions to be deallocated. Similarly, when a region is protected, then its sub-regions are also protected. We discuss aspects of the integration and implementation of the formal language within Cyclone and evaluate the performance of code produced by the modified Cyclone compiler against highly optimized C programs using atomic operations, pthreads, and OpenMP. Although our implementation is still in a preliminary stage, our results show that the performance overhead for guaranteed race freedom and memory safety is acceptable.