Actors: a model of concurrent computation in distributed systems
Actors: a model of concurrent computation in distributed systems
Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Theoretical Computer Science
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Geneva convention on the treatment of object aliasing
ACM SIGPLAN OOPS Messenger
Computational interpretations of linear logic
Theoretical Computer Science - Special volume of selected papers of the Sixth Workshop on the Mathematical Foundations of Programming Semantics, Kingston, Ont., Canada, May 1990
A Practical Approach to Programming With Assertions
IEEE Transactions on Software Engineering
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Region-based memory management
Information and Computation
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On-the-fly garbage collection: an exercise in cooperation
Communications of the ACM
Alias burying: unique variables without destructive reads
Software—Practice & Experience - Special issue on aliasing in object-oriented systems
A parameterized type system for race-free Java programs
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Types and programming languages
Types and programming languages
Capability-Based Computer Systems
Capability-Based Computer Systems
Ownership, encapsulation and the disjointness of type and effect
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Alias annotations for program understanding
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Ownership types for object encapsulation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Capabilities for Sharing: A Generalisation of Uniqueness and Read-Only
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
ASWEC '98 Proceedings of the Australian Software Engineering Conference
Scale-free geometry in OO programs
Communications of the ACM - Adaptive complex enterprises
Permission-based ownership: encapsulating state in higher-order typed languages
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Haskell on a shared-memory multiprocessor
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Safe Concurrency for Aggregate Objects with Invariants
SEFM '05 Proceedings of the Third IEEE International Conference on Software Engineering and Formal Methods
A historical perspective on runtime assertion checking in software development
ACM SIGSOFT Software Engineering Notes
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
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
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
IEEE Transactions on Computers
A Fundamental Permission Interpretation for Ownership Types
TASE '08 Proceedings of the 2008 2nd IFIP/IEEE International Symposium on Theoretical Aspects of Software Engineering
Kilim: Isolation-Typed Actors for Java
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
BCPL: a tool for compiler writing and system programming
AFIPS '69 (Spring) Proceedings of the May 14-16, 1969, spring joint computer conference
A new approach to parallelising tracing algorithms
Proceedings of the 2009 international symposium on Memory management
Checking interference with fractional permissions
SAS'03 Proceedings of the 10th international conference on Static analysis
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
First-class relationships in an object-oriented language
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
The runtime structure of object ownership
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Isolation types and multi-core architectures
FoVeOOS'11 Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software
Hi-index | 0.00 |
We survey notions of aliasing and ownership. An extreme but conceptually useful model is that of pure linear languages where each object is constructed once and read, being consumed, once. We see more realistic programming languages as relaxing this to allow multiple references to an object (spatial aliasing) or multiple sequenced operations on a single live reference (temporal aliasing) before the object is deallocated. Concurrency complicates things (concurrent aliasing) because spatial aliasing may only happen under certain scheduling conditions. We argue that this view of aliasing is closely related to that of type tags in low-level implementations of dynamic types. Similarly, we argue that ownership corresponds to a higher-level structured view of the net of objects and references, analogous to higher-level types in programming languages. In the same way that not all high-level data-structure consistency requirements can be captured by existing practical syntactic type forms, not all aliasing requirements can be captured by existing syntactic forms of aliasing control (uniqueness, owners-as-dominators, owners-as-modifiers and static capabilities), each of which is successful in a limited domain. We conclude by arguing for a more holistic approach to the topic of aliasing and ownership.