745 research outputs found
Typing Copyless Message Passing
We present a calculus that models a form of process interaction based on
copyless message passing, in the style of Singularity OS. The calculus is
equipped with a type system ensuring that well-typed processes are free from
memory faults, memory leaks, and communication errors. The type system is
essentially linear, but we show that linearity alone is inadequate, because it
leaves room for scenarios where well-typed processes leak significant amounts
of memory. We address these problems basing the type system upon an original
variant of session types.Comment: 50 page
Context-aware Trace Contracts
The behavior of concurrent, asynchronous procedures depends in general on the
call context, because of the global protocol that governs scheduling. This
context cannot be specified with the state-based Hoare-style contracts common
in deductive verification. Recent work generalized state-based to trace
contracts, which permit to specify the internal behavior of a procedure, such
as calls or state changes, but not its call context. In this article we propose
a program logic of context-aware trace contracts for specifying global behavior
of asynchronous programs. We also provide a sound proof system that addresses
two challenges: To observe the program state not merely at the end points of a
procedure, we introduce the novel concept of an observation quantifier. And to
combat combinatorial explosion of possible call sequences of procedures, we
transfer Liskov's principle of behavioral subtyping to the analysis of
asynchronous procedures
Relating Session Types and Behavioural Contracts: The Asynchronous Case
We discuss the relationship between session types and behavioural contracts under the assumption that processes communicate asynchronously. We show the existence of a fully abstract interpretation of session types into a fragment of contracts, that maps session subtyping into binary compliance-preserving contract refinement. In this way, the recent undecidability result for asynchronous session subtyping can be used to obtain an original undecidability result for asynchronous contract refinement
Semantic Component Composition
Building complex software systems necessitates the use of component-based
architectures. In theory, of the set of components needed for a design, only
some small portion of them are "custom"; the rest are reused or refactored
existing pieces of software. Unfortunately, this is an idealized situation.
Just because two components should work together does not mean that they will
work together.
The "glue" that holds components together is not just technology. The
contracts that bind complex systems together implicitly define more than their
explicit type. These "conceptual contracts" describe essential aspects of
extra-system semantics: e.g., object models, type systems, data representation,
interface action semantics, legal and contractual obligations, and more.
Designers and developers spend inordinate amounts of time technologically
duct-taping systems to fulfill these conceptual contracts because system-wide
semantics have not been rigorously characterized or codified. This paper
describes a formal characterization of the problem and discusses an initial
implementation of the resulting theoretical system.Comment: 9 pages, submitted to GCSE/SAIG '0
- …