vibe.d

fork vibe.d on github

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

Fast

  • Asynchronous I/O for maximum speed and minimum memory usage
  • Compile-time "Diet" templates for unparalleled dynamic page speed
  • Compiled to native machine code
  • Integrated load-balancing*
  • Read more…

Simple

  • Fiber based blocking programming model for concise and intuitive development
  • Compact API with sensible default choices
  • Zero-downtime changes* allowing safe development on live-systems
  • Exception based error handling
  • Read more…

Productive

  • Full web application toolkit, including HTTPS support
  • Native database drivers for MongoDB and Redis
  • Complete concurrency toolkit and support for low level I/O operations
  • Support for graphical user interfaces
  • Read more…

Example of a simple HTTP server

import vibe.d;

shared static this()
{
	auto settings = new HTTPServerSettings;
	settings.port = 8080;

	listenHTTP(settings, &handleRequest);
}

void handleRequest(HTTPServerRequest req,
                   HTTPServerResponse res)
{
	res.writeBody("Hello, World!", "text/plain");
}

Example of an echo server

import vibe.d;

shared static this()
{
	listenTCP(7, (conn) { conn.write(conn); });
}

* Still work-in-progress, implemented by the vibedist project.