Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
Toward a typed foundation for method specialization and inheritance
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A syntactic approach to type soundness
Information and Computation
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference with constrained types
Theory and Practice of Object Systems - Special issue on foundations of object-oriented languages
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Type-based analysis and applications
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Behavior-consistent specialization of object life cycles
ACM Transactions on Software Engineering and Methodology (TOSEM)
Types and programming languages
Types and programming languages
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Ownership types for object encapsulation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Extending Typestate Checking Using Conditional Liveness Analysis
IEEE Transactions on Software Engineering
A Programmer's Reduction Semantics for Classes and Mixins
Formal Syntax and Semantics of Java
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Capabilities for Sharing: A Generalisation of Uniqueness and Read-Only
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
A type and effect system for atomicity
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
Lightweight confinement for featherweight java
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Connecting effects and uniqueness with adoption
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Crosscutting techniques in program specification and analysis
Proceedings of the 4th international conference on Aspect-oriented software development
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Checking interference with fractional permissions
SAS'03 Proceedings of the 10th international conference on Static analysis
DBPL'05 Proceedings of the 10th international conference on Database Programming Languages
Type-Based amortised heap-space analysis
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Effective typestate verification in the presence of aliasing
ACM Transactions on Software Engineering and Methodology (TOSEM)
Practical API Protocol Checking with Access Permissions
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Efficient type-checking for amortised heap-space analysis
CSL'09/EACSL'09 Proceedings of the 23rd CSL international conference and 18th EACSL Annual conference on Computer science logic
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Hi-index | 0.00 |
Java(X) is a framework for type refinement. It extends Java's type language with annotations drawn from an algebra X and structural subtyping in terms of the annotations. Each instantiation of X yields a different refinement type system with guaranteed soundness. The paper presents some applications, formalizes a core language, states a generic type soundness result, and sketches the extensions required for the full Java language (without generics). The main technical innovation of Java(X) is its concept of activity annotations paired with the notion of droppability. An activity annotation is a capability which can grant exclusive write permission for a field in an object and thus facilitates a typestate change (strong update). Propagation of capabilities is either linear or affine (if they are droppable). Thus, Java(X) can perform protocol checking as well as refinement typing. Aliasing is addressed with a novel splitting relation on types.