Note: This page is still under construction!
WaveScope is a system for developing distributed, high-rate applications that need to process streams of data from various sources (e.g., sensors) using a combination of signal processing and database (event stream processing) operations. The execution environment for these applications ranges from embedded sensor nodes to multicore/multiprocessor servers.
WaveScript is the programming language used to develop WaveScope applications. It is a high-level, functional, stream-processing language that aims to deliver uncompromising performance. WaveScript programs execute in parallel on multiple cores, or distributed across a network. Its compiler uses aggressive partial evaluation techniques to remove abstractions and reduce the source program to a graph of stream operators.
The WaveScript compiler supports multiple backends generating code for several languages. These were developed in the course of research and experimentation. First, a Scheme embedding is included with the compiler. Second, because of the nature of the language, translation to ML is straightforward, and WaveScript can generate code for SML (MLton) or OCaml. Third, the primary backend generates C++ code that links against the XStream engine. Finally, a new standalone C-backend is under development and is used for experimenting with novel memory management strategies.
These backends offer different advantages, for example support for various hardware platforms, as well as enabling integration with existing code in any of the target languages.
See the manualhere (html) oras a pdf.
WaveScript is the successor toRegiment. The source code is available via anonymous Subversion access. Please email newton AT mit.edu for the repository location.
Also, nightly snapshots of the repository areposted here
WaveScript is going through a transitional period right now. The code was just updated to comply with a new Scheme standard (R6RS). This will be a very good thing, increasing portability, but in the mean time things are a bit inconsistent and some documentation has gone stale. Some interim build instructions can be found here: R6RS_Build_Instructions.
XStream is a runtime engine containing a scheduler and memory manager for running stream processing programs.
We are working on several applications using the WaveScope/WaveScript platform.
The 2008 technical report provides the most recent description of the implementation, and the LCTES paper will be an updated version of this technical report.
We are grateful to the National Science Foundation its support under grants CNS-0520032 and CNS-0720079 and to SAP for its support through the WaterSense project.