On Sun, 19 Mar 2017 23:46:12 GMT, Carl Sturtivant wrote:

Unfortunately, that means I have likely misunderstood async --- the D Web Development book I read some time back when it came out, said it runs its argument(s) in a separate thread, but this looks to be false, i.e. it's cooperative multitasking. Please confirm.

The whole vibe framework is built around asynchrony IO and fibers. The documentation [1] says that async runs runTask or runWorkerTask. The documentation of runTask [2] says:

"task will be called synchronously from within the vibeRunTask call. It will continue to run until vibeYield() or any of the I/O or wait functions is called."

[1] http://vibed.org/api/vibe.core.concurrency/async
[2] http://vibed.org/api/vibe.core.core/runTask

/Jacob Carlborg