From 0b78792bbe61fec420e4e7298d145ec7d498f8f2 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 26 Nov 2017 19:25:23 +0100 Subject: [PATCH] [RELEASE] Released version 1.8.0 Released version 1.8.0 with the following main changes : - BUG/MEDIUM: stream: don't automatically forward connect nor close - BUG/MAJOR: stream: ensure analysers are always called upon close - BUG/MINOR: stream-int: don't try to read again when CF_READ_DONTWAIT is set - MEDIUM: mworker: Add systemd `Type=notify` support - BUG/MEDIUM: cache: free callback to remove from tree - CLEANUP: cache: remove unused struct - MEDIUM: cache: enable the HTTP analysers - CLEANUP: cache: remove wrong comment - MINOR: threads/atomic: rename local variables in macros to avoid conflicts - MINOR: threads/plock: rename local variables in macros to avoid conflicts - MINOR: threads/atomic: implement pl_mb() in asm on x86 - MINOR: threads/atomic: implement pl_bts() on non-x86 - MINOR: threads/build: atomic: replace the few inlines with macros - BUILD: threads/plock: fix a build issue on Clang without optimization - BUILD: ebtree: don't redefine types u32/s32 in scope-aware trees - BUILD: compiler: add a new type modifier __maybe_unused - BUILD: h2: mark some inlined functions "unused" - BUILD: server: check->desc always exists - BUG/MEDIUM: h2: properly report connection errors in headers and data handlers - MEDIUM: h2: add a function to emit an HTTP/1 request from a headers list - MEDIUM: h2: change hpack_decode_headers() to only provide a list of headers - BUG/MEDIUM: h2: always reassemble the Cookie request header field - BUG/MINOR: systemd: ignore daemon mode - CONTRIB: spoa_example: allow to compile outside HAProxy. - CONTRIB: spoa_example: remove bref, wordlist, cond_wordlist - CONTRIB: spoa_example: remove last dependencies on type "sample" - CONTRIB: spoa_example: remove SPOE enums that are useless for clients - CLEANUP: cache: reorder includes - MEDIUM: shctx: use unsigned int for len and block_count - MEDIUM: cache: "show cache" on the cli - BUG/MEDIUM: cache: use key=0 as a condition for freeing - BUG/MEDIUM: cache: refcount forbids to free the objects - BUG/MEDIUM: cache fix cli_kws structure - BUG/MEDIUM: deinit: correctly deinitialize the proxy and global listener tasks - BUG/MINOR: ssl: Always start the handshake if we can't send early data. - MINOR: ssl: Don't disable early data handling if we could not write. - MINOR: pools: prepare functions to override malloc/free in pools - MINOR: pools: implement DEBUG_UAF to detect use after free - BUG/MEDIUM: threads/time: fix time drift correction - BUG/MEDIUM: threads/time: maintain a common time reference between all threads - MINOR: sample: Add "thread" sample fetch - BUG/MINOR: Use crt_base instead of ca_base when crt is parsed on a server line - BUG/MINOR: stream: fix tv_request calculation for applets - BUG/MAJOR: h2: always remove a stream from the send list before freeing it - BUG/MAJOR: threads/task: dequeue expired tasks under the WQ lock - MINOR: ssl: Handle reading early data after writing better. - MINOR: mux: Make sure every string is woken up after the handshake. - MEDIUM: cache: store sha1 for hashing the cache key - MINOR: http: implement the "http-request reject" rule - MINOR: h2: send RST_STREAM before GOAWAY on reject - MEDIUM: h2: don't gracefully close the connection anymore on Connection: close - MINOR: h2: make use of client-fin timeout after GOAWAY - MEDIUM: config: ensure that tune.bufsize is at least 16384 when using HTTP/2 - MINOR: ssl: Handle early data with BoringSSL - BUG/MEDIUM: stream: always release the stream-interface on abort - BUG/MEDIUM: cache: free ressources in chn_end_analyze - MINOR: cache: move the refcount decrease in the applet release - BUG/MINOR: listener: Allow multiple "process" options on "bind" lines - MINOR: config: Support a range to specify processes in "cpu-map" parameter - MINOR: config: Slightly change how parse_process_number works - MINOR: config: Export parse_process_number and use it wherever it's applicable - MINOR: standard: Add my_ffsl function to get the position of the bit set to one - MINOR: config: Add auto-increment feature for cpu-map - MINOR: config: Support partial ranges in cpu-map directive - MINOR:: config: Remove thread-map directive - MINOR: config: Add the threads support in cpu-map directive - MINOR: config: Add threads support for "process" option on "bind" lines - MEDIUM: listener: Bind listeners on a thread subset if specified - CLEANUP: debug: Use DPRINTF instead of fprintf into #ifdef DEBUG_FULL/#endif - CLEANUP: log: Rename Alert/Warning in ha_alert/ha_warning - MINOR/CLEANUP: proxy: rename "proxy" to "proxies_list" - CLEANUP: pools: rename all pool functions and pointers to remove this "2" - DOC: update the roadmap file with the latest changes merged in 1.8 - DOC: fix mangled version in peers protocol documentation - DOC: add initial peers protovol v2.0 documentation. - DOC: mention William as maintainer of the cache and master-worker - DOC: add Christopher and Emeric as maintainers of the threads - MINOR: cache: replace a fprint() by an abort() - MEDIUM: cache: max-age configuration keyword - DOC: explain HTTP2 timeout behavior - DOC: cache: configuration and management - MAJOR: mworker: exits the master on failure - BUG/MINOR: threads: don't drop "extern" on the lock in include files - MINOR: task: keep a pointer to the currently running task - MINOR: task: align the rq and wq locks - MINOR: fd: cache-align fdtab and fdcache locks - MINOR: buffers: cache-align buffer_wq_lock - CLEANUP: server: reorder some fields in struct server to save 40 bytes - CLEANUP: proxy: slightly reorder the struct proxy to reduce holes - CLEANUP: checks: remove 16 bytes of holes in struct check - CLEANUP: cache: more efficiently pack the struct cache - CLEANUP: fd: place the lock at the beginning of struct fdtab - CLEANUP: pools: align pools on a cache line - DOC: config: add a few bits about how to configure HTTP/2 - BUG/MAJOR: threads/queue: avoid recursive locking in pendconn_get_next_strm() - BUILD: Makefile: reorder object files by size --- CHANGELOG | 98 +++++++++++++++++++++++++++++++++++++++++++ README | 13 +++--- VERDATE | 2 +- VERSION | 2 +- doc/configuration.txt | 2 +- examples/haproxy.spec | 5 ++- 6 files changed, 112 insertions(+), 10 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 35fa752ff..4efae7a53 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,104 @@ ChangeLog : =========== +2017/11/26 : 1.8.0 + - BUG/MEDIUM: stream: don't automatically forward connect nor close + - BUG/MAJOR: stream: ensure analysers are always called upon close + - BUG/MINOR: stream-int: don't try to read again when CF_READ_DONTWAIT is set + - MEDIUM: mworker: Add systemd `Type=notify` support + - BUG/MEDIUM: cache: free callback to remove from tree + - CLEANUP: cache: remove unused struct + - MEDIUM: cache: enable the HTTP analysers + - CLEANUP: cache: remove wrong comment + - MINOR: threads/atomic: rename local variables in macros to avoid conflicts + - MINOR: threads/plock: rename local variables in macros to avoid conflicts + - MINOR: threads/atomic: implement pl_mb() in asm on x86 + - MINOR: threads/atomic: implement pl_bts() on non-x86 + - MINOR: threads/build: atomic: replace the few inlines with macros + - BUILD: threads/plock: fix a build issue on Clang without optimization + - BUILD: ebtree: don't redefine types u32/s32 in scope-aware trees + - BUILD: compiler: add a new type modifier __maybe_unused + - BUILD: h2: mark some inlined functions "unused" + - BUILD: server: check->desc always exists + - BUG/MEDIUM: h2: properly report connection errors in headers and data handlers + - MEDIUM: h2: add a function to emit an HTTP/1 request from a headers list + - MEDIUM: h2: change hpack_decode_headers() to only provide a list of headers + - BUG/MEDIUM: h2: always reassemble the Cookie request header field + - BUG/MINOR: systemd: ignore daemon mode + - CONTRIB: spoa_example: allow to compile outside HAProxy. + - CONTRIB: spoa_example: remove bref, wordlist, cond_wordlist + - CONTRIB: spoa_example: remove last dependencies on type "sample" + - CONTRIB: spoa_example: remove SPOE enums that are useless for clients + - CLEANUP: cache: reorder includes + - MEDIUM: shctx: use unsigned int for len and block_count + - MEDIUM: cache: "show cache" on the cli + - BUG/MEDIUM: cache: use key=0 as a condition for freeing + - BUG/MEDIUM: cache: refcount forbids to free the objects + - BUG/MEDIUM: cache fix cli_kws structure + - BUG/MEDIUM: deinit: correctly deinitialize the proxy and global listener tasks + - BUG/MINOR: ssl: Always start the handshake if we can't send early data. + - MINOR: ssl: Don't disable early data handling if we could not write. + - MINOR: pools: prepare functions to override malloc/free in pools + - MINOR: pools: implement DEBUG_UAF to detect use after free + - BUG/MEDIUM: threads/time: fix time drift correction + - BUG/MEDIUM: threads/time: maintain a common time reference between all threads + - MINOR: sample: Add "thread" sample fetch + - BUG/MINOR: Use crt_base instead of ca_base when crt is parsed on a server line + - BUG/MINOR: stream: fix tv_request calculation for applets + - BUG/MAJOR: h2: always remove a stream from the send list before freeing it + - BUG/MAJOR: threads/task: dequeue expired tasks under the WQ lock + - MINOR: ssl: Handle reading early data after writing better. + - MINOR: mux: Make sure every string is woken up after the handshake. + - MEDIUM: cache: store sha1 for hashing the cache key + - MINOR: http: implement the "http-request reject" rule + - MINOR: h2: send RST_STREAM before GOAWAY on reject + - MEDIUM: h2: don't gracefully close the connection anymore on Connection: close + - MINOR: h2: make use of client-fin timeout after GOAWAY + - MEDIUM: config: ensure that tune.bufsize is at least 16384 when using HTTP/2 + - MINOR: ssl: Handle early data with BoringSSL + - BUG/MEDIUM: stream: always release the stream-interface on abort + - BUG/MEDIUM: cache: free ressources in chn_end_analyze + - MINOR: cache: move the refcount decrease in the applet release + - BUG/MINOR: listener: Allow multiple "process" options on "bind" lines + - MINOR: config: Support a range to specify processes in "cpu-map" parameter + - MINOR: config: Slightly change how parse_process_number works + - MINOR: config: Export parse_process_number and use it wherever it's applicable + - MINOR: standard: Add my_ffsl function to get the position of the bit set to one + - MINOR: config: Add auto-increment feature for cpu-map + - MINOR: config: Support partial ranges in cpu-map directive + - MINOR:: config: Remove thread-map directive + - MINOR: config: Add the threads support in cpu-map directive + - MINOR: config: Add threads support for "process" option on "bind" lines + - MEDIUM: listener: Bind listeners on a thread subset if specified + - CLEANUP: debug: Use DPRINTF instead of fprintf into #ifdef DEBUG_FULL/#endif + - CLEANUP: log: Rename Alert/Warning in ha_alert/ha_warning + - MINOR/CLEANUP: proxy: rename "proxy" to "proxies_list" + - CLEANUP: pools: rename all pool functions and pointers to remove this "2" + - DOC: update the roadmap file with the latest changes merged in 1.8 + - DOC: fix mangled version in peers protocol documentation + - DOC: add initial peers protovol v2.0 documentation. + - DOC: mention William as maintainer of the cache and master-worker + - DOC: add Christopher and Emeric as maintainers of the threads + - MINOR: cache: replace a fprint() by an abort() + - MEDIUM: cache: max-age configuration keyword + - DOC: explain HTTP2 timeout behavior + - DOC: cache: configuration and management + - MAJOR: mworker: exits the master on failure + - BUG/MINOR: threads: don't drop "extern" on the lock in include files + - MINOR: task: keep a pointer to the currently running task + - MINOR: task: align the rq and wq locks + - MINOR: fd: cache-align fdtab and fdcache locks + - MINOR: buffers: cache-align buffer_wq_lock + - CLEANUP: server: reorder some fields in struct server to save 40 bytes + - CLEANUP: proxy: slightly reorder the struct proxy to reduce holes + - CLEANUP: checks: remove 16 bytes of holes in struct check + - CLEANUP: cache: more efficiently pack the struct cache + - CLEANUP: fd: place the lock at the beginning of struct fdtab + - CLEANUP: pools: align pools on a cache line + - DOC: config: add a few bits about how to configure HTTP/2 + - BUG/MAJOR: threads/queue: avoid recursive locking in pendconn_get_next_strm() + - BUILD: Makefile: reorder object files by size + 2017/11/19 : 1.8-rc4 - BUG/MEDIUM: cache: does not cache if no Content-Length - BUILD: thread/pipe: fix build without threads diff --git a/README b/README index 47a6b9603..6bb85e214 100644 --- a/README +++ b/README @@ -3,17 +3,18 @@ ---------------------- version 1.8 willy tarreau - 2017/11/19 + 2017/11/26 1) How to build it ------------------ -This is a development version, so it is expected to break from time to time, -to add and remove features without prior notification and it should not be used -in production. If you are not used to build from sources or if you are not used -to follow updates then it is recommended that instead you use the packages provided -by your software vendor or Linux distribution. Most of them are taking this task +This version is a stable version, which means that it belongs to a branch which +will get some fixes for bugs as they are discovered. Versions which include the +suffix "-dev" are development versions and should be avoided in production. If +you are not used to build from sources or if you are not used to follow updates +then it is recommended that instead you use the packages provided by your +software vendor or Linux distribution. Most of them are taking this task seriously and are doing a good job at backporting important fixes. If for any reason you'd prefer a different version than the one packaged for your system, you want to be certain to have all the fixes or to get some commercial support, diff --git a/VERDATE b/VERDATE index 4226a953a..68f955925 100644 --- a/VERDATE +++ b/VERDATE @@ -1,2 +1,2 @@ $Format:%ci$ -2017/11/19 +2017/11/26 diff --git a/VERSION b/VERSION index 5eb070bca..27f9cd322 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8-rc4 +1.8.0 diff --git a/doc/configuration.txt b/doc/configuration.txt index 290a1175b..ca48cab6d 100644 --- a/doc/configuration.txt +++ b/doc/configuration.txt @@ -4,7 +4,7 @@ ---------------------- version 1.8 willy tarreau - 2017/11/19 + 2017/11/26 This document covers the configuration language as implemented in the version diff --git a/examples/haproxy.spec b/examples/haproxy.spec index 67e69403c..4c3b365de 100644 --- a/examples/haproxy.spec +++ b/examples/haproxy.spec @@ -1,6 +1,6 @@ Summary: HA-Proxy is a TCP/HTTP reverse proxy for high availability environments Name: haproxy -Version: 1.8-rc4 +Version: 1.8.0 Release: 1 License: GPL Group: System Environment/Daemons @@ -74,6 +74,9 @@ fi %attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name} %changelog +* Sun Nov 26 2017 Willy Tarreau +- updated to 1.8.0 + * Sun Nov 19 2017 Willy Tarreau - updated to 1.8-rc4