vibe.d beta banner
get vibe.d

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

vibe.d 0.7.14 release

vibe.d 0.7.14 release

Header image
Fri, 22 Mar 2013A lot has been improved on the performance and multi-threading front. The HTTP server benchmark jumped from around 17k req/s up to 48k req/s on a certain quad-core test system and >10k connections can now be handled at the same time (on 64-bit systems due to virtual memory requirements).

Features and improvements

  • Performance tuning for the HTTP server and client
  • Implemented distributed listening and HTTP server request processing (using worker threads to accept connections)
  • Stable memory usage for HTTP client and server (tested for 50 million requests)
  • Implemented new TaskMutex and TaskCondition classes deriving from Druntime's Mutex and Condition for drop-in replacement
  • Added a simplified version of the std.concurrency API that works with vibe.d's tasks (temporary drop-in replacement)
  • Added support for customizing the HTTP method and path using UDAs in the REST interface generator (by Михаил Страшун aka Dicebot) - pull #189
  • vibe.core.mutex and vibe.core.signal have been deprecated
  • Added support for WebDAV specific HTTP methods - see also issue #109
  • Compiles on DMD 2.061/2.062 in unit test mode
  • Added Json.remove() for JSON objects
  • Added Isolated!T in preparation of a fully thread-safe API
  • The package description now exposes a proper set of configurations
  • VPM uses the new download URL schema instead of relying on a "downloadUrl" field in the package description to stay forward compatible with DUB
  • The default order to listen is now IPv6 and then IPv4 to avoid the IPv4 listener blocking the IPv6 one on certain systems
  • Added HttpServerSettings.disableDistHost to force listenHttp to listen immediately, even during initialization
  • Added WebSocket.receiveBinary and WebSocket.receiveText - issue #182
  • Added HttpServerResponse.writeRawBody and HttpClientResponse.readRwaBody to allow for verbatim forwarding
  • ".gz" and ".tgz" are now recognized as compressed formats and are not transferred with a compressed "Content-Encoding"
  • Added a pure scoped callback based version of requestHttp to allow GC-less operation and also automatic pipelining of requests in the future

Bug fixes

  • Fixed some possible crashes and memory leaks in the HttpClient
  • Fixed the HttpRouter interface to derive from HttpServerRequestHandler
  • Fixed parsing of version ranges in the deprecated VPM
  • Fixed some examples by added a VibeCustomMain version to their package.json
  • Fixed a possible range violation in the Diet compiler for raw/filter nodes
  • Fixed detection of horizontal lines in the Markdown parser
  • Fixed handling of one character methods in the REST interface generator - pull #195
  • Fixed the reverse proxy to not drop the "Content-Length" header
  • Fixed HttpClient to obey "Connection: close" responses
  • Fixed Libevent2Signal to not move tasks between threads


Posted at 09:10:14 +0100 by Sönke Ludwig

Comments for the post are currently disabled.