The code required to allow VCL to read obj.status, which had accidentally been left out, has now been added.
Varnish will now always include a Connection: header in its reply to the client, to avoid possible misunderstandings.
A bug that triggered an assertion failure when generating synthetic error documents has been corrected.
A new VCL function, purge_url, provides the same functionality as the url.purge management command.
Previously, Varnish assumed that the response body should be sent only if the request method was GET. This was a problem for custom request methods (such as PURGE), so the logic has been changed to always send the response body except in the specific case of a HEAD request.
Changes to run-time parameters are now correctly propagated to the child process.
Due to the way run-time parameters are initialized at startup, varnishd previously required the nobody user and the nogroup group to exist even if a different user and group were specified on the command line. This has been corrected.
Under certain conditions, the VCL compiler would carry on after a syntax error instead of exiting after reporting the error. This has been corrected.
The manner in which the hash string is assembled has been modified to reduce memory usage and memory-to-memory copying.
Before calling vcl_miss, Varnish assembles a tentative request object for the backend request which will usually follow. This object would be leaked if vcl_miss returned anything else than fetch. This has been corrected.
The code necessary to handle an error return from vcl_fetch and vcl_deliver had inadvertantly been left out. This has been corrected.
Varnish no longer prints a spurious "child died" message (the result of reaping the compiler process) after compiling a new VCL configuration.
Under some circumstances, due to an error in the workspace management code, Varnish would lose the "tail" of a request, i.e. the part of the request that has been received from the client but not yet processed. The most obvious symptom of this was that POST requests would work with some browsers but not others, depending on details of the browser's HTTP implementation. This has been corrected.
On some platforms, due to incorrect assumptions in the CLI code, the management process would crash while processing commands received over the management port. This has been corrected.
The top-level Makefile will now honor $DESTDIR when creating the state directory.
The Debian and RedHat packages are now split into three (main / lib / devel) as is customary.
A number of compile-time and run-time portability issues have been addressed.
The autogen.sh script had workarounds for problems with the GNU autotools on FreeBSD; these are no longer needed and have been removed.
The libcompat library has been renamed to libvarnishcompat and is now dynamic rather than static. This simplifies the build process and resolves an issue with the Mac OS X linker.