New website is live - and has got vibe!
Over the last weeks, we have been working hard on a project that will be released as open source as soon as the documentation and the install process is ready. This project, called vibe.d, is an asynchronous I/O framework similar to node.js, but different.
It inherits the performance characteristics. That is, it can handle insane amounts of connections per minute because it has a very low overhead and because it uses up only a tiny amount of memory per connection compared to threaded I/O. But at the same time, where you have to specify callbacks for each and every I/O operation in traditional AIO frameworks, it keeps the simplicity and terseness of blocking I/O. This is made possible by using D's great Fiber feature.
Fibers (or co-routinues) behave similar to threads - except they are not threads. Multiple fibers can live inside one thread and only one fiber actually runs at one point in time. This fiber can "yield" at any time and return control back to the place from where it has been started. Its state is recorded and the fiber can be restarted later at the same place as if it had never yielded its execution.
We use this feature to give back control to the event loop at any time we have to wait for an I/O operation to complete. The event loop will then restart the fiber once the operation is complete and thus has sent the corresponding event.
The vibe.d framework also has a fully featured web application framework built-in. It tries to make web development extremely productive (and simple!) by cleverly using D's features such as templates, compile-time functions, string mixins, operator overloading and dynamic method dispatch. The vibe.d website contains some meaningful examples and a more detailed description of all the features and specifics.
We are quite excited and think that this framework might make a big difference for some of the web development folks who live on the cutting edge regarding performance and do not want to make sacrifices regarding productivity or safety.