Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Islands: aliasing protection in object-oriented languages
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
A syntactic approach to type soundness
Information and Computation
Regular types for active objects
Object-oriented software composition
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Types as models: model checking message-passing programs
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Region-based memory management in cyclone
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Language Primitives and Type Discipline for Structured Communication-Based Programming
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
An Interaction-based Language and its Typing System
PARLE '94 Proceedings of the 6th International PARLE Conference on Parallel Architectures and Languages Europe
A generic type system for the Pi-calculus
Theoretical Computer Science
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lightweight object specification with typestates
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Subtyping for session types in the pi calculus
Acta Informatica
Type-based information flow analysis for the π-calculus
Acta Informatica - Special issue: Types in concurrency. Part II , Guest Editor: R. De Nicola, D. Sangiorgi
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
Types for Active Objects with Static Deadlock Prevention
Fundamenta Informaticae
Type checking a multithreaded functional language with session types
Theoretical Computer Science
Typing the Behavior of Software Components using Session Types
Fundamenta Informaticae
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Multiparty asynchronous session types
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLURAL: checking protocol compliance under aliasing
Companion of the 30th international conference on Software engineering
Spatial-behavioral types for concurrency and resource control in distributed systems
Theoretical Computer Science
Haskell session types with (almost) no class
Proceedings of the first ACM SIGPLAN symposium on Haskell
Verifying correct usage of atomic blocks and typestate
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Amalgamating sessions and methods in object-oriented languages with generics
Theoretical Computer Science
Linear type theory for asynchronous session types
Journal of Functional Programming
Structured communication-centred programming for web services
ESOP'07 Proceedings of the 16th European conference on Programming
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
Bounded session types for object oriented languages
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
Multipoint session types for a distributed calculus
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
A distributed object-oriented language with session types
TGC'05 Proceedings of the 1st international conference on Trustworthy global computing
Session types for object-oriented languages
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
State inference for dynamically changing interfaces
Computer Languages
Linear type theory for asynchronous session types
Journal of Functional Programming
Sessions and session types: an overview
WS-FM'09 Proceedings of the 6th international conference on Web services and formal methods
Type-safe eventful sessions in java
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Aliasing control with view-based typestate
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
Safe parallel programming with session Java
COORDINATION'11 Proceedings of the 13th international conference on Coordination models and languages
Proceedings of the 25th European conference on Object-oriented programming
Efficient session type guided distributed interaction
COORDINATION'10 Proceedings of the 12th international conference on Coordination Models and Languages
Science of Computer Programming
The type discipline of behavioral separation
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Hi-index | 0.00 |
Session types allow communication protocols to be specified type-theoretically so that protocol implementations can be verified by static type-checking. We extend previous work on session types for distributed object-oriented languages in three ways. (1) We attach a session type to a class definition, to specify the possible sequences of method calls. (2) We allow a session type (protocol) implementation to be modularized , i.e. partitioned into separately-callable methods. (3) We treat session-typed communication channels as objects, integrating their session types with the session types of classes. The result is an elegant unification of communication channels and their session types, distributed object-oriented programming, and a form of typestates supporting non-uniform objects, i.e. objects that dynamically change the set of available methods. We define syntax, operational semantics, a sound type system, and a correct and complete type checking algorithm for a small distributed class-based object-oriented language. Static typing guarantees that both sequences of messages on channels, and sequences of method calls on objects, conform to type-theoretic specifications, thus ensuring type-safety. The language includes expected features of session types, such as delegation, and expected features of object-oriented programming, such as encapsulation of local state. We also describe a prototype implementation as an extension of Java.