Principal Investigator Hari Balakrishnan
Co-investigator Samuel Madden
Project Website http://wavescope.csail.mit.edu.ezproxy.canberra.edu.au/
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, but the following backends are currently active:
(1) BulletFirst, the flagship WaveScript backend offering the best performance generates native code using a C compiler backend.(2) BulletSecond, an embedding of WaveScript in Scheme is included with the compiler and enables low-latency compile-link-load of new programs.(3) BulletThird, because WaveScript is similar to ML, translation is straightforward and WaveScript can generate code for SML (MLton) or OCaml.
Also, two additional backends (generating TinyOS and JavaME code) are not actively being used, but can be revived and extended when the need arises.
We have worked or are working on several applications using the WaveScope/WaveScript platform.
(*) Acoustic localization of animals (marmots) in the wild (deployed)(*) Detection of birds using computer vision.(*) Detection of leaks in water pipelines.(*) Seizure onset detection using EEG signals.