The Turing programming language: design and definition
The Turing programming language: design and definition
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
An efficient and general implementation of futures on large scale shared-memory multiprocessors
An efficient and general implementation of futures on large scale shared-memory multiprocessors
A Practical Approach to Programming With Assertions
IEEE Transactions on Software Engineering
Concurrent programming in ML
On the criteria to be used in decomposing systems into modules
Communications of the ACM
JML (poster session): notations and tools supporting detailed design in Java
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
Object-Oriented Software Construction
Object-Oriented Software Construction
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Implementation of multilisp: Lisp on a multiprocessor
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
Contracts: From Analysis to C++ Implementation
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Monitoring Java Programs with Java PathExplorer
Monitoring Java Programs with Java PathExplorer
jContractor: A Reflective Java Library to Support Design by Contract
jContractor: A Reflective Java Library to Support Design by Contract
Adding Contracts to Java with Handshake
Adding Contracts to Java with Handshake
DrScheme: a programming environment for Scheme
Journal of Functional Programming
The semantics of future and an application
Journal of Functional Programming
Java-MaC: A Run-Time Assurance Approach for Java Programs
Formal Methods in System Design
Mop: an efficient and generic runtime verification framework
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Making trace monitors feasible
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
An Overview of Anna, a Specification Language for Ada
IEEE Software
The temporal logic of programs
SFCS '77 Proceedings of the 18th Annual Symposium on Foundations of Computer Science
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Runtime checking for program verification
RV'07 Proceedings of the 7th international conference on Runtime verification
Contracts as pairs of projections
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
The interaction of contracts and laziness
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Contracts and specifications for functional logic programming
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
Many recent research projects focus on language support for behavioral software contracts, that is, assertions that govern the boundaries between software building blocks such as procedures, classes, or modules. Contracts primarily help locate bugs in programs, but they also tend to affect the performance of the program, especially as they become complex. In this paper, we introduce future contracts and parallel contract checking: software contracts annotated with future are checked in parallel with the main program, exploiting the now-common multiple-core architecture. We present both a model and a prototype implementation of our language design. Our model comprises a higher-order imperative language and we use it to prove the correctness of our design. Our implementation is robust enough to measure the performance of reasonably large benchmarks, demonstrating that the use of future contracts can lead to significant performance improvements.