vibe.d beta banner
get vibe.d

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

vibe.d 0.8.2 release

vibe.d 0.8.2 release

Header image
Tue, 12 Dec 2017The major changes in this release are HTTP forward proxy support, handling incoming HTTP requests on custom transports and a MongoDB based session store. On top of that, there are many smaller improvements in the HTTP server, web/REST generator, JSON/BSON support and the TLS sub system.

Features and improvements

  • Web/REST framework
    • Added support for @noRoute in the REST interface generator - issue #1934
    • Added support for @requiresAuth on REST interfaces in addition to classes - pull #1939
    • Added global request/response properties for the web interface generator (by Benjamin Schaaf) - issue #1937, pull #1938
    • The language list for @translationContext can now be specified as a compile-time constant array in addition to a tuple (by Jan Jurzitza aka WebFreak) - pull #1879
  • HTTP sub system
    • Added HTTP forward proxy support based on the existing reverse proxy code (by Matt Remmel) - pull #1893
    • Deprecated non-nothrow WebSocket handler callbacks - issue #1420, pull #1890
    • Added handleHTTPConnection to serve HTTP requests on a custom transport - pull #1929
    • Added HTTPServerRequest.requestPath as an InetPath property replacing .path to avoid encoding related issues - pull #1940
    • Added HTTPClientRequest.remoteAddress
    • Added HTTPListener.bindAddresses property, this allows querying the actual port when passing 0 to HTTPServerSettings.bindPort - issue #1818, pull #1930
    • Added SysTime/Duration based overloads for Cookie.expire/.maxAge - issue #1701, pull #1889
  • MongoDB driver
    • Added MongoSessionStore for MongoDB based HTTP session storage
    • The MongoDB driver now forwards server error messages (by Martin Nowak) - pull #1951
  • Extended the JSON parser to handle forward ranges in addition to random access ranges (by John Colvin) - pull #1906
  • Added std.uuid.UUID conversion support for Bson (by Denis Feklushkin) - pull #1404
  • Added "openssl-1.1" and "openssl-0.9" configurations to the vibe-d:tls package to enable switching the OpenSSL target version without having to define version constants - pull #1965
  • Added NativePath based overloads of TLSContext.usePrivateKeyFile and .useCertificateChainFile
  • Added setCommandLineArgs - can be used together with a VibeDisableCommandLineParsing version to customize command line parsing - pull #1916

Bug fixes

  • Fixed getting the X509 certificate for printing certificate errors on OpenSSL 1.1 (by Martin Nowak) - pull #1921
  • Fixed handling of out parameters in the REST interface (were erroneously read from the request) - issue #1933, pull #1935
  • Fixed an "orphan format specifier" error in the web interface handling code
  • Fixed the JSON parser to work at compile-time (by Benjamin Schaaf) - pull #1960
  • Fixed an error in the Botan TLS provider if used to serve HTTPS - issue #1918, pull #1964
  • Fixed a web interface generator compile error in case of an empty language list in the @translationContext - issue #1955, pull #1956
  • Fixed a bogus error during HTTP request finalization - issue #1966
  • Fixed the command line argument parser getting tripped up by druntime arguments ("--DRT-...") (by Martin Nowak) - pull #1944
  • Fixed a possible race condition when stopping a RedisListener (by Etienne Cimon) - pull #1201, pull #1971
  • Fixed support for TCPListenOptions.reusePort on macOS and FreeBSD - pull #1972
  • Fixed handling of CONNECT requests in the HTTP proxy server - pull #1973

Note about OpenSSL support

The OpenSSL 1.1.x support added by the last release received fixes for linker errors that ocurred on some systems. At the same time, the selection of the library version can now be done using a DUB build configuration in the "vibe-d:tls" package instead of defining the VibeOpenSSL11 version.

On systems that use the newer 1.1.x branch, this can be done on the DUB command line using --override-config vibe-d:tls/openssl-1.1. Alternatively, a using a sub configuration directive in the package recipe can be used:

SDL syntax:

dependency "vibe-d:tls" version="~>0.8.2"
subConfiguration "vibe-d:tls" "openssl-1.1"

JSON syntax:

    "dependencies": {
        "vibe-d:tls": "~>0.8.2"
    "subConfigurations": {
        "vibe-d:tls": "openssl-1.1"

For older systems there is also an "openssl-0.9" configuration that can be used in analogy to the above to build against the OpenSSL 0.9.8 branch.

Finally, there is a "botan" configuration for using the D port of the Botan library.


Posted at 20:37:09 +0100 by Sönke Ludwig

Comments for the post are currently disabled.