This repository contains tools for working with Mimosa, a programming language specifically made for embedded (control) applications. It builds upon the MIMOS model of computation.
For further information on the Mimosa language, please refer to the documentation:
nikolaushuber.github.io/mimosa/
In order to install Mimosa, you have to download/clone this repository:
git clone https://github.com/nikolaushuber/mimosa.git
cd mimosa
Mimosa is implemented in OCaml, therefore, an OCaml development environment is needed (including opam, dune, and a recent OCaml compiler). There are various ways of installing OCaml, please refer to the official documentation. Mimosa has only been tested with OCaml versions > 5.0, however, it should run with older versions as well.
It is also possible to use a docker image, which already comes with an OCaml development environment installed. If you want to install Mimosa without docker please jump to the next section.
docker pull ocaml/opam:debian-11-ocaml-5.2
docker run -it -v ./:/home/opam/mimosa --name mimosa ocaml/opam:debian-11-ocaml-5.2
This will pull an image from DockerHub which already contains an OCaml 5.2 compiler.
The second command will run a container from this image, will mirror the current folder inside the container at /home/opam/mimosa, and use the name mimosa to refer to the container.
This should leave you at /home/opam inside the container, so you can switch to the mirrored directory with
cd mimosa
You can leave the container at any time with exit. To continue, you can start and attach to the container again like so:
docker start mimosa
docker attach mimosa
The easiest way of installing Mimosa is through the OCaml package manager opam:
opam install . --yes
Alternatively, it can be installed with dune:
dune build
dune install
To run all tests in this repository you can run
dune runtest
If there is no output, all tests ran successfully.
The /examples folder holds various examples of Mimosa, and how to simulate programs written in it. Please refer to the README inside the folder for more information.
The documentation is written using mkdocs and the material theme. The online documentation is automatically generated by a GitHub workflow after every push, it can however also be generated locally by first appending:
# ...
plugins:
- offlineat the end of mkdocs.yml, and then issuing
mkdocs buildMimosa: A Language for Asynchronous Implementation of Embedded Systems Software
Nikolaus Huber, Susanne Graf, Philipp Rümmer, Wang Yi
https://doi.org/10.48550/arXiv.2503.02557
MIT