MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Static scheduling of synchronous data flow programs for digital signal processing
IEEE Transactions on Computers
Communicating reactive processes
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimized rapid prototyping for real-time embedded heterogeneous multiprocessors
CODES '99 Proceedings of the seventh international workshop on Hardware/software codesign
An Implementation of Constructive Synchronous Programs in POLIS
Formal Methods in System Design
Concurrency in Synchronous Systems
Formal Methods in System Design
Automatic rate desynchronization of embedded reactive programs
ACM Transactions on Embedded Computing Systems (TECS)
Exploiting coarse-grained task, data, and pipeline parallelism in stream programs
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
A concurrent lambda calculus with futures
Theoretical Computer Science - Applied semantics
Multiprocessor resource allocation for throughput-constrained synchronous dataflow graphs
Proceedings of the 44th annual Design Automation Conference
A type system for the automatic distribution of higher-order synchronous dataflow programs
Proceedings of the 2008 ACM SIGPLAN-SIGBED conference on Languages, compilers, and tools for embedded systems
Clock-directed modular code generation for synchronous data-flow languages
Proceedings of the 2008 ACM SIGPLAN-SIGBED conference on Languages, compilers, and tools for embedded systems
The F# asynchronous programming model
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
A contextual semantics for concurrent Haskell with futures
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Multi-task Implementation of Multi-periodic Synchronous Programs
Discrete Event Dynamic Systems
Compiler techniques for scalable performance of stream programs on multicore architectures
Compiler techniques for scalable performance of stream programs on multicore architectures
Compiling Esterel for Multi-core Execution
DSD '11 Proceedings of the 2011 14th Euromicro Conference on Digital System Design
Proceedings of the 13th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, Tools and Theory for Embedded Systems
Hi-index | 0.00 |
Efficiently distributing synchronous programs is a challenging and long-standing subject. This paper introduces the use of futures in a LUSTRE-like language, giving the programmer control over the expression of parallelism. In the synchronous model where computations are considered instantaneous, futures increase expressiveness by decoupling the beginning from the end of a computation. Through a number of examples, we show how to desynchronize long computations and implement parallel patterns such as fork-join, pipelining and data parallelism. The proposed extension preserves the main static properties of the base language, including static resource bounds and the absence of deadlock, livelock and races. Moreover, we prove that adding or removing futures preserves the underlying synchronous semantics.