
Please note that this file is no longer maintained.  Please refer to the
changes files in doc/

Change log for Varnish 1.0.4

Changes between 1.0.3 and 1.0.4

varnishd

  • The request workflow has been redesigned to simplify request processing and
    eliminate code duplication. All codepaths which need to speak HTTP now
    share a single implementation of the protocol. Some new VCL hooks have been
    added, though they aren't much use yet. The only real user-visible change
    should be that Varnish now handles persistent backend connections correctly
    (see ticket #56).

  • Support for multiple listen addresses has been added.

  • An "include" facility has been added to VCL, allowing VCL code to pull in
    code fragments from multiple files.

  • Multiple definitions of the same VCL function are now concatenated into one
    in the order in which they appear in the source. This simplifies the
    mechanism for falling back to the built-in default for cases which aren't
    handled in custom code, and facilitates modularization.

  • The code used to format management command arguments before passing them on
    to the child process would underestimate the amount of space needed to hold
    each argument once quotes and special characters were properly escaped,
    resulting in a buffer overflow. This has been corrected.

  • The VCL compiler has been overhauled. Several memory leaks have been
    plugged, and error detection and reporting has been improved throughout.
    Parts of the compiler have been refactored to simplify future extension of
    the language.

  • A bug in the VCL compiler which resulted in incorrect parsing of the
    decrement (-=) operator has been fixed.

  • A new -C command-line option has been added which causes varnishd to
    compile the VCL code (either from a file specified with -f or the built-in
    default), print the resulting C code and exit.

  • When processing a backend response using chunked encoding, if a chunk
    header crosses a read buffer boundary, read additional bytes from the
    backend connection until the chunk header is complete.

  • A new ping_interval run-time parameter controls how often the management
    process checks that the worker process is alive.

  • A bug which would cause the worker process to dereference a NULL pointer
    and crash if the backend did not respond has been fixed.

  • In some cases, such as when they are used by AJAX applications to
    circumvent Internet Explorer's over-eager disk cache, it may be desirable
    to cache POST requests. However, the code path responsible for delivering
    objects from cache would only transmit the response body when replying to a
    GET request. This has been extended to also apply to POST.

    This should be revisited at a later date to allow VCL code to control
    whether the body is delivered.

  • Varnish now respects Cache-control: s-maxage, and prefers it to
    Cache-control: max-age if both are present.

    This should be revisited at a later date to allow VCL code to control which
    headers are used and how they are interpreted.

  • When loading a new VCL script, the management process will now load the
    compiled object to verify that it links correctly before instructing the
    worker process to load it.

  • A new -P command-line options has been added which causes varnishd to
    create a PID file.

  • The sendfile_threshold run-time parameter's default value has been set to
    infinity after a variety of sendfile()-related bugs were discovered on
    several platforms.

varnishlog

  • When grouping log entries by request, varnishlog attempts to collapse the
    log entry for a call to a VCL function with the log entry for the
    corresponding return from VCL. When two VCL calls were made in succession,
    varnishlog would incorrectly omit the newline between the two calls (see
    ticket #95).

  • New -D and -P command-line options have been added to daemonize and create
    a pidfile, respectively.

varnishncsa

  • The formatting callback has been largely rewritten for clarity, robustness
    and efficiency.

    If a request included a Host: header, construct and output an absolute URL.
    This makes varnishncsa output from servers which handle multiple virtual
    hosts far more useful.

Documentation

  • The documentation—especially the VCL documentation—has been greatly
    extended and improved.

Build system

  • The name and location of the curses or ncurses library is now correctly
    detected by the configure script instead of being hardcoded into affected
    Makefiles. This allows Varnish to build correctly on a wider range of
    platforms.

  • Compatibility shims for clock_gettime() are now correctly applied where
    needed, allowing Varnish to build on MacOS X.

  • The autogen.sh script will now correctly detect and warn about automake
    versions which are known not to work correctly.

