11 research outputs found

    Minimal Session Types (Artifact)

    Get PDF
    This artifact contains MISTY, a tool that decomposes message-passing programs with session types into programs typable with the minimal session types we introduce in our ECOOP paper. MISTY incorporates a domain-specific language for message-passing concurrency based on a higher-order process calculus with {session types}. Given a source program in this language, MISTY follows the results in our ECOOP paper to produce LaTeX code for its corresponding decomposition. To demonstrate the tight connection between source and decomposed programs, MISTY also allows users to simulate their corresponding reductions

    Bit-Vector Typestate Analysis

    Get PDF
    Static analyses based on typestates are important in certifying correctness of code contracts. Such analyses rely on Deterministic Finite Automata (DFAs) to specify properties of an object. We target the analysis of contracts in low-latency environments, where many useful contracts are impractical to codify as DFAs and/or the size of their associated DFAs leads to sub-par performance. To address this bottleneck, we present a lightweight compositional typestate analyzer, based on an expressive specification language that can succinctly specify code contracts. By implementing it in the static analyzer Infer, we demonstrate considerable performance and usability benefits when compared to existing techniques. A central insight is to rely on a sub-class of DFAs whose analysis uses efficient bit-vector operations

    Minimal Session Types for the π-calculus

    Get PDF
    Session types enable the static verification of message-passing programs. A session type specifies a channel’s protocol as sequences of messages. Prior work established a minimality result: every process typable with standard session types can be compiled down to a process typable using minimal session types: session types without the sequencing construct. This result justifies session types in terms of themselves; it holds for a higher-order session π-calculus, where values are abstractions (functions from names to processes).This paper establishes a new minimality result but now for the session π-calculus, the language in which values are names and for which session types have been more widely studied. Remarkably, this new minimality result can be obtained by composing known results. We develop optimizations of our new minimality result, and establish its static and dynamic correctness.<br/

    Minimal session types for the €-calculus

    Get PDF
    Session types enable the static verification of message-passing programs. A session type specifies a channel's protocol as sequences of messages. Prior work established a minimality result: every process typable with standard session types can be compiled down to a process typable using minimal session types: session types without the sequencing construct. This result justifies session types in terms of themselves; it holds for a higher-order session €-calculus, where values are abstractions (functions from names to processes). This paper establishes a new minimality result but now for the session €-calculus, the language in which values are names and for which session types have been more widely studied. Remarkably, this new minimality result can be obtained by composing known results. We develop optimizations of our new minimality result, and establish its static and dynamic correctness

    Minimal Session Types (Pearl)

    No full text
    Session types are a type-based approach to the verification of message-passing programs. They have been much studied as type systems for the pi-calculus and for languages such as Java. A session type specifies what and when should be exchanged through a channel. Central to session-typed languages are constructs in types and processes that specify sequencing in protocols. Here we study minimal session types, session types without sequencing. This is arguably the simplest form of session types. By relying on a core process calculus with sessions and higher-order concurrency (abstraction-passing), we prove that every process typable with standard (non minimal) session types can be compiled down into a process typed with minimal session types. This means that having sequencing constructs in both processes and session types is redundant; only sequentiality in processes is indispensable, as it can precisely codify sequentiality in types. Our developments draw inspiration from work by Parrow on behavior-preserving decompositions of untyped processes. By casting Parrow\u27s results in the realm of typed processes, our results reveal a conceptually simple formulation of session types and a principled avenue to the integration of session types into languages without sequencing in types

    Minimal Session Types

    No full text

    Minimal Session Types for the π-calculus

    No full text
    Session types enable the static verification of message-passing programs. A session type specifies a channel’s protocol as sequences of messages. Prior work established a minimality result: every process typable with standard session types can be compiled down to a process typable using minimal session types: session types without the sequencing construct. This result justifies session types in terms of themselves; it holds for a higher-order session π-calculus, where values are abstractions (functions from names to processes). This paper establishes a new minimality result but now for the session π-calculus, the language in which values are names and for which session types have been more widely studied. Remarkably, this new minimality result can be obtained by composing known results. We develop optimizations of our new minimality result, and establish its static and dynamic correctness
    corecore