[ANN] Miou, a simple scheduler for OCaml 5

I am delighted to announce the release of miou.0.1.0. This release is undoubtedly the culmination and synthesis of the work of several individuals to offer a library that best fits our needs. We’re quite convinced by the API we’re proposing and quite happy with the implementation. As such, we’re coming out of beta to offer version 0.1.0. Above all, this means that the API will change very little, and the library is now ready for use. However, we are not yet in 1.0.0 because we would like to give you time to use Miou, to observe possible bugs, and to give us time to correct these possible bugs in order to prepare version 1.0.0 with peace of mind. You can install the package via OPAM (it will be available soon):

$ opam install miou

We would sincerely like to thank all individuals who have contributed, whether directly or indirectly, to the project.

Furthermore, this new version of Miou builds upon the excellent work of @polytypic and his picos project. We have incorporated certain elements that are suitable for implementing a scheduler, and we hope that our efforts will lead to a certain standardization of the effects used by different schedulers in OCaml.

This rewrite has been carried out while trying to maintain the same semantics and API as what we offered in version 0.0.1~beta2 (however, it is the nature of a beta to potentially break versions). This rewrite culminated in the reimplementation of an HTTP client and server (supporting http/1.1
or h2 with TLS which can handle 200k req/sec) as well as our good old happy-eyeballs example. Moreover, the outcome of these implementations is more satisfying to us than their previous versions. At least for now, considering the various changes our cooperative has embarked on 1, we will not yet release them.

We also took the time to integrate a version of the priority queue verified using Why3. We would like to thank @Armael and @backtracking (as well as the individuals who contributed to and maintained the Vocal project) for their assistance.

Finally, I would like to personally thank the Robur cooperative for providing me with the necessary time to evolve this project.

This release further confirms what we aim to offer to users, and in this regard, we have taken the time to write a small book explaining the use of Miou. This can also be seen as an introduction to asynchronous programming and effects. It is available here and is part of the Miou distribution.

For any questions or assistance, we are available via email, this forum, or Discord.

Happy hacking!

1: As explained in this article, we try to replace Cstruct.t by string and it requires obviously a deep change across severals packages.