Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
UNIX network programming
A syntactic approach to type soundness
Information and Computation
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
The Definition of Standard ML
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
A Mixed Linear and Non-Linear Logic: Proofs, Terms and Models (Extended Abstract)
CSL '94 Selected Papers from the 8th International Workshop on Computer Science Logic
Types and Subtypes for Client-Server Interactions
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interlanguage migration: from scripts to programs
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Operational semantics for multi-language programs
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design and implementation of typed scheme
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Temporal higher-order contracts
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Logical foundations of secure resource management in protocol implementations
POST'13 Proceedings of the Second international conference on Principles of Security and Trust
Hi-index | 0.00 |
Affine type systems manage resources by preventing some values from being used more than once. This offers expressiveness and performance benefits, but difficulty arises in interacting with components written in a conventional language whose type system provides no way to maintain the affine type system's aliasing invariants. We propose and implement a technique that uses behavioral contracts to mediate between code written in an affine language and code in a conventional typed language. We formalize our approach via a typed calculus with both affine-typed and conventionally-typed modules. We show how to preserve the guarantees of both type systems despite both languages being able to call into each other and exchange higher-order values.