load balancer: added ring size and hash configuration options. This used to be configurable via runtime. The runtime
configuration was deleted without deprecation as we are fairly certain no one is using it.

log: added the ability to optionally log to a file instead of stderr via the
--log-path option.

Several features are deprecated as of the 1.4.0 release. They
will be removed at the beginning of the 1.5.0 release cycle. We explicitly call out that the
HttpFilterConfigFactory filter API has been deprecated in favor of
NamedHttpFilterConfigFactory.

As of this release, we now have an official breaking change policy. Note that there are numerous breaking configuration
changes in this release. They are not listed here. Future releases will adhere to the policy and
have clear documentation on deprecations and changes.

Bazel is now the canonical build system (replacing CMake). There have been a huge number of
changes to the development/build/test flow. See /bazel/README.md and
/ci/README.md for more information.

Outlier detection has been expanded to include success
rate variance, and all parameters are now configurable in both runtime and in the JSON
configuration.

TCP level listener and
cluster connections now
have configurable receive buffer limits at which point connection level back pressure is applied.
Full end to end flow control will be available in a future release.

Redis health checking has been added as an active
health check type. Full Redis support will be documented/supported in 1.4.0.

TCP health checking now supports a
“connect only” mode that only checks if the remote server can be connected to without
writing/reading any data.

BoringSSL is now the only supported TLS provider.
The default cipher suites and ECDH curves have been updated with more modern defaults for both
listener and
cluster connections.

The header value matchrate limit action has been expanded to include an expect
match parameter.

Route level HTTP rate limit configurations now do not inherit the virtual host level
configurations by default. The include_vh_rate_limits to inherit the virtual host level options if
desired.

HTTP routes can now add request headers on a per route and per virtual host basis via the
request_headers_to_add option.

Added CLI options for setting the logging file flush interval as well
as the drain/shutdown time during hot restart.

A very large number of performance enhancements for core HTTP/TCP proxy flows as well as a
few new configuration flags to allow disabling expensive features if they are not needed
(specifically request ID generation and dynamic response code stats).