Typed entities that carry data frames
The internet of things (IoT) promises to saturate our world with physical objects embedded with sensors and tiny computing devices. Such systems are continually generating event data from embedded sensors, including producing real-time data streams. In order to take advantage of this scenario, these events must be concurrently processed by applications running in computing systems ranging from embedded to server systems. There is a lack of fundamental research and development in proper programming abstractions for such systems. Good programming abstractions would allow us to easily take advantage of true concurrency offered by multi-cores for concurrent data processing. We may look up to the rich developments in the concurrency theory for gaining insights into suitable abstractions. Process calculi are concurrent formal languages for specifying and reasoning about concurrent, communicating systems. The p-calculus is a process calculus for mobile systems.
A simple EventJ pseudocode
In the context of IoT, we propose to investigate programming abstractions for concurrent event-processing systems based on the asynchronous p-calculus. The proposed language is tentatively named EventJ. The process-based model offered by the p-calculus would allow us to quickly take advantage of multi-cores wherever available for rapid event processing. The asynchronous channels have underlying bounded FIFO queues. When queue is full either the channel must block (e.g., when specifying in-memory queues) or the operation simply returns with no effect (lossy, distributed channel) or it simply pushes the oldest entry out (real-time data streams). A receive operation on an empty channel either returns a default value (polling mode) or blocks. The channels may be configured for any of these behaviors. The use of asynchronous FIFO channels is the key to providing a viable channel abstraction for supporting real-time data streams.
There is already some work in designing practical programming languages based on p-calculus – namely, occam-p, which is a programming language based on the synchronous p-calculus. Though EventJ would draw insights from the experience in developing occam-p, this language is fundamentally different owing to the use of asynchronous channels.
The proposed tool chain implementation for the language