-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make Runtimes Generic #712
Comments
This was referenced May 4, 2024
This was referenced May 7, 2024
Merged
michaelsilver
added a commit
that referenced
this issue
Jun 18, 2024
As part of our efforts to support executors that run in a separate process (see #712), introduce a library for communication over unix domain sockets. I wrote this library because I could not find any mature Rust library for sending typed messages over unix sockets. Luckily, most of the "heavy lifting" is done by stitching together existing mature libraries in the ecosystem. The goals of this library were to support: * Typed messages of any length, so long as they are serializable by `serde` (for this reason we chose streaming sockets over datagram sockets) * Newline-delimited JSON as the wire protocol (for easy interop with other languages) * Async code (and thus concurrent message sending/receiving) * The specific usecase of request/response messaging * Ad-hoc messages client to server, or server to client * Safe client or server restarts Non goals of this library: * Multiple clients connecting to a server * High message throughput * Unreliable transport over unix sockets (["as on most UNIX implementations, UNIX domain datagram sockets are always reliable"](https://man7.org/linux/man-pages/man7/unix.7.html)) This was a fun project -- unix streaming sockets simply send binary over the wire and are very low level primitive, so achieving correct concurrency control and typing was nontrivial! Chapter 57 of _The Linux Programming Interface_ is a good brief primer on unix sockets for anyone unfamiliar. --------- Co-authored-by: Paul Butler <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
PlaneDocker
(Moveprune
into PlaneDocker executor #718)PlaneDocker
(Move backend wait to runtime #728)PlaneDocker
(Move Docker construction into PlaneDocker #719)PlaneDocker
toDockerRuntime
(Rename PlaneDocker to DockerRuntime #720)ContainerId
an implementation detail ofDockerRuntime
(Remove ContainerId from runtime interface #721)Runtime
trait (Add runtime trait #723)DockerRuntime
with genericRuntime
in the main loopBackendManager
generic over runtime (Make executor generic over runtime #727)The text was updated successfully, but these errors were encountered: