@artichaut and I are very pleased to announce the first release of Mehari.
Gemini is a lightweight alternative protocol to HTTP and Gopher, which runs on top of TLS.
On the “Geminispace”, there are mainly static content like blogs and other applications like games, BBS, etc.
Mehari API’s is largely inspired by Dream: it consists of a single module, and is pretty similar, there are handlers, routes, middlewares, etc.
Among the features, there are:
Cross-platform: the library provides many IO modules (Lwt, Mirage, Eio)
MIME type inference (using experimental Conan support)
Rate limit : it is easy to rate limit access to a route or to the whole server
Virtual hosting : hostname verification with SNI or request URL
Proxy: Ability to act as a proxy
CGI support with environment variables
Long-running TCP connection : incremental building of response body
Examples of use are available on the GitHub repository.
Documentation is available online with a short tutorial explaining the basics.
Currently, the library is in its infancy, the API is subject to change, so we are open to feedback and contribution, especially in terms of security.
Mehari is our first MirageOS-compatible library, so the creation of unikernels is experimental, and we’d love to get feedback on it.