vibe.d beta banner
get vibe.d

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

vibe.d 0.8.1 release

vibe.d 0.8.1 release

Header image
Tue, 29 Aug 2017Apart from removing the old vibe-d:diet package in favor of diet-ng, this release most notably contains a number of performance improvements in the HTTP server, as well as improvements and fixes in the WebSocket code. Furthermore, initial OpenSSL 1.1.x support has been added and a few @safe related issues introduced in 0.8.0 have been fixed.

Features and improvements

  • Compiles on DMD 2.071.2 up to DMD 2.076.0-rc1
  • Removed vibe-d:diet sub package (superseded by diet-ng) - pull #1835
  • Web framework
    • Added convenience functions status and header to vibe.web.web (by Sebastian Wilzbach) - pull #1696
    • Added vibe.web.web.determineLanguageByHeader and improved the default language determination (by Jan Jurzitza aka WebFreak) - pull #1850
    • Added vibe.web.web.language property to determine the detected language (by Jan Jurzitza aka WebFreak) - pull #1860
    • Marked the global API functions in vibe.web.web as @safe - pull #1886
    • The REST interface generator avoids blindly instantiating serialization code for all parameters
    • No stack trace is shown on the generated error page anymore in case of bad (query/form) parameter formatting
  • HTTP sub system
    • The HTTP server now accepts a UTF-8 BOM for JSON requests (by Sebanstian Wilzbach) - pull #1799
    • Most parsing features activated by HTTPServerOption (for HTTPServerRequest) are now evaluated lazily instead - the corresponding options are now deprecated (by Sebastian Wilzbach):
      • .json / HTTPServerOption.parseJsonBody - pull #1677
      • .cookies / HTTPServerOption.parseCookies - pull #1801
      • .form / HTTPServerOption.parseFormBody - pull #1801
      • .files / HTTPServerOption.parseMultiPartBody - pull #1801
      • .query / HTTPServerOption.parseQueryString - pull #1821
      • .queryString, .username and .password are now always filled, regardless of HTTPServerOption.parseURL - pull #1821
    • HTTPServerRequest.peer is now computed lazily
    • Deprecated HTTPServerOption.distribute because of its non-thread-safe design
    • The HTTPServerSettings constructor now accepts a convenient string to set the bind address - pull #1810
    • listenHTTP accepts the same convenience string as HTTPServerSettings (by Sebastian Wilzbach) - pull #1816
    • Added HTTPReverseProxySettings.destination (URL) to made UDS destinations work (by Georgi Dimitrov) - pull #1813
    • Increased the network output chunk sizes from 256 to 1024 in the HTTP client/server
    • WebSocket messages now produce only a single network packet of possible (header and payload sent at once) - issue #1791, pull #1792
    • WebSocket API improvements (by Mathias Lang aka Geod24) - pull #1534, pull #1836
    • Renamed HTTPServerRequest.requestURL to requestURI
    • Added HTTPClientRequest.peerCertificate property
  • Serialization
    • Added deserialization support for unnamed Tuple!(...) (by Dentcho Bankov) - pull #1693
    • Added serialization support for named Tuple!(...) (by Dentcho Bankov) - pull #1662
  • Added UDP multicast properties (implemented for libevent, by Sebastian Koppe) - pull #1806
  • Markdown embedded URLs are now filtered by a whitelist to avoid URL based XSS exploits - issue #1845, pull #1846
  • lowerPrivileges is now marked @safe (by Sebastian Wilzbach) - pull #1807
  • Improved urlDecode to return a slice of its input if possible - pull #1828
  • Added DictionaryList.toString and deprecated alias byKeyValue this - issue #1873
  • Added support for defining a compatibility version VibeUseOpenSSL11 to build against OpenSSL 1.1.0 instead of 1.0.x (by Robert Schadek aka burner) - issue #1651, issue #1748, issue #1758, pull #1759
  • Added a Meson project file analogous to the 0.7.x branch (by Matthias Klumpp aka ximion) - pull #1894
  • The functions in now compile with non-`@safe' streams and ranges - pull #1902
  • Added TLSCertificateInformation._x509 as an temporary means to access the raw certificate (X509* for OpenSSL)

Bug fixes

  • Fixed "SSL_read was unsuccessful with ret 0" errors in the OpenSSL TLS implementation (by machindertech) - issue #1124, pull #1395
  • Fixed handling of Nullable!T in the web interface generator - invalid values are treated as an error now instead of as a null value
  • Fixed a compilation error in the Botan based TLS implementation
  • Fixed an assertion in the HTTP client by using a custom allocator instead of the buggy RegionAllocator
  • Fixed sending of WebSocket messages with a payload length of 65536
  • Fixed an intermittent failure at shutdown when using libasync - pull #1837
  • Fixed MongoDB SASL authentication when used within shared static this (by Sebastian Wilzbach) - pull #1841
  • Fixed authentication with default settings on modern MongoDB versions by defaulting to SCRAM-SHA-1 (by Sebastian Wilzbach) - issue #1785, issue #1843
  • Fixed the WebSocket ping logic - issue #1471, pull #1848
  • Fixed a cause of "dwarfeh(224) fatal error" during fatal app exit and possible an infinite loop by using abort() instead of exit()
  • Fixed URLRouter.match to accept delegate literals (by Sebastian Wilzbach) - pull #1866
  • Fixed a possible range error in the libasync driver
  • Fixed serialization of recursive data types to JSON (by Jan Jurzitza aka WebFreak) - issue #1855
  • Fixed MongoCursor.limit and made the API @safe (by Jan Jurzitza aka WebFreak) - issue #967, pull #1871
  • Fixed determining the host name in SyslogLogger (by Jan Jurzitza aka WebFreak) - pull #1874


Posted at 23:02:40 +0200 by Sönke Ludwig

Comments for the post are currently disabled.