The Internet of Things (IoT) revolves around the development, mass-production and deployment of wireless embedded sensor devices. This development has to reconcile competing goals. Many IoT devices are resource-constraint (e.g. in power, memory, computation), which mandates we write software on a low abstraction level (in C, working on a bare resource-level). This eases product development later-on but impedes exploration and flexibility. Developers have to care about hardware-specific details instead of focusing on sensor data and connectivity to the Cloud or other systems. Novices face a high entry barrier and are offered a complex developer experience.
Eclipse Mita aims to build a new programming language for the embedded IoT including editor/IDE, compiler and an extensive test-suite. Mita inherits the syntax of modern general-purpose system-level languages (e.g. Swift or Rust), but compiles to near-production ready C code. It offers powerful abstractions for sensor access, connectivity and general purpose IO. Centered around developer experience, it is build as a DSL using Eclipse Xtext.
Eclipse Mita is a programming language for the embedded IoT. We combine a declarative setup of system resources (e.g. Bluetooth connectivity or a temperature sensor) with a modern imperative language. We introduce first-class primitives for sensor access and connectivity to other systems, which allows for quick exploration and integration into IoT ecologies. We support embedded algorithm through powerful primitives, e.g. lists, vectors and statistic functions. In order to prevent problems at compile-time Mita has a static strong type-system. Lastly, we offer direct interaction with sensor data and in-situ developer support by integrating with the embedded software development toolchains.
The demo below gives an incling of how the language works:
The Eclipse IoT ecosystem supports organizations and developers in building solutions on medium-power devices, to communicate between devices (Leshan, Vorto) and in the Cloud. While in the embedded and low-power space Eclipse is present with the CDT, IoT specific problems are yet to be addressed. Mita would be a step towards expanding the Eclipse IoT ecosystem into low-power, embedded solution development.
The current implementation uses the Yakindu State Chart Tools (EPL licensed) for its type system and expressions.
In future work we plan to explore the language level integration with Eclipse Vorto. Further, we intend to investigate a visual programming language built on top of this work.