Affiliation:
1. University of Vienna, Austria
2. National Institute of Aerospace, USA
Abstract
Processing data at different rates is generally a hard problem in reactive programming. Buffering problems, lags, and concurrency issues often occur. Many of these problems are
clock errors
, where data at different rates is combined incorrectly. Techniques to avoid clock errors, such as type-level clocks and deterministic scheduling, exist in the field of synchronous programming, but are not implemented in general-purpose languages like Haskell.
Rhine is a
clock-safe
library for synchronous and asynchronous Functional Reactive Programming (FRP). It separates the aspects of clocking, scheduling and resampling from each other, and ensures clock-safety at the type level. Concurrent communication is encapsulated safely. Diverse reactive subsystems can be combined in a coherent, declarative data-flow framework, while correct interoperability of data at different rates is guaranteed by type-level clocks. This provides a general-purpose framework that simplifies multi-rate FRP systems and can be used for game development, media applications, GUIs and embedded systems, through a flexible API with many reusable components.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference31 articles.
1. Heinrich Apfelmus. 2011. Reactive-banana. https://github.com/ HeinrichApfelmus/reactive-banana . Heinrich Apfelmus. 2011. Reactive-banana. https://github.com/ HeinrichApfelmus/reactive-banana .
2. C?aSH: Structural Descriptions of Synchronous Hardware Using Haskell
3. Albert Benveniste Paul Le Guernic and Christian Jacquemot. 1991. Synchronous programming with events and relations: the SIGNAL language and its semantics. Science of computer programming 16 2 (1991) 103–149. 10.1016/0167-6423(91)90001-E Albert Benveniste Paul Le Guernic and Christian Jacquemot. 1991. Synchronous programming with events and relations: the SIGNAL language and its semantics. Science of computer programming 16 2 (1991) 103–149. 10.1016/0167-6423(91)90001-E
4. Stephen Blackheath. 2012. Sodium. https://github.com/SodiumFRP/ sodium . Stephen Blackheath. 2012. Sodium. https://github.com/SodiumFRP/ sodium .
5. Zélus
Cited by
2 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Switching Mechanism for Update Timing of Time-Varying Values in an FRP Language for Small-Scale Embedded Systems;Proceedings of the 2024 13th International Conference on Software and Computer Applications;2024-02
2. Semantics of RxJS;Proceedings of the 9th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems;2022-11-29