Blog

vibe.d 0.7.15 has been released

Header image
Sat, 27 Apr 2013 This release cleans up the API in several places (sheduling some symbols for deprecation) and largely improves the multi-threading primitives. It also features initial support for Win64 and a revamped logging system, as well as authentication support for the MongoDB client and a lot of smaller enhancements.

Features and improvements

  • Improved the logging system with pluggable loggers, more specified verbose log levels, an HTML logger, and proper use of stdout/stderr
  • Added basic compile support for 64-bit Windows (using the "win32" driver)
  • Add a scoped alternative version of vibe.core.concurrency.lock (used for safe access to shared objects with unshared methods)
  • Add support to repeat the idle event until a new message arrives
  • Task is now weakly isolated and can thus be passed to other threads using runWorkerTask
  • Implemented digest authentication in the MongoDB client (by Christian Schneider aka HowToMeetLadies) - pull #218
  • The number of worker threads is now core.cpuid.threadsPerCPU
  • TaskMutex is now fully thread safe and has much lower overhead when no contention happens
  • TaskCondition now also works with a plain Mutex in addition to a TaskMutex
  • Removed the deprecated Mutex alias
  • Renamed Signal to ManualEvent to avoid confusion with other kinds of "signals"
  • MemoryStream now supports dynamically growing to the buffer limit
  • HttpServer will now drop incoming connections that don't send data within 10 seconds after the connection has been established
  • Added a new createTimer overload that doesn't automatically arm the timer after creation
  • exitEventLoop now by default also shuts down the worker threads (if enableWorkerThreads was called)
  • Added new command line options "--vv", "--vvv" and "--vvvv" to specify more verbose logging
  • Added connection pooling to the Redis client (by Junho Nurminen aka jupenur) - pull #199
  • Various documentation improvements and better adherence to the style guide
  • Compiles with DMD 2.063 (mostly by Vladimir Panteleev aka CyberShadow) - pull #207
  • All examples now use exact imports rather than using import vibe.vibe; or import vibe.d;
  • Moved basic WWW form parsing from vibe.http.form to vibe.inet.webform to reduce intermodule dependencies and improve compile time
  • MongoDB URL parsing code uses vibe.inet.webform to parse query string arguments now instead of std.regex - improves compile time
  • Much more complete REST interface generator example (by Михаил Страшун aka Dicebot) - pull #210
  • Updated OpenSSL DLLs to 1.0.1e (important security fixes)
  • Renamed EventedObject.isOwner to amOwner
  • Improved intermodule dependencies, configuration option/file handling and added pragma(lib) (using "--version=VibePragmaLib") for more comfortable building without dub/vibe (by Vladimir Panteleev aka CyberShadow) - pull #211
  • Implemented an automatic command line help screen (inferred from calls to vibe.core.args.getOption)
  • Added meaningful error messages when the connection to a MongoDB or Redis server fails
  • Deprecated vibe.http.server.startListening, which is not necessary anymore

Bug fixes

  • Fixed vibe.core.concurrency.receiveTimeout to actually work at all
  • Fixed Win32Timer.stop to reset the pending state and allow repeated calls
  • Fixed HttpClient to avoid running into keep-alive timeouts (will close the connection 2 seconds before the timeout now)
  • Fixed HttpClient to properly handle responses without a "Keep-Alive" header
  • Fixed isWeaklyIsolated for structs containing functions
  • Fixed all invalid uses of countUntil where std.string.indexOf should have been used instead - issue #205
  • Fixed spelling of the "--distport" command line switch and some documentation - pull #203, pull #204
  • Fixed spurious error messages when accepting connections in the libevent driver (by Vladimir Panteleev aka CyberShadow) - pull #207
  • Fixed adjusting of method names in the REST interface generator for sub interfaces (by Михаил Страшун aka Dicebot) - pull #210
  • Fixed falling back to IPv4 if listening on IPv6 fails when calling listenTCP without a bind address
  • Fixed Libevent2MenualEvent.~this to not access GC memory which may already be finalized
  • Fixed Win32TCPConnection.peerAddress and Win32UDPConnection.bindAddress
  • Partially fixed automatic event loop exit in the Win32 driver (use -version=VibePartialAutoExit for now) - pull #213
  • Fixed renderCompat to work with const parameters
  • Fixed an error in the Deimos bindings (by Henry Robbins Gouk) - pull #220
  • Fixed a compilation error in the REST interface client (multiple definitions of "url__")

Download

http://vibed.org/download?file=vibed-0.7.15.zip

http://github.com/rejectedsoftware/vibe.d/

Posted at 12:47:26 +0200 by Sönke Ludwig 0 comments

vibe.d 0.7.14 has been released

Header image
Fri, 22 Mar 2013 A 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

Download

http://vibed.org/download?file=vibed-0.7.14.zip

http://github.com/rejectedsoftware/vibe.d/

Posted at 09:10:14 +0200 by Sönke Ludwig 0 comments

vibe.d 0.7.13 has been released

Header image
Sun, 24 Feb 2013 This releases some issues with the HttpClient in conjunction with SSL connection and contains a lot of cleaning up. Many modules and symbols have been deprecated or renamed to streamline the API and reduce redundant functionality with Phobos.

Features and improvements

  • Compiles with the latest DUB, which is now the recommended way to build vibe.d projects
  • Changed all public enums to use Phobos' naming convention (except for JSON and BSON)
  • Moved vibe.http.common.StrMapCI to vibe.inet.nessage.InetHeaderMap
  • Deprecated all hash modules in vibe.crypto in favor of std.digest
  • Deprecated the vibe.crypto.ssl module (functionality moved to vibe.stream.ssl)
  • Deprecated a number of functions that are available in Phobos
  • Deprecated the setter methods in the Cookie class

Bug fixes

  • Fixed connection unlocking in the HttpClient
  • Fixed detection of unsuccessful SSL connection attempts
  • Fixed freeing of SSL/BIO contexts
  • Fixed some places in the deprecated VPM to use Path.toNativeString() instead of Path.toString()
  • Fixed the package.json file of the benchmark project
  • Fixed cross-thread incovations of vibe.core.signal.Signal in the Win32 driver
  • Fixed compilation on DMD 2.062 - issue #183, issue #184

Download

http://vibed.org/download?file=vibed-0.7.13.zip

http://github.com/rejectedsoftware/vibe.d/

Posted at 09:54:29 +0200 by Sönke Ludwig 0 comments

vibe.d 0.7.12 has been released

Header image
Mon, 11 Feb 2013 Main changes are a refactored MiongoDB client, important fixes to the HttpClient and memory alignment fixes in the custom allocators. The library and all examples are now also valid DUB* packages as a first step to remove the 'vibe' script in favor of the more powerful 'dub'.

Features and improvements

  • Big refactoring of the MongoDB interface to be more consistent with its API (by Михаил Страшун aka Dicebot) - pull #171
  • Added a range interface to MongoCursor - redo of pull #172
  • Added a dub compatible "package.json" file for vibe.d and all example projects
  • Parameters can be made optional for registerFormInterface now (by Robert Klotzner aka eskimor) - issue #156
  • The REST interface generator also supports optional parameters by defining default parameter values
  • Added Task.interrupt(), Task.join() and Task.running
  • Improved detection of needed imports in the REST interface generater (by Михаил Страшун aka Dicebot) - pull #164
  • Partially implemented zero-copy file transfers (still disabled for libevent) - issue #143
  • Added HttpRequest.contentType and contentTypeParameters to avoid errors by direct comparison with the "Content-Type" header - issue #154
  • Added a small forward compatibility fix for DUB packages ("vibe.d" is ignored as a dependency)
  • Cleaned up the function names for writing out Json objects as a string and added convenience methods (partially done in pull #166 by Joshua Niehus)
  • Renamed HttpRequest.url to HttpRequest.requestUrl and added HttpRequest.fullUrl
  • Added the possibility to write a request body in chunked transfer mode in the HttpClient
  • Added HttpServerRequest.ssl to determine if a request was sent encryted
  • Changed several interfaces to take scope delegates to avoid useless GC allocations
  • Removed the in_url parameter from Path.toString - now assumed to be true
  • SysTime and DateTime are now specially treated by the JSON/BSON serialization code
  • Refactored the Cookie interface to properly use @property (by Nick Sabalausky aka Abcissa) - pull #176
  • Added HttpRouter as an interface for UrlRouter (by Laurie Clark-Michalek aka bluepeppers) - pull #177
  • Changed HttpFileServerSettings.maxAge from long to Duration (by Nick Sabalausky aka Abcissa) - pull #178
  • Added HttpFileServerSettings.preWriteCallback (by Nick Sabalausky aka Abcissa) - pull #180

Bug fixes

  • Fixed matching of the host name in HttpServer - is case insensitive now
  • Fixed issues in ConnectionPool and HttpClient that caused InvalidMemoryOperationError and invalid multiplexed requests
  • Fixed GCAllocator and PoolAllocator to enforce proper alignment
  • Fixed passing of misaligned base pointers to free() in MallocAllocator - at least 32-bit Linux seems to choke on it - issue #157
  • Fixed listenTcp without an explicit bind address - now returns an array of listeners with one entry per IP protocol version
  • Fixed "Connection: close" hangs also for HTTP/1.0 clients - those that depended on this behavior are broken anyway - [issue #147][issue147]
  • Fixed possible invalid line markers in the mixin generated by the Diet compiler - issue #155
  • Fixed all uses of render!() in the example projects by replacing them with renderCompat!() - issue 159
  • Fixed concatenation of Path objects, where the LHS is not normalized
  • Fixed serializeToBson in conjunction with read-only fields (by Михаил Страшун aka Dicebot) - pull #168
  • Fixed a possible endless loop caused by ChunkedOutputStream due to an inconsistent redundant field
  • Fixed serializeToJson in conjunction with read-only fields (same fix as for BSON)
  • Fixed download ignoring the port property of the target URL
  • Fixed termination of Fibers by exceptions of already terminated tasks
  • Fixed propagation of HttpStatusException in the REST interface generator (by Михаил Страшун aka Dicebot) - pull #173
  • Fixed handling of multiple cookies with the same name HttpServerRequest.cookies.getAll() can now be used to query them - fixes [issue #174][issue174]
  • Fixed WebSocket.connected - issue #169
  • Fixed accepting of invalid JSON syntax - issue #161
  • Fixed use of tmpnam on Posix by replacing with mkstemps, still used on Windows - issue #137
  • Fixed ZlibInputStream.empty to be consistent with leastSize

Download

http://vibed.org/download?file=vibed-0.7.12.zip

http://github.com/rejectedsoftware/vibe.d/

* See the DUB package registry

Posted at 10:06:05 +0200 by Sönke Ludwig 0 comments

Pages: 1 2 3 4