vibe.d beta banner
get vibe.d

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

vibe.d 0.8.3 release

vibe.d 0.8.3 release

Header image
Thu, 08 Mar 2018The deprecation phase of the legacy "vibe-d:core" module starts with this release by defaulting to the new "vibe-core" package. Additionally, DMD 2.079.0 is supported and some notable improvements have been made to the HTTP implementation, with the URLRouter in particular, as well as other parts of the library.

Features and improvements

  • The "vibe-core" package is now used by default - the "libevent"/"win32"/"libasync" configurations can still be used to continue using the legacy vibe-d:core package, but beware that it will be removed by the end of the year
  • Compiles on DMD 2.073.2 up to 2.079.0 and LDC 1.3.0 up to 1.8.0
  • HTTP sub system
    • URLRouter has been refactored to avoid fragment the heap during the initialization phase, which can cut process memory usage dramatically - issue #1359, pull #2043
    • Added WebSocketCloseReason and improved close reason handling (by Andrew Benton) - pull #1990
    • Added HTTPClientSettings.tlsContextSetup to enable more fine-grained TLS settings customization - pull #2071
    • Added a check in HTTPServerResponse.redirect to avoid sending any control characters (e.g. header injections) - pull #2074
    • Added createDigestAuthHeader to create a client header for HTTP digest authentication (by Tomáš Chaloupka) - pull #1931
    • Deprecated all parsing related HTTPServerOption values (by Sebastian Wilzbach) - pull #1947
    • Changed the HTTP file server to not send cache directives by default - pull #2031
  • Added RestInterfaceSettings.errorHandler to enable customization of error responses - pull #2072
  • Reworked MongoDB cursor support to properly support aggregation on 3.6 servers (by Jan Jurzitza aka WebFreak001) - issue #1718, issue #2036, pull #2037
  • Changed the MongoDB code to default to SCRAM-SHA-1 authentication (by Sebastian Wilzbach) - issue #1967, pull #2027
  • Made remove and exists available from the various Redis... container types (by Geoffrey-A) - pull #2026
  • Now uses arc4random_buf instead of "/dev/urandom" on systems that support it with a secure hash function (by Nathan Sashihara) - pull #2063
  • Added conversion functions for Json <-> std.json.JSONValue (by Jan Jurzitza aka WebFreak001) - issue #1465, pull #1904, pull #2085

Bug fixes

  • Fixed compilation on DragonFlyBSD (by Diederik de Groot) - pull #2028
  • Fixed RedisHash.opIndexAssign!"-" (by Geoffrey-A) - pull #2013
  • Fixed DictionaryList to work with class/interface types (by H. S. Teoh aka quickfur) - issue #2004, pull #2005
  • Fixed compilation of types with @system getters/setters in the serialization module - issue #1991, issue #1941, pull #2001
  • Fixed compilation of methods with unsafe return types in the REST interface generator (by Martin Nowak) - [pull #2035][issue2035]
  • Fixed a connection leakage in vibe.inet.urltransfer (by Martin Nowak) - pull #2050
  • Fixed parsing the host part of file:// URLs - issue #2048, pull #2049
  • Fixed handling of https+unix:// URLs in the HTTP client (by Les De Ridder) - pull #2070
  • Fixed the HTTP proxy mode to default to "reverse" (regression in 0.8.2) - pull #2056
  • Fixed the HTTP client to send a valid "Host" header when requesting from an IPv6 URL - issue #2080, pull #2082
  • Fixed the old Path implementation to preserve trailing slashes on Windows (by Martin Nowak) - pull #2079
  • Fixed a regression (0.8.2) in HTTPServerRequest.rootDir - pull #2032

Switching back to the classic vibe-d:core

The old core implementation, although vibe-core is the new default starting with this release, will still be supported until at least the end of this year. If you encounter any issues with vibe-core, you can switch back to the old implementation by using a sub configuration directive in the package recipe:

SDL syntax:

dependency "vibe-d:core" version="~>0.8.3"
subConfiguration "vibe-d:core" "libevent"

JSON syntax:

    "dependencies": {
        "vibe-d:core": "~>0.8.3"
    "subConfigurations": {
        "vibe-d:core": "libevent"

The alternative configurations "win32"/"win32_mscoff" and "libasync" are also still available.


Posted at 21:18:06 +0100 by Sönke Ludwig

Comments for the post are currently disabled.