vibe.d beta banner
get vibe.d
0.10.0

Asynchronous I/O that doesn’t get in your way, written in D

New website is live - and has got vibe!

New website is live - and has got vibe!

Header image
Tue, 06 Mar 2012Based on an asynchronous I/O framework, the site is now as fast as it gets - at least on our humble virtual server. The blog here is written from scratch and is also based on the new framework.

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.

Posted at 22:06:14 GMT by Sönke Ludwig

Comments for the post are currently disabled.

4 comments

Chang Long12 years ago

The link I post here is a more featured and pure D Jade implement with fully error recover function.
Just look at the example:
https://github.com/sleets/oak/blob/master/src/oak/langs/jade/example.jade
The Jade Lexer:
https://github.com/sleets/oak/blob/master/src/oak/langs/jade/Lexer.d

Do you really want to delete this comment?

Sönke Ludwig12 years ago

Hi and thanks! I've seen your engine some time ago when you posted it on the D.announce group. It looks quite fully featured. For vibe I wanted to have an engine that worked with D expressions and statements instead of JavaScript, which is the reason why I chose to implement my own version.

Do you really want to delete this comment?

Chang Long12 years ago

I also write a jade template engine (https://github.com/sleets/oak/tree/master/src/oak/langs/jade) in d.

Do you really want to delete this comment?

Chang Long12 years ago

Hi Sönke,
Great work, This is the first really web solution for D.
If you also use php, I suggest you look at Symfony. I think Inversion of Control and Dependency Injection is very important for web develop.

Do you really want to delete this comment?