vibe.d

fork vibe.d on github

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

Productive

  • High-level declarative REST and web application framework
  • Full HTTP(S) stack with client, server and proxy implementations
  • Shipped with native database drivers for MongoDB and Redis
  • Complete concurrency toolkit and support for low level I/O operations
  • Read more…

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
  • Multi-threading and integrated load-balancing*
  • Read more…

Simple

  • Fiber based blocking programming model for concise and intuitive development
  • Compact API with sensible default choices
  • Full support for exception based error handling
  • Simple access to third-party extension libraries using the DUB package system
  • 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)
{
	if (req.path == "/")
		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.