Szymon Gatner Posted in reply to Etienne



Permalink Reply

On Wednesday, 24 September 2014 at 13:13:34 UTC, Etienne wrote: > It's finally here: > > 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: > > 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 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);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: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