postage-rs
remoc
Our great sponsors
postage-rs | remoc | |
---|---|---|
6 | 6 | |
248 | 146 | |
- | 5.5% | |
0.0 | 7.7 | |
over 1 year ago | 25 days ago | |
Rust | Rust | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
postage-rs
-
Tachyonix: a very fast MPSC async bounded channel
Here are a few things that I learned from writing postage that might be helpful: - Poll::Pending can cause subtle deadlock bugs. If a channel endpoint is going to return Poll::Pending, it needs to check conditions, register for notification, and then re-check those conditions before returning Pending. Otherwise, the endpoints could deadlock due to concurrent interactions between the channel state and the notifier. Here's an example fix on an mpsc channel: https://github.com/austinjones/postage-rs/commit/9d2ba3f83dcbbcef83c684462f5efc5b3e7681cc - The single-threaded cases around sender/receiver polls can be covered in unit tests. Tests can verify the poll result, as well as waker interactions. Here's an example: https://github.com/austinjones/postage-rs/blob/main/src/channels/mpsc.rs#L242
- pub/sub Event bus in rust
-
The Tokio Upgrade from 0.2 to 1.x
I ran into the same thing with Stream - had tons of code that merged/mapped/filtered channel receivers. I ended up deciding to write an async channel library called postage to replace that functionality.
-
Announcing Postage, an async channel library
In case anyone is late to the party, I published v0.4.0 with: - a dispatch channel (mpmc queue) - borrow_mut for the watch sender (so you can mutate the value stored in the channel) - .blocking_send() and .blocking_recv() - And a CI matrix, removing the 'beta' tag.
-
What's everyone working on this week (4/2021)?
I'm working on postage, an async channel library. Postage provides mpsc/broadcast/watch/oneshot channels, as well as Sink and Stream combinators.
remoc
-
Inter-process Communication between two programs on Linux.
u/OP if you want to use unix/tcp socket directly check out https://crates.io/crates/remoc it works over both and is a WAY better idea then http...
-
the best way to pass parameters to egui
You can use an RPC framework to not invent the wheel from scratch like for example https://crates.io/crates/remoc Why? Because such program as an https proxy will likely often run as a daemon started via an init system for example systemd. As you can not start a GUI program as a daemon under unix the GUI wouldn't work anyway. It might even run on a headless server with any GUI and you might want to start you GUI remotely and connect to it.
-
What are some less popular but well-made crates you'd like others to know about?
remoc - a really good rpc framework with agnostic transport and encoding and support for observable/streamable objects.
-
Tsyncp: Channel-like primitives (mpsc, broadcast, etc) over TCP
We had the same challenge and developed Remoc for that. There also is Tarpc, however it does not support channels, only RPC.
-
Pubsub-like library for microservices?
Remoc might do what you want, basically channels generic for anything that implements AsyncRead and AsyncWrite. https://github.com/ENQT-GmbH/remoc/
What are some alternatives?
tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
nvim-send - Essentially "nvim --remote-expr <expr>" / "nvim --remote-send <keys>" or "nvr --nostart --remote-send <keys>" in Rust
eat-apples-quick
Coerce-rs - Actor runtime and distributed systems framework for Rust
fluid - The Fluid Programming Language
rmp-rpc - a msgpack-rpc rust library based on tokio
pulsar - A modular and blazing fast runtime security tool for the IoT, powered by eBPF.
lifeline-rs - A dependency injection library for message-based applications
zmq.rs - A native implementation of ØMQ in Rust
micromath - Embedded Rust arithmetic, 2D/3D vector, and statistics library
concurrent-queue - Concurrent multi-producer multi-consumer queue
versio - A version number manager