-
Notifications
You must be signed in to change notification settings - Fork 206
Move to zeromq-src 0.2 #339
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
Conversation
|
@jean-airoldie it looks like this is still on zeromq-src 0.1.6 |
|
|
@erickt It would be really nice to see a new release with this PR. This would fully remove the Additionally it brings an update to the latest upstream zmq release, which includes websocket support among other things. |
Lol you're right. Fixed that. |
abb3514 to
dbd908b
Compare
dbd908b to
4d42bd4
Compare
Same here. Won't be able to help unfortunately. |
4d42bd4 to
d2c4ceb
Compare
* Update to zeromq-src with bumps libzmq version to 4.3.4 and
enables building without cmake.
* Link against libsodium for encryption support for security
and performance reasons.
d2c4ceb to
1076ec6
Compare
|
I'm still using the crate actively, so I'd bet interested in helping out. |
We could do it under the Traverse-Research org, and have contributed most of this conversion and update already. |
|
Unfortunately, the last application using ZeroMQ I had was rewritten in Zig, so I'm not using that crate any longer either. I you could take over maintenance, @Jasper-Bekkers that would be great! |
|
@jedisct1 please email ([email protected] ), then we can set everything up that way |
|
I can also help with maintaining this crate, since I am using it very extensively in multiple projects |
Let me know if you need anything from me, this crate is quite outdated and could use some dependency updates as well as code cleanup, that I'd be happy to do as well as removing cmake and moving to a later zmq release. |
|
Any update on this? Or at least on a release with this PR? |
|
Due to the lack of updates here I've created https://crates.io/crates/zmq2 that integrates these changes. |
|
The zmq2 repo link on crates.io still points to this repo - can you update to your fork? Thanks! |
|
Thanks to those who are trying to keep this crate alive. @erickt Would it be possible to hand over the crate ownership to the fork maintainers? Having another crate isn't ideal. Also, is the fork going to continue to use https://github.com/erickt/rust-zmq for issues, but https://github.com/Traverse-Research/zmq2 for PRs? That's will confuse people, I think. It might be better to make a clean break and not use a fork at all. |
@jedisct1 seems to be the person to ask.
If users find issues while using
What difference does it make? Besides the fact that GitHub shows "Forked from erickt/rust-zmq" and "Branch is XXX commits ahead of erickt/rust-zmq:master" issues and PRs can still be created as normal on the forked repo. Besides, issues reported here mean more traffic in the maintainers(') inbox, in hopes of pushing them to follow up on #339 (comment). |
I don't currently see an "Issues" section on zmq2. I was originally under the impression that maybe forks couldn't have issues, but I think they just need to be enabled.
|
You are definitely right, I hadn't seen that 😅. They can be enabled on forks as well, but are - as far as I'm aware - disabled by default when creating a fork. Not sure why PRs are enabled by default. |
|
I'm incredibly sorry for dropping the ball on this. @Jasper-Bekkers since you did the fork, I sent you an invite to collaborate on this repo, and invited you to own https://crates.io/crates/zmq. Please feel free to merge your changes in here. |
|
@Jasper-Bekkers Are you going to merge your changes in here? I'm looking to add async support but want to know that it's going to be accepted. Also i want to make sure i'm working off of the correct codebase |
@daniel-brenot-apcapital You may want to look at https://github.com/cetra3/tmq. I've used that in the past and had a fairly good experience. |
Like the other crate i've looked at, this seems to be linux only at a first glance. Am i correct? I don't see how it would work on windows when it uses unix apis. |
I think you're right about windows support. See cetra3/tmq#17 |
Right, but why not make async support built into the main library then? Having multiple libraries that add async support when it could be added as something supported by the main library means that there is a high chance the async library might stop being supported when this one is still going, or vice versa. I'm using this in a professional context, so it would be nice to have fewer libraries to have to trust as well. Also if the worry is about bulk, then just ask that the implementation of async be thin and behind a feature. I'm confused as to why there is so much hesitance to adding a base feature that would make the library much more practical. |
I've PR'd the changes here #345, it would be good to get some eyes on and some wider testing before merging this in. As for async support in the "main library", I think we should start up another issue to discuss this. I'm personally very much not a fan of Rust's async/await design in general, the heavy runtime dependencies it brings and I don't really think the async/await design fit with how zmq is supposed to be driven. I also am quite hesitant of taking in major changes, one of the key attraction points for me in the However, if we should go in-depth I don't think this issue is the right place for this discussion and we should open up another one.
While this crate does support windows, it's not ideal. The PR I've linked previously should address those issues. We've been using it successfully with those changes on Windows. Please help review those changes if you can :-) |
+1. Proper microservice architecture done with ZMQ allows to make non-blocking projects without using async at all - so adding tokio will lead to forking this project and maintaining a no-async version of the lib for those who do not need async. Basically ZMQ is a kind of "channel" alternative to async, and it is strange to mix this two together. If somebody needs async, he probably splits tasks between microservices in a wrong way - or uses ZMQ just for RPC API to monolithic server, which is an edge case for ZMQ. I am running 20+ microservices communicating over 13+ ZMQ sockets, working also with TCP, database, high-load data processing etc, and never had required async. |
"Proper microservice architecture" Doesn't prescribe for or against async. That's a bit of a ridiculous notion. Also yes you can make non blocking projects with this without async, but it will inevitably end up just being some other way to do async. Using ZMQ to perform RPC isn't exactly monolithic. Receiving asynchronously on a socket is a great example of where a proper async implementation would outperform any possible implementation you have. With using something like libuv, you can have the operating system resume an async task once data is received on a socket. This would dramatically improve throughput of an application, as well as reduce the number of threads needed to serve users. Also, async is not tokio. Adding async to the library allows it to be used with any async runner. This shows the complete lack of understanding in the topic being discussed. Lastly, just because you are running 20 microservices over 13 sockets and haven't required async, doesn't mean that you did it well. This is kind of a strange way to make your point as it doesn't really prove anything. Anyways, i'm content with letting this issue die or moving this discussion to a different thread, but the sheer lack of understanding about how async works and what implementing it properly means is very surprising to me. Rusts async seems to be a strangely controversial topic, despite it being one of the most efficient implementations out there(See how activex performs in relation to other web servers). |
|
@daniel-brenot-apcapital here by I also never said that |
enables building without cmake.
and performance reasons.
Note that im unsure whether libsodium should be linked by default since I'm assuming not all users use CURVE.