Great work Etienne!
will libasync make it into phobos?
On Wednesday, 24 September 2014 at 13:13:34 UTC, Etienne wrote:
It's finally here: https://github.com/etcimon/libasync
We all know how event loops are the foundation of more popular
libraries Qt and Nodejs.. we now have a natively compiling
async library entirely written in D.
This event library was tested on Win32, Linux x64, Mac OS x64,
with DMD 2.066, offers the more low-level async objects:
timers, file i/o, dns resolver, tcp, udp, listeners, signals
(cross-thread), notifications (same thread), and more recently
(and with great efforts for implementing with OS X / BSD) a
directory watcher.
e.g. You can run a timer with:
import std.datetime; import std.stdio; import libasync.all;
EventLoop evl = new EventLoop;
auto timer = new AsyncTimer(evl);
timer.duration(2.seconds).periodic().run({ writeln("Another 2
seconds have passed"); });
while(evl.loop()) continue;
The tests may be most revealing:
https://github.com/etcimon/libasync/blob/master/source/libasync/test.d
A (lightly tested) vibe.d driver using all those async objects
is also available and currently ongoing a pull request:
https://github.com/etcimon/vibe.d/tree/native-events
The incentive was to make vibe.d compile in completely native
D, I'm now moving onto a botan C++ => D wrapper for it, I plan
on moving objects to D over the years until the TLS library can
be completely native. I thank Walter for the efforts on
extern(C++)
Finally, I release this on the basis of an MIT license, looking
forward to seeing our community flourishing with yet more
native libraries. Code on