All VCL Objects should now be defined before used
in particular, this is now required for ACLs. The error message for ACLs being used before being defined is confusing - see PR #2021:
Name <acl> is a reserved name
VCL names are restricted to alphanumeric characters, dashes (-) and underscores (_). In addition, the first character should be alphabetic. That is, the name should match "[A-Za-z][A-Za-z0-9_-]*".
Like strings, backends and integers can now be used as boolean expressions in if statements. See vcl(7) for details.
Add support to perform matches in assignments, obtaining a boolean as result:
set req.http.foo = req.http.bar ~ "bar";
Returned values from functions and methods' calls can be thrown away.
Added write access to bereq.body, the request body. Only unset is supported at this time.
We now send request bodies by default (see Request Body sent always / "cacheable POST"). To keep the previous behaviour add the following code before any return (..) statement in this subroutine:
if (bereq.method == "GET") {
unset bereq.body;
}