eio-rpc is a collection of opinionated libraries designed to build RPC clients and servers with eio
.
It currently relies on the following dependencies:
- Concurrency library: eio
- RPC transport and runtime: ocaml-grpc
- Serialization: ocaml-protoc
ocaml-grpc
is a modular library that provides the building blocks for gRPC functionality. It supports various use cases and works with lwt
, async
, and eio
clients/servers. It also supports various libraries implementing the protobuf serialization (ocaml-protoc
and ocaml_protoc_plugin
). As such, it offers a generic set of tools without recommending a specific choice. This opens the door for more specialized libraries, like eio-rpc
, that focus on a particular combination of dependencies and offer a more streamlined interface.
The primary goal of eio-rpc is to provide a reference implementation and examples that demonstrate a specific (and opinionated) approach to structuring an application that involves a networked RPC interface and a CLI client.
While the stability and usability of the overall interface are important, and I plan to use the libraries defined here in personal projects, I do not guarantee the choice of the underlying building blocks. These may change in future updates, potentially in breaking ways. As a result, I currently do not recommend this library for inclusion in a public opam package. However, by making this repo public, I can reference this code in discussions, issues, and PRs with other developers on GitHub.
The code documentation of the latest release is built with odoc
and published to GitHub
pages here.
This repo depends on unreleased packages that are published to a custom opam-repository, which must be added to the opam switch used to build the project.
For example, if you use a local opam switch, this would look like this:
git clone https://github.com/mbarbin/eio-rpc.git
cd eio-rpc
opam switch create . 5.2.0 --no-install
eval $(opam env)
opam repo add mbarbin https://github.com/mbarbin/opam-repository.git
opam install . --deps-only --with-test --with-doc
Once this is setup, you can build with dune:
dune build @all @runtest