Thread overview
∅MQD messaging library v1.0 released
Aug 16, 2015
Nick Sabalausky
Aug 18, 2015
Walter Bright
Aug 18, 2015
Suliman
Aug 19, 2015
Laeeth Isharc
Aug 21, 2015
Laeeth Isharc
Re: ?MQD messaging library v1.0 released
Aug 21, 2015
Robert M. Münch
August 16, 2015
I am happy to announce the (somewhat overdue) release of ∅MQD v1.0!

∅MQD is a D library that wraps the low-level C API of the ∅MQ (aka. ZeroMQ) messaging framework.  It is a rather thin wrapper that maps closely to the C API, while providing modern D features that make the framework safer, easier and more pleasant to use.  (In other words, ∅MQD is not just a plain C binding(*)!)

Code:         https://github.com/kyllingstad/zmqd
Dub package:  http://code.dlang.org/packages/zmqd
API docs:     https://kyllingstad.github.io/zmqd/zmqd_v1.0.html

This version works with ∅MQ v4.x, and has 100% support for all ∅MQ v4.0 functionality.  A few small ∅MQ 4.1 features are missing, but support for those will be added in an upcoming 1.1 release in the not-too-distant future.

Before use, please have a look at the README, specifically the section "A word of caution about the C library bindings".  The ∅MQ guys have introduced some ABI incompatibilities in recent versions, so it it important that the D-to-C bindings match the library version you have installed.

-Lars


(*) If plain C bindings are what you want, check out Deimos/ZeroMQ:

    https://github.com/D-Programming-Deimos/ZeroMQ
    http://code.dlang.org/packages/zeromq

∅MQD depends on these bindings, so I try to keep them up to date with stable ∅MQ releases.



August 16, 2015
Cool. I haven't actually used ZeroMQ yet, but it's something I've had my eye on.
August 16, 2015
On Sunday, 16 August 2015 at 12:53:39 UTC, Nick Sabalausky wrote:
> Cool. I haven't actually used ZeroMQ yet, but it's something I've had my eye on.

If you want to look into it, I heartily recommend the ZeroMQ Guide:

    http://zguide.zeromq.org/

In addition to being a comprehensive and well-written (entertaining, even) user's guide for ZeroMQ, it contains a lot of good information and advice on how to build distributed software systems in general.

I have translated the examples for the first few chapters to D.  You'll find them in the "examples" subdirectory of the ∅MQD repo.

-Lars
August 18, 2015
On 8/16/2015 2:22 AM, Lars T. Kyllingstad wrote:
> I am happy to announce the (somewhat overdue) release of ∅MQD v1.0!

https://www.reddit.com/r/programming/comments/3hgg00/mqd_d_library_for_zeromq_v10_released/

Lars, please post an AMA there.

August 18, 2015
Lars, did you thought about full port? I read post of etcimon about his Botan lib. He eventual decided to rewrite original lib from C++ to D to make code more easier maintainable.
August 19, 2015
On Tuesday, 18 August 2015 at 20:44:25 UTC, Suliman wrote:
> Lars, did you thought about full port? I read post of etcimon about his Botan lib. He eventual decided to rewrite original lib from C++ to D to make code more easier maintainable.

It's less work to maintain wrappers than full port, I would think, no?

I am in awe of etcimon's accomplishments (not just with this), as with several others in the community here.  There are some stiff security audit requirements to prudently use crypto code in production (just look back on headlines from past few years to see why), and I hope we can meet these at some stage with botan port.  I guess should be easier for D code than C++ if written idiomatically ?
August 21, 2015
On Tuesday, 18 August 2015 at 20:44:25 UTC, Suliman wrote:
> Lars, did you thought about full port? I read post of etcimon about his Botan lib. He eventual decided to rewrite original lib from C++ to D to make code more easier maintainable.

I considered it, yes, but it is a *lot* more work, and I think the wrapper solution turned out rather nice.  The ZMQ API is pretty "wrappable", and I don't expect it to become much more complex in the future either.  The big changes these days seem to be in the ZMQ guys' own high-level wrapper library, CZMQ, rather than in ZMQ core.

Recently, I've played around with the idea of making a pure D implementation of Scalable Protocols, which was created by Martin Sustrik, one of the original ZMQ authors.  He invented SP and the reference implementation, nanomsg (http://nanomsg.org), partly as kind of a do-over for some things he considered design mistakes in ZMQ.  SP seems "cleaner" and more principled than ZMQ in many ways.

So many fun projects, so little time...

Lars
August 21, 2015
On Tuesday, 18 August 2015 at 19:35:56 UTC, Walter Bright wrote:
> On 8/16/2015 2:22 AM, Lars T. Kyllingstad wrote:
>> I am happy to announce the (somewhat overdue) release of ∅MQD v1.0!
>
> https://www.reddit.com/r/programming/comments/3hgg00/mqd_d_library_for_zeromq_v10_released/
>
> Lars, please post an AMA there.

After the present thread didn't garner much attention the first couple of days, I kind of stopped following it, and didn't catch up on it until now.  I guess that reddit thread is long dead now. :(

Lars
August 21, 2015
On Friday, 21 August 2015 at 05:52:42 UTC, Lars T. Kyllingstad wrote:
> On Tuesday, 18 August 2015 at 20:44:25 UTC, Suliman wrote:
>> Lars, did you thought about full port? I read post of etcimon about his Botan lib. He eventual decided to rewrite original lib from C++ to D to make code more easier maintainable.
>
> I considered it, yes, but it is a *lot* more work, and I think the wrapper solution turned out rather nice.  The ZMQ API is pretty "wrappable", and I don't expect it to become much more complex in the future either.  The big changes these days seem to be in the ZMQ guys' own high-level wrapper library, CZMQ, rather than in ZMQ core.
>
> Recently, I've played around with the idea of making a pure D implementation of Scalable Protocols, which was created by Martin Sustrik, one of the original ZMQ authors.  He invented SP and the reference implementation, nanomsg (http://nanomsg.org), partly as kind of a do-over for some things he considered design mistakes in ZMQ.  SP seems "cleaner" and more principled than ZMQ in many ways.
>
> So many fun projects, so little time...
>
> Lars

I was just looking at nanomsg source the other day, wondering just how much work it would be to rewrite in D.

In the meantime if you fancy helping with the D wrapper, do let me know.

August 21, 2015
On 2015-08-21 05:52:40 +0000, Lars T. Kyllingstad said:

> Recently, I've played around with the idea of making a pure D implementation of Scalable Protocols, which was created by Martin Sustrik, one of the original ZMQ authors.  He invented SP and the reference implementation, nanomsg (http://nanomsg.org), partly as kind of a do-over for some things he considered design mistakes in ZMQ.  SP seems "cleaner" and more principled than ZMQ in many ways.

You may want to take a look at BEEP as well. IMO one of the most under-estimated approaches for doing network application protocols.

-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster