Their garbage collectors are the same, but their code generation is superior in terms of performance. It always depends on the kind of code, but sometimes they can give a huge performance improvement.

Ok makes sense. I've been mostly RAM-bound on this workload (and VMs, etc) so the raw performance isn't quite as critical to me as GC and stability, etc.

libevent is definitely still the recommended implementation in terms of stability. The libasync driver is improving, but it needs more time until it can be considered stable. I think is also still faster than libasync, but that should hopefully change at some point in the future.

Great info, thanks. I gave libasync a quick try but it did crash under a few semi-common scenarios with this workload (ex. remote disconnects, failed REST requests and so on) so I'll stick with libevent and dmd for the time being.

Thanks a lot for the reply, advice, and of course all the great work on vibe.d!