Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
ESOP'92 Symposium proceedings on 4th European symposium on programming
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
Memory management with explicit regions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Parametric shape analysis via 3-valued logic
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typed memory management in a calculus of capabilities
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Alias burying: unique variables without destructive reads
Software—Practice & Experience - Special issue on aliasing in object-oriented systems
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Guaranteeing Safe Destructive Updates Through a Type System with Uniqueness Information for Graphs
Proceedings of the International Workshop on Graph Transformations in Computer Science
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
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Alias annotations for program understanding
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The code of many colors: relating threads to code and shared state
Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Ownership types for object encapsulation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-safe multithreading in cyclone
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Time regions and effects for resource usage analysis
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Memory safety without runtime checks or garbage collection
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Checking and inferring local non-aliasing
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
A practical flow-sensitive and context-sensitive C and C++ memory leak detector
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
An effective theory of type refinements
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
A generic type system for the Pi-calculus
Theoretical Computer Science
Generalized typestate checking using set interfaces and pluggable analyses
ACM SIGPLAN Notices
A practical type system and language for reference immutability
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Finding and preventing run-time error handling mistakes
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Experience with safe manual memory-management in cyclone
Proceedings of the 4th international symposium on Memory management
Connecting effects and uniqueness with adoption
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Memory safety without garbage collection for embedded applications
ACM Transactions on Embedded Computing Systems (TECS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verifying safety policies with size properties and alias controls
Proceedings of the 27th international conference on Software engineering
Permission-based ownership: encapsulating state in higher-order typed languages
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A step-indexed model of substructural state
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Javari: adding reference immutability to Java
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Protecting representation with effect encapsulation
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Resource usage analysis for a functional language with exceptions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Typestate verification: abstraction techniques and complexity results
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
LOCKSMITH: context-sensitive correlation analysis for race detection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Static detection of leaks in polymorphic containers
Proceedings of the 28th international conference on Software engineering
Effective typestate verification in the presence of aliasing
Proceedings of the 2006 international symposium on Software testing and analysis
Safe manual memory management in cyclone
Science of Computer Programming - Special issue on five perspectives on modern memory management: Systems, hardware and theory
Modular invariants for layered object structures
Science of Computer Programming - Special issue on source code analysis and manipulation (SCAM 2005)
How is aliasing used in systems software?
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Flow-insensitive type qualifiers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Language support for fast and reliable message-based communication in singularity OS
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Type checking a multithreaded functional language with session types
Theoretical Computer Science
Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
Programming asynchronous layers with CLARITY
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Inferring aliasing and encapsulation properties for java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Ownership transfer in universe types
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Exceptional situations and program reliability
ACM Transactions on Programming Languages and Systems (TOPLAS)
Effective typestate verification in the presence of aliasing
ACM Transactions on Software Engineering and Methodology (TOSEM)
A type system with usage aspects
Journal of Functional Programming
L3: A Linear Language with Locations
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2005, Selected Papers
The CLOSER: automating resource management in java
Proceedings of the 7th international symposium on Memory management
Functional translation of a calculus of capabilities
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A Hoare Logic for Call-by-Value Functional Programs
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
A Hybrid Approach for Safe Memory Management in C
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
Types and higher-order recursion schemes for verification of higher-order programs
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Information and Computation
Interprocedural and Flow-Sensitive Type Analysis for Memory and Type Safety of C Code
Journal of Automated Reasoning
Comprehending annotations on object-oriented programs using fractional permissions
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
Identifying task-level parallelism by functional transformation with side-effect domains
Proceedings of the 47th Annual Southeast Regional Conference
An overview of programming language based security
Proceedings of the 47th Annual Southeast Regional Conference
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular session types for distributed object-oriented programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lightweight linear types in system f°
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Linear type theory for asynchronous session types
Journal of Functional Programming
Semantics of fractional permissions with nesting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Checking interference with fractional permissions
SAS'03 Proceedings of the 10th international conference on Static analysis
Typestate verification: abstraction techniques and complexity results
SAS'03 Proceedings of the 10th international conference on Static analysis
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Using Pit to improve security in low-level programs
The Journal of Supercomputing
Lolliproc: to concurrency from classical linear logic via curry-howard and control
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
A modality for safe resource sharing and code reentrancy
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
LOCKSMITH: Practical static race detection for C
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying stateful programs with substructural state and hoare types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
A distributed object-oriented language with session types
TGC'05 Proceedings of the 1st international conference on Trustworthy global computing
Verification of semantic commutativity conditions and inverse operations on linked data structures
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Types, regions, and effects for safe programming with object-oriented parallel frameworks
Proceedings of the 25th European conference on Object-oriented programming
Alternate annotation checkers using fractional permissions
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Proceedings of the 10th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
QVM: An Efficient Runtime for Detecting Defects in Deployed Systems
ACM Transactions on Software Engineering and Methodology (TOSEM)
A type system for borrowing permissions
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generalized typestate checking for data structure consistency
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Resource usage analysis for the π-calculus
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
L3: a linear language with locations
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Safe programming with pointers through stateful views
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
Changing programs correctly: refactoring with specifications
FM'06 Proceedings of the 14th international conference on Formal Methods
On ownership and accessibility
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Session types for object-oriented languages
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Linear regions are all you need
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Superficially substructural types
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
L$^3$: A Linear Language with Locations
Fundamenta Informaticae - Typed Lambda Calculi and Applications 2005, Selected Papers
Practical permissions for race-free parallelism
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Uniqueness and reference immutability for safe parallelism
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Dependent types for JavaScript
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Programming with permissions in Mezzo
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Fissile type analysis: modular checking of almost everywhere invariants
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Æminium: A Permission-Based Concurrent-by-Default Programming Language Approach
ACM Transactions on Programming Languages and Systems (TOPLAS)
Aliasing in Object-Oriented Programming
Alias control for deterministic parallelism
Aliasing in Object-Oriented Programming
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
A type system with linearity is useful for checking software protocols andresource management at compile time. Linearity provides powerful reasoning about state changes, but at the price of restrictions on aliasing. The hard division between linear and nonlinear types forces the programmer to make a trade-off between checking a protocol on an object and aliasing the object. Most onerous is the restriction that any type with a linear component must itself be linear. Because of this, checking a protocol on an object imposes aliasing restrictions on any data structure that directly or indirectly points to the object. We propose a new type system that reduces these restrictions with the adoption and focus constructs. Adoption safely allows a programmer to alias objects on which she is checking protocols, and focus allows the reverse. A programmer can alias data structures that point to linear objects and use focus for safe access to those objects. We discuss how we implemented these ideas in the Vault programming language.