--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE group [
+<!ENTITY mdash "—">
+]>
+<!-- $Id$ -->
+<group from="1.0.4" to="1.1">
+ <subsystem>
+ <name>varnishd</name>
+
+ <change type="enh" ref="1388">
+ <para>Readability of the C source code generated from VCL code
+ has been improved.</para>
+ </change>
+
+ <change type="enh" ref="1389">
+ <para>Equality (<literal>==</literal>) and inequality
+ (<literal>!=</literal>) operators have been implemented for IP
+ addresses (which previously could only be compared using
+ ACLs).</para>
+ </change>
+
+ <change type="enh" ref="1390">
+ <para>The address of the listening socket on which the client
+ connection was received is now available to VCL as the
+ <varname>server.ip</varname> variable.</para>
+ </change>
+
+ <change type="enh" ref="1395,1397,1398">
+ <para>Each object's hash key is now computed based on a string
+ which is available to VCL as <varname>req.hash</varname>. A VCL
+ hook named <varname>vcl_hash</varname> has been added to allow
+ VCL scripts to control hash generation (for instance, whether or
+ not to include the value of the <literal>Host:</literal> header
+ in the hash).</para>
+ </change>
+
+ <change type="bug" ref="1423,1559">
+ <para>The setup code for listening sockets has been modified to
+ detect and handle situations where a host name resolves to
+ multiple IP addresses. It will now attempt to bind to each IP
+ address separately, and report a failure only if none of them
+ worked.</para>
+ </change>
+
+ <change type="enh" ref="1474">
+ <para>Network or protocol errors that occur while retrieving an
+ object from a backend server now result in a synthetic error
+ page being inserted into the cache with a 30-second TTL. This
+ should help avoid driving an overburdened backend server into
+ the ground by repeatedly requesting the same object.</para>
+ </change>
+
+ <change type="enh" ref="1482">
+ <para>The child process will now drop root privileges
+ immediately upon startup. The user and group to use are
+ specified with the <varname>user</varname> and
+ <varname>group</varname> run-time parameters, which default to
+ <literal>nobody</literal> and <literal>nogroup</literal>,
+ respectively. Other changes have been made in an effort to
+ increase the isolation between parent and child, and reduce the
+ impact of a compromise of the child process.</para>
+ </change>
+
+ <change type="enh" ref="1506">
+ <para>Objects which are received from the backend with a
+ <literal>Vary:</literal> header are now stored separately
+ according to the values of the headers specified in
+ <literal>Vary:</literal>. This allows Varnish to correctly
+ cache e.g. compressed and uncompressed versions of the same
+ object.</para>
+ </change>
+
+ <change type="enh" ref="1521,1524,1525,1526,1528,1532,1533,1572,1573,1581">
+ <para>Each Varnish instance now has a name, which by default is
+ the host name of the machine it runs on, but can be any string
+ that would be valid as a relative or absolute directory name.
+ It is used to construct the name of a directory in which the
+ server state as well as all temporary files are stored. This
+ makes it possible to run multiple Varnish instances on the same
+ machine without conflict.</para>
+ </change>
+
+ <change type="enh" ref="1549">
+ <para>When invoked with the <option>-C</option> option,
+ <command>varnishd</command> will now not just translate the VCL
+ code to C, but also compile the C code and attempt to load the
+ resulting shared object.</para>
+ </change>
+
+ <change type="enh" ref="1552,1576">
+ <para>Attempts by VCL code to reference a variable outside its
+ scope or to assign a value to a read-only variable will now
+ result in compile-time rather than run-time errors.</para>
+ </change>
+
+ <change type="enh" ref="1557,1558">
+ <para>The new command-line option <option>-F</option> will make
+ <command>varnishd</command> run in the foreground, without
+ enabling debugging.</para>
+ </change>
+
+ <change type="enh" ref="1560">
+ <para>New VCL variables have been introduced to allow inspection
+ and manipulation of the request sent to the backend
+ (<varname>bereq.request</varname>, <varname>bereq.url</varname>,
+ <varname>bereq.proto</varname> and
+ <varname>bereq.http</varname>) and the response to the client
+ (<varname>resp.proto</varname>, <varname>resp.status</varname>,
+ <varname>resp.response</varname> and
+ <varname>resp.http</varname>).</para>
+ </change>
+
+ <change type="enh" ref="1564,1565">
+ <para>Statistics from the storage code (including the amount of
+ data and free space in the cache) are now available to
+ <command>varnishstat</command> and other statistics-gathering
+ tools.</para>
+ </change>
+
+ <change type="enh" ref="1548,1561,1567,1568,1570,1586">
+ <para>Objects are now kept on an LRU list which is kept loosely
+ up-to-date (to within a few seconds). When cache runs out, the
+ objects at the tail end of the LRU list are discarded one by one
+ until there is enough space for the freshly requested object(s).
+ A VCL hook, <function>vcl_discard</function>, is allowed to
+ inspect each object and determine its fate by returning either
+ <command>keep</command> or <command>discard</command>.</para>
+ </change>
+
+ <change type="enh" ref="1612,1640">
+ <para>A new VCL hook, <function>vcl_deliver</function>, provides
+ a chance to adjust the response before it is sent to the
+ client.</para>
+ </change>
+
+ <change type="enh" ref="1626">
+ <para>A new management command, <command>vcl.show</command>,
+ displays the VCL source code of any loaded configuration.</para>
+ </change>
+
+ <change type="enh" ref="1628">
+ <para>A new VCL variable, <varname>now</varname>, provides VCL
+ scripts with the current time in seconds since the epoch.</para>
+ </change>
+
+ <change type="enh" ref="1628,1629,1630">
+ <para>A new VCL variable, <varname>obj.lastuse</varname>,
+ reflects the time in seconds since the object in question was
+ last used.</para>
+ </change>
+
+ <change type="enh" ref="1645,1646,1648">
+ <para>VCL scripts can now add an HTTP header (or modify the
+ value of an existing one) by assigning a value to the
+ corresponding variable, and strip an HTTP header by using the
+ <command>remove</command> keyword.</para>
+ </change>
+ </subsystem>
+
+ <subsystem>
+ <name>varnishadm</name>
+
+ <change type="enh" ref="1502">
+ <para>This is a new utility which sends a single command to a
+ Varnish server's management port and prints the result to
+ <varname>stdout</varname>, greatly simplifying the use of the
+ management port from scripts.</para>
+ </change>
+ </subsystem>
+
+ <subsystem>
+ <name>varnishhist</name>
+
+ <change type="enh" ref="1593">
+ <para>The user interface has been greatly improved; the
+ histogram will be automatically rescaled and redrawn when the
+ window size changes, and it is updated regularly rather than at
+ a rate dependent on the amount of log data gathered. In
+ addition, the name of the Varnish instance being watched is
+ displayed in the upper right corner.</para>
+ </change>
+ </subsystem>
+
+ <subsystem>
+ <name>varnishncsa</name>
+
+ <change type="enh" ref="1479">
+ <para>In addition to client traffic,
+ <command>varnishncsa</command> can now also process log data
+ from backend traffic.</para>
+ </change>
+ </subsystem>
+
+ <subsystem>
+ <name>varnishreplay</name>
+
+ <change type="enh" ref="1574,1594,1595,1597,1598,1620,1623,1624,1625">
+ <para>This new utility will attempt to recreate the HTTP traffic
+ which resulted in the raw Varnish log data which it is
+ fed.</para>
+ </change>
+ </subsystem>
+
+ <subsystem>
+ <name>varnishstat</name>
+
+ <change type="enh" ref="1587">
+ <para>Don't print lifetime averages when it doesn't make any
+ sense—for instance, there is no point in dividing the
+ amount in bytes of free cache space by the lifetime in seconds
+ of the <command>varnishd</command> process.</para>
+ </change>
+
+ <change type="enh" ref="1589,1590,1591">
+ <para>The user interface has been greatly improved;
+ <command>varnishstat</command> will no longer print more than
+ fits in the terminal, and will respond correctly to window
+ resize events. The output produced in one-shot mode has been
+ modified to include symbolic names for each entry. In addition,
+ the name of the Varnish instance being watched is displayed in
+ the upper right corner in curses mode.</para>
+ </change>
+ </subsystem>
+
+ <subsystem>
+ <name>varnishtop</name>
+
+ <change type="enh" ref="1592,1596">
+ <para>The user interface has been greatly improved;
+ <command>varnishtop</command> will now respond correctly to
+ window resize events, and one-shot mode (<option>-1</option>)
+ actually works. In addition, the name of the Varnish instance
+ being watched is displayed in the upper right corner in curses
+ mode.</para>
+ </change>
+ </subsystem>
+</group>