xref: /unit/CHANGES (revision 2707:1d63b0ce2394)
1*2707Szelenkov@nginx.com
2*2707Szelenkov@nginx.comChanges with Unit 1.32.0                                         27 Feb 2024
3*2707Szelenkov@nginx.com
4*2707Szelenkov@nginx.com    *) Feature: WebAssembly Components using WASI interfaces defined in
5*2707Szelenkov@nginx.com       wasi:http/proxy@0.2.0.
6*2707Szelenkov@nginx.com
7*2707Szelenkov@nginx.com    *) Feature: conditional access logging.
8*2707Szelenkov@nginx.com
9*2707Szelenkov@nginx.com    *) Feature: NJS variables access.
10*2707Szelenkov@nginx.com
11*2707Szelenkov@nginx.com    *) Feature: $request_id variable contains a string that is formed using
12*2707Szelenkov@nginx.com       random data and can be used as a unique request identifier.
13*2707Szelenkov@nginx.com
14*2707Szelenkov@nginx.com    *) Feature: options to set control socket permissions.
15*2707Szelenkov@nginx.com
16*2707Szelenkov@nginx.com    *) Feature: Ruby arrays in response headers, improving compatibility
17*2707Szelenkov@nginx.com       with Rack v3.0.
18*2707Szelenkov@nginx.com
19*2707Szelenkov@nginx.com    *) Feature: Python bytearray response bodies for ASGI applications.
20*2707Szelenkov@nginx.com
21*2707Szelenkov@nginx.com    *) Bugfix: router could crash while sending large files. Thanks to
22*2707Szelenkov@nginx.com       rustedsword.
23*2707Szelenkov@nginx.com
24*2707Szelenkov@nginx.com    *) Bugfix: serving static files from a network filesystem could lead to
25*2707Szelenkov@nginx.com       error.
26*2707Szelenkov@nginx.com
27*2707Szelenkov@nginx.com    *) Bugfix: "uidmap" and "gidmap" isolation options validation.
28*2707Szelenkov@nginx.com
29*2707Szelenkov@nginx.com    *) Bugfix: abstract UNIX socket name could be corrupted during
30*2707Szelenkov@nginx.com       configuration validation. Thanks to Alejandro Colomar.
31*2707Szelenkov@nginx.com
32*2707Szelenkov@nginx.com    *) Bugfix: HTTP header field value encoding could be misinterpreted in
33*2707Szelenkov@nginx.com       Python module.
34*2707Szelenkov@nginx.com
35*2707Szelenkov@nginx.com    *) Bugfix: Node.js http.createServer() accepts and ignores the "options"
36*2707Szelenkov@nginx.com       argument, improving compatibility with strapi applications, among
37*2707Szelenkov@nginx.com       others.
38*2707Szelenkov@nginx.com
39*2707Szelenkov@nginx.com    *) Bugfix: ServerRequest.flushHeaders() implemented in Node.js module to
40*2707Szelenkov@nginx.com       make it compatible with Next.js.
41*2707Szelenkov@nginx.com
42*2707Szelenkov@nginx.com    *) Bugfix: ServerRequest.httpVersion variable format in Node.js module.
43*2707Szelenkov@nginx.com
44*2707Szelenkov@nginx.com    *) Bugfix: Node.js module handles standard library imports prefixed with
45*2707Szelenkov@nginx.com       "node:", making it possible to run newer Nuxt applications, among
46*2707Szelenkov@nginx.com       others.
47*2707Szelenkov@nginx.com
48*2707Szelenkov@nginx.com    *) Bugfix: Node.js tarball location changed to avoid build/install
49*2707Szelenkov@nginx.com       errors.
50*2707Szelenkov@nginx.com
51*2707Szelenkov@nginx.com    *) Bugfix: Go module sets environment variables necessary for building
52*2707Szelenkov@nginx.com       on macOS/arm64 systems.
53*2707Szelenkov@nginx.com
542582Szelenkov@nginx.com
552582Szelenkov@nginx.comChanges with Unit 1.31.1                                         19 Oct 2023
562582Szelenkov@nginx.com
572582Szelenkov@nginx.com    *) Feature: allow to set the HTTP response status in Wasm module.
582582Szelenkov@nginx.com
592582Szelenkov@nginx.com    *) Feature: allow uploads larger than 4GiB in Wasm module.
602582Szelenkov@nginx.com
612582Szelenkov@nginx.com    *) Bugfix: application process could crash while rewriting URLs with
622582Szelenkov@nginx.com       query strings.
632582Szelenkov@nginx.com
642582Szelenkov@nginx.com    *) Bugfix: requests larger than about 64MiB could cause error in Wasm
652582Szelenkov@nginx.com       module.
662582Szelenkov@nginx.com
672582Szelenkov@nginx.com    *) Bugfix: when using many headers in Java module some of them could be
682582Szelenkov@nginx.com       corrupted due to memory realocation issue.
692582Szelenkov@nginx.com
702582Szelenkov@nginx.com    *) Bugfix: ServerRequest.destroy() implemented in Node.js module to make
712582Szelenkov@nginx.com       it compatible with some frameworks that might use it.
722582Szelenkov@nginx.com
732582Szelenkov@nginx.com    *) Bugfix: chunk argument of ServerResponse.write() can now be a
742582Szelenkov@nginx.com       Uint8Array to improve compatibility with Node.js 15.0.0 and above.
752582Szelenkov@nginx.com
762582Szelenkov@nginx.com    *) Bugfix: Node.JS unit-http NPM module now has appropriate default
772582Szelenkov@nginx.com       paths for macOS/arm64 systems.
782582Szelenkov@nginx.com
792582Szelenkov@nginx.com    *) Bugfix: build on musl libc with clang.
802582Szelenkov@nginx.com
812545Szelenkov@nginx.com
822545Szelenkov@nginx.comChanges with Unit 1.31.0                                         31 Aug 2023
832545Szelenkov@nginx.com
842545Szelenkov@nginx.com    *) Change: if building with njs, version 0.8.0 or later is now required.
852545Szelenkov@nginx.com
862545Szelenkov@nginx.com    *) Feature: technology preview of WebAssembly application module.
872545Szelenkov@nginx.com
882545Szelenkov@nginx.com    *) Feature: "response_headers" option to manage headers in the action
892545Szelenkov@nginx.com       and fallback.
902545Szelenkov@nginx.com
912545Szelenkov@nginx.com    *) Feature: HTTP response header variables.
922545Szelenkov@nginx.com
932545Szelenkov@nginx.com    *) Feature: ASGI lifespan state support. Thanks to synodriver.
942545Szelenkov@nginx.com
952545Szelenkov@nginx.com    *) Bugfix: ensure that $uri variable is not cached.
962545Szelenkov@nginx.com
972545Szelenkov@nginx.com    *) Bugfix: deprecated options were unavailable.
982545Szelenkov@nginx.com
992545Szelenkov@nginx.com    *) Bugfix: ASGI applications inaccessible over IPv6.
1002545Szelenkov@nginx.com
1012461Szelenkov@nginx.com
1022461Szelenkov@nginx.comChanges with Unit 1.30.0                                         10 May 2023
1032461Szelenkov@nginx.com
1042461Szelenkov@nginx.com    *) Change: remove Unix domain listen sockets upon reconfiguration.
1052461Szelenkov@nginx.com
1062461Szelenkov@nginx.com    *) Feature: basic URI rewrite support.
1072461Szelenkov@nginx.com
1082461Szelenkov@nginx.com    *) Feature: NJS loadable modules support.
1092461Szelenkov@nginx.com
1102461Szelenkov@nginx.com    *) Feature: per-application logging.
1112461Szelenkov@nginx.com
1122461Szelenkov@nginx.com    *) Feature: conditional logging of route selection.
1132461Szelenkov@nginx.com
1142461Szelenkov@nginx.com    *) Feature: support the keys API on the request objects in NJS.
1152461Szelenkov@nginx.com
1162461Szelenkov@nginx.com    *) Feature: default values for 'make install' pathnames such as prefix;
1172461Szelenkov@nginx.com       this allows to './configure && make && sudo make install'.
1182461Szelenkov@nginx.com
1192461Szelenkov@nginx.com    *) Feature: "server_version" setting to omit the version token from
1202461Szelenkov@nginx.com       "Server" header field.
1212461Szelenkov@nginx.com
1222461Szelenkov@nginx.com    *) Bugfix: request header field values could be corrupted in some cases;
1232461Szelenkov@nginx.com       the bug had appeared in 1.29.0.
1242461Szelenkov@nginx.com
1252461Szelenkov@nginx.com    *) Bugfix: PHP error handling (added missing 403 and 404 errors).
1262461Szelenkov@nginx.com
1272461Szelenkov@nginx.com    *) Bugfix: Perl applications crash on second responder call.
1282461Szelenkov@nginx.com
1292361Szelenkov@nginx.com
1302361Szelenkov@nginx.comChanges with Unit 1.29.1                                         28 Feb 2023
1312361Szelenkov@nginx.com
1322361Szelenkov@nginx.com    *) Bugfix: stop creating world-writeable directories.
1332361Szelenkov@nginx.com
1342361Szelenkov@nginx.com    *) Bugfix: memory leak related to NJS.
1352361Szelenkov@nginx.com
1362361Szelenkov@nginx.com    *) Bugfix: path parsing in PHP applications.
1372361Szelenkov@nginx.com
1382361Szelenkov@nginx.com    *) Bugfix: enabled UTF-8 for Python config by default to avoid
1392361Szelenkov@nginx.com       applications failing in some cases.
1402361Szelenkov@nginx.com
1412361Szelenkov@nginx.com    *) Bugfix: using asyncio.get_running_loop() instead of
1422361Szelenkov@nginx.com       asyncio.get_event_loop() when it's available to prevent errors in
1432361Szelenkov@nginx.com       some Python ASGI applications.
1442361Szelenkov@nginx.com
1452361Szelenkov@nginx.com    *) Bugfix: applications that make use of various low level APIs such as
1462361Szelenkov@nginx.com       pthreads could fail to work correctly.
1472361Szelenkov@nginx.com
1482361Szelenkov@nginx.com    *) Bugfix: websocket endianness detection for obscure operating systems.
1492361Szelenkov@nginx.com
1502282Szelenkov@nginx.com
1512282Szelenkov@nginx.comChanges with Unit 1.29.0                                         15 Dec 2022
1522282Szelenkov@nginx.com
1532282Szelenkov@nginx.com    *) Change: removed $uri auto-append for "share" when loading
1542282Szelenkov@nginx.com       configuration.
1552282Szelenkov@nginx.com
1562282Szelenkov@nginx.com    *) Change: prefer system crypto policy instead of hardcoding a default.
1572282Szelenkov@nginx.com
1582282Szelenkov@nginx.com    *) Feature: njs support with the basic syntax of JS template literals.
1592282Szelenkov@nginx.com
1602282Szelenkov@nginx.com    *) Feature: support per-application cgroups on Linux.
1612282Szelenkov@nginx.com
1622282Szelenkov@nginx.com    *) Feature: the $request_time variable contains the request processing
1632282Szelenkov@nginx.com       time.
1642282Szelenkov@nginx.com
1652282Szelenkov@nginx.com    *) Feature: "prefix" option in Python applications to set WSGI
1662282Szelenkov@nginx.com       "SCRIPT_NAME" and ASGI root-path variables.
1672282Szelenkov@nginx.com
1682282Szelenkov@nginx.com    *) Feature: compatibility with Python 3.11.
1692282Szelenkov@nginx.com
1702282Szelenkov@nginx.com    *) Feature: compatibility with OpenSSL 3.
1712282Szelenkov@nginx.com
1722282Szelenkov@nginx.com    *) Feature: compatibility with PHP 8.2.
1732282Szelenkov@nginx.com
1742282Szelenkov@nginx.com    *) Feature: compatibility with Node.js 19.0.
1752282Szelenkov@nginx.com
1762282Szelenkov@nginx.com    *) Feature: Ruby Rack v3 support.
1772282Szelenkov@nginx.com
1782282Szelenkov@nginx.com    *) Bugfix: fix error in connection statistics when using proxy.
1792282Szelenkov@nginx.com
1802282Szelenkov@nginx.com    *) Bugfix: fix HTTP cookie parsing when the value contains an equals
1812282Szelenkov@nginx.com       sign.
1822282Szelenkov@nginx.com
1832282Szelenkov@nginx.com    *) Bugfix: PHP directory URLs without a trailing '/' would give a 503
1842282Szelenkov@nginx.com       error (fixed with a 301 re-direct).
1852282Szelenkov@nginx.com
1862282Szelenkov@nginx.com    *) Bugfix: missing error checks in the C API.
1872282Szelenkov@nginx.com
1882282Szelenkov@nginx.com    *) Bugfix: report the regex status in configure summary.
1892282Szelenkov@nginx.com
1902197Szelenkov@nginx.com
1912197Szelenkov@nginx.comChanges with Unit 1.28.0                                         13 Sep 2022
1922197Szelenkov@nginx.com
1932197Szelenkov@nginx.com    *) Change: increased the applications' startup timeout.
1942197Szelenkov@nginx.com
1952197Szelenkov@nginx.com    *) Change: disallowed abstract Unix domain socket syntax in non-Linux
1962197Szelenkov@nginx.com       systems.
1972197Szelenkov@nginx.com
1982197Szelenkov@nginx.com    *) Feature: basic statistics API.
1992197Szelenkov@nginx.com
2002197Szelenkov@nginx.com    *) Feature: customizable access log format.
2012197Szelenkov@nginx.com
2022197Szelenkov@nginx.com    *) Feature: more HTTP variables support.
2032197Szelenkov@nginx.com
2042197Szelenkov@nginx.com    *) Feature: forwarded header to replace client address and protocol.
2052197Szelenkov@nginx.com
2062197Szelenkov@nginx.com    *) Feature: ability to get dynamic variables.
2072197Szelenkov@nginx.com
2082197Szelenkov@nginx.com    *) Feature: support for abstract Unix sockets.
2092197Szelenkov@nginx.com
2102197Szelenkov@nginx.com    *) Feature: support for Unix sockets in address matching.
2112197Szelenkov@nginx.com
2122197Szelenkov@nginx.com    *) Feature: the $dollar variable translates to a literal "$" during
2132197Szelenkov@nginx.com       variable substitution.
2142197Szelenkov@nginx.com
2152197Szelenkov@nginx.com    *) Bugfix: router process could crash if index file didn't contain an
2162197Szelenkov@nginx.com       extension.
2172197Szelenkov@nginx.com
2182197Szelenkov@nginx.com    *) Bugfix: force SCRIPT_NAME in Ruby to always be an empty string.
2192197Szelenkov@nginx.com
2202197Szelenkov@nginx.com    *) Bugfix: when isolated PID numbers reach the prototype process host
2212197Szelenkov@nginx.com       PID, the prototype crashed.
2222197Szelenkov@nginx.com
2232197Szelenkov@nginx.com    *) Bugfix: the Ruby application process could crash on SIGTERM.
2242197Szelenkov@nginx.com
2252197Szelenkov@nginx.com    *) Bugfix: the Ruby application process could crash on SIGINT.
2262197Szelenkov@nginx.com
2272197Szelenkov@nginx.com    *) Bugfix: mutex leak in the C API.
2282197Szelenkov@nginx.com
2292118Szelenkov@nginx.com
2302118Szelenkov@nginx.comChanges with Unit 1.27.0                                         02 Jun 2022
2312118Szelenkov@nginx.com
2322118Szelenkov@nginx.com    *) Feature: ability to specify a custom index file name when serving
2332118Szelenkov@nginx.com       static files.
2342118Szelenkov@nginx.com
2352118Szelenkov@nginx.com    *) Feature: variables support in the "location" option of the "return"
2362118Szelenkov@nginx.com       action.
2372118Szelenkov@nginx.com
2382118Szelenkov@nginx.com    *) Feature: support empty strings in the "location" option of the
2392118Szelenkov@nginx.com       "return" action.
2402118Szelenkov@nginx.com
2412118Szelenkov@nginx.com    *) Feature: added a new variable, $request_uri, that includes both the
2422118Szelenkov@nginx.com       path and the query parts as per RFC 3986, sections 3-4.
2432118Szelenkov@nginx.com
2442118Szelenkov@nginx.com    *) Feature: Ruby Rack environment parameter "SCRIPT_NAME" support.
2452118Szelenkov@nginx.com
2462118Szelenkov@nginx.com    *) Feature: compatibility with GCC 12.
2472118Szelenkov@nginx.com
2482118Szelenkov@nginx.com    *) Bugfix: Ruby Sinatra applications don't work without custom logging.
2492118Szelenkov@nginx.com
2502118Szelenkov@nginx.com    *) Bugfix: the controller process could crash when a chain of more than
2512118Szelenkov@nginx.com       four certificates was uploaded.
2522118Szelenkov@nginx.com
2532118Szelenkov@nginx.com    *) Bugfix: some Perl applications failed to process the request body,
2542118Szelenkov@nginx.com       notably with Plack.
2552118Szelenkov@nginx.com
2562118Szelenkov@nginx.com    *) Bugfix: some Spring Boot applications failed to start, notably with
2572118Szelenkov@nginx.com       Grails.
2582118Szelenkov@nginx.com
2592118Szelenkov@nginx.com    *) Bugfix: incorrect Python protocol auto detection (ASGI or WSGI) for
2602118Szelenkov@nginx.com       native callable object, notably with Falcon.
2612118Szelenkov@nginx.com
2622118Szelenkov@nginx.com    *) Bugfix: ECMAScript modules did not work with the recent Node.js
2632118Szelenkov@nginx.com       versions.
2642118Szelenkov@nginx.com
2652045Svbart@nginx.com
2662045Svbart@nginx.comChanges with Unit 1.26.1                                         02 Dec 2021
2672045Svbart@nginx.com
2682045Svbart@nginx.com    *) Bugfix: occasionally, the Unit daemon was unable to fully terminate;
2692045Svbart@nginx.com       the bug had appeared in 1.26.0.
2702045Svbart@nginx.com
2712045Svbart@nginx.com    *) Bugfix: a prototype process could crash on an application process
2722045Svbart@nginx.com       exit; the bug had appeared in 1.26.0.
2732045Svbart@nginx.com
2742045Svbart@nginx.com    *) Bugfix: the router process crashed on reconfiguration if "access_log"
2752045Svbart@nginx.com       was configured without listeners.
2762045Svbart@nginx.com
2772045Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in the PHP module if chdir() or
2782045Svbart@nginx.com       fastcgi_finish_request() was called in the OPcache preloading script.
2792045Svbart@nginx.com
2802045Svbart@nginx.com    *) Bugfix: fatal errors on DragonFly BSD; the bug had appeared in
2812045Svbart@nginx.com       1.26.0.
2822045Svbart@nginx.com
2832007Svbart@nginx.com
2842007Svbart@nginx.comChanges with Unit 1.26.0                                         18 Nov 2021
2852007Svbart@nginx.com
2862007Svbart@nginx.com    *) Change: the "share" option now specifies the entire path to the files
2872007Svbart@nginx.com       it serves, rather than a document root directory to be prepended to
2882007Svbart@nginx.com       the request URI.
2892007Svbart@nginx.com
2902007Svbart@nginx.com    *) Feature: automatic adjustment of existing configurations to the new
2912007Svbart@nginx.com       "share" behavior when updating from previous versions.
2922007Svbart@nginx.com
2932007Svbart@nginx.com    *) Feature: variables support in the "share" option.
2942007Svbart@nginx.com
2952007Svbart@nginx.com    *) Feature: multiple paths in the "share" option.
2962007Svbart@nginx.com
2972007Svbart@nginx.com    *) Feature: variables support in the "chroot" option.
2982007Svbart@nginx.com
2992007Svbart@nginx.com    *) Feature: PHP opcache is shared between application processes.
3002007Svbart@nginx.com
3012007Svbart@nginx.com    *) Feature: request routing by the query string.
3022007Svbart@nginx.com
3032007Svbart@nginx.com    *) Bugfix: the router and app processes could crash when the requests
3042007Svbart@nginx.com       limit was reached by asynchronous or multithreaded apps.
3052007Svbart@nginx.com
3062007Svbart@nginx.com    *) Bugfix: established WebSocket connections could stop reading frames
3072007Svbart@nginx.com       from the client after the corresponding listener had been
3082007Svbart@nginx.com       reconfigured.
3092007Svbart@nginx.com
3102007Svbart@nginx.com    *) Bugfix: fixed building with glibc 2.34, notably Fedora 35.
3112007Svbart@nginx.com
3121945Svbart@nginx.com
3131945Svbart@nginx.comChanges with Unit 1.25.0                                         19 Aug 2021
3141945Svbart@nginx.com
3151945Svbart@nginx.com    *) Feature: client IP address replacement from a specified HTTP header
3161945Svbart@nginx.com       field.
3171945Svbart@nginx.com
3181945Svbart@nginx.com    *) Feature: TLS sessions cache.
3191945Svbart@nginx.com
3201945Svbart@nginx.com    *) Feature: TLS session tickets.
3211945Svbart@nginx.com
3221945Svbart@nginx.com    *) Feature: application restart control.
3231945Svbart@nginx.com
3241945Svbart@nginx.com    *) Feature: process and thread lifecycle hooks in Ruby.
3251945Svbart@nginx.com
3261945Svbart@nginx.com    *) Bugfix: the router process could crash on TLS connection open when
3271945Svbart@nginx.com       multiple listeners with TLS certificates were configured; the bug had
3281945Svbart@nginx.com       appeared in 1.23.0.
3291945Svbart@nginx.com
3301945Svbart@nginx.com    *) Bugfix: TLS connections were rejected for configurations with
3311945Svbart@nginx.com       multiple certificate bundles in a listener if the client did not use
3321945Svbart@nginx.com       SNI.
3331945Svbart@nginx.com
3342007Svbart@nginx.com    *) Bugfix: the router process could crash with frequent multithreaded
3351945Svbart@nginx.com       application reconfiguration.
3361945Svbart@nginx.com
3371945Svbart@nginx.com    *) Bugfix: compatibility issues with some Python ASGI apps, notably
3381945Svbart@nginx.com       based on the Starlette framework.
3391945Svbart@nginx.com
3401945Svbart@nginx.com    *) Bugfix: a descriptor and memory leak occurred in the router process
3411945Svbart@nginx.com       when an app process stopped or crashed.
3421945Svbart@nginx.com
3431945Svbart@nginx.com    *) Bugfix: the controller or router process could crash if the
3441945Svbart@nginx.com       configuration contained a full-form IPv6 in a listener address.
3451945Svbart@nginx.com
3461945Svbart@nginx.com    *) Bugfix: the router process crashed when a request was passed to an
3471945Svbart@nginx.com       empty "routes" or "upstreams" using a variable "pass" option.
3481945Svbart@nginx.com
3491945Svbart@nginx.com    *) Bugfix: the router process crashed while matching a request to an
3501945Svbart@nginx.com       empty array of source or destination address patterns.
3511945Svbart@nginx.com
3521891Svbart@nginx.com
3531891Svbart@nginx.comChanges with Unit 1.24.0                                         27 May 2021
3541891Svbart@nginx.com
3551891Svbart@nginx.com    *) Change: PHP added to the default MIME type list.
3561891Svbart@nginx.com
3571891Svbart@nginx.com    *) Feature: arbitrary configuration of TLS connections via OpenSSL
3581891Svbart@nginx.com       commands.
3591891Svbart@nginx.com
3601891Svbart@nginx.com    *) Feature: the ability to limit static file serving by MIME types.
3611891Svbart@nginx.com
3621891Svbart@nginx.com    *) Feature: support for chrooting, rejecting symlinks, and rejecting
3631891Svbart@nginx.com       mount point traversal on a per-request basis when serving static
3641891Svbart@nginx.com       files.
3651891Svbart@nginx.com
3661891Svbart@nginx.com    *) Feature: a loader for automatically overriding the "http" and
3671891Svbart@nginx.com       "websocket" modules in Node.js.
3681891Svbart@nginx.com
3691891Svbart@nginx.com    *) Feature: multiple "targets" in Python applications.
3701891Svbart@nginx.com
3711891Svbart@nginx.com    *) Feature: compatibility with Ruby 3.0.
3721891Svbart@nginx.com
3731891Svbart@nginx.com    *) Bugfix: the router process could crash while closing a TLS
3741891Svbart@nginx.com       connection.
3751891Svbart@nginx.com
3761891Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred in the PHP module if
3771891Svbart@nginx.com       fastcgi_finish_request() was used with the "auto_globals_jit" option
3781891Svbart@nginx.com       enabled.
3791891Svbart@nginx.com
3801834Svbart@nginx.com
3811834Svbart@nginx.comChanges with Unit 1.23.0                                         25 Mar 2021
3821834Svbart@nginx.com
3831834Svbart@nginx.com    *) Feature: support for multiple certificate bundles on a listener via
3841834Svbart@nginx.com       the Server Name Indication (SNI) TLS extension.
3851834Svbart@nginx.com
3861834Svbart@nginx.com    *) Feature: "--mandir" ./configure option to specify the directory for
3871834Svbart@nginx.com       man page installation.
3881834Svbart@nginx.com
3891834Svbart@nginx.com    *) Bugfix: the router process could crash on premature TLS connection
3901834Svbart@nginx.com       close; the bug had appeared in 1.17.0.
3911834Svbart@nginx.com
3921834Svbart@nginx.com    *) Bugfix: a connection leak occurred on premature TLS connection close;
3931834Svbart@nginx.com       the bug had appeared in 1.6.
3941834Svbart@nginx.com
3951834Svbart@nginx.com    *) Bugfix: a descriptor and memory leak occurred in the router process
3961834Svbart@nginx.com       when processing small WebSocket frames from a client; the bug had
3971834Svbart@nginx.com       appeared in 1.19.0.
3981834Svbart@nginx.com
3991834Svbart@nginx.com    *) Bugfix: a descriptor leak occurred in the router process when
4001834Svbart@nginx.com       removing or reconfiguring an application; the bug had appeared in
4011834Svbart@nginx.com       1.19.0.
4021834Svbart@nginx.com
4031834Svbart@nginx.com    *) Bugfix: persistent storage of certificates might've not worked with
4041834Svbart@nginx.com       some filesystems in Linux, and all uploaded certificate bundles were
4051834Svbart@nginx.com       forgotten after restart.
4061834Svbart@nginx.com
4071834Svbart@nginx.com    *) Bugfix: the controller process could crash while requesting
4081834Svbart@nginx.com       information about a certificate with a non-DNS SAN entry.
4091834Svbart@nginx.com
4101834Svbart@nginx.com    *) Bugfix: the controller process could crash on manipulations with a
4111834Svbart@nginx.com       certificate containing a SAN and no standard name attributes in
4121834Svbart@nginx.com       subject or issuer.
4131834Svbart@nginx.com
4141834Svbart@nginx.com    *) Bugfix: the Ruby module didn't respect the user locale for defaults
4151834Svbart@nginx.com       in the Encoding class.
4161834Svbart@nginx.com
4171834Svbart@nginx.com    *) Bugfix: the PHP 5 module failed to build with thread safety enabled;
4181834Svbart@nginx.com       the bug had appeared in 1.22.0.
4191834Svbart@nginx.com
4201793Svbart@nginx.com
4211793Svbart@nginx.comChanges with Unit 1.22.0                                         04 Feb 2021
4221793Svbart@nginx.com
4231793Svbart@nginx.com    *) Feature: the ServerRequest and ServerResponse objects of Node.js
4241793Svbart@nginx.com       module are now compliant with Stream API.
4251793Svbart@nginx.com
4261793Svbart@nginx.com    *) Feature: support for specifying multiple directories in the "path"
4271793Svbart@nginx.com       option of Python apps.
4281793Svbart@nginx.com
4291793Svbart@nginx.com    *) Bugfix: a memory leak occurred in the router process when serving
4301793Svbart@nginx.com       files larger than 128K; the bug had appeared in 1.13.0.
4311793Svbart@nginx.com
4321793Svbart@nginx.com    *) Bugfix: apps could stop processing new requests under high load; the
4331793Svbart@nginx.com       bug had appeared in 1.19.0.
4341793Svbart@nginx.com
4351793Svbart@nginx.com    *) Bugfix: app processes could terminate unexpectedly under high load;
4361793Svbart@nginx.com       the bug had appeared in 1.19.0.
4371793Svbart@nginx.com
4381793Svbart@nginx.com    *) Bugfix: invalid HTTP responses were generated for some unusual status
4391793Svbart@nginx.com       codes.
4401793Svbart@nginx.com
4411793Svbart@nginx.com    *) Bugfix: the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server
4421793Svbart@nginx.com       variables were missing in the PHP module.
4431793Svbart@nginx.com
4441793Svbart@nginx.com    *) Bugfix: the router process could crash with multithreaded apps under
4451793Svbart@nginx.com       high load.
4461793Svbart@nginx.com
4471793Svbart@nginx.com    *) Bugfix: Ruby apps with multithreading configured could crash on start
4481793Svbart@nginx.com       under load.
4491793Svbart@nginx.com
4501793Svbart@nginx.com    *) Bugfix: mount points weren't unmounted when the "mount" namespace
4511793Svbart@nginx.com       isolation was used; the bug had appeared in 1.21.0.
4521793Svbart@nginx.com
4531793Svbart@nginx.com    *) Bugfix: the router process could crash while removing or
4541793Svbart@nginx.com       reconfiguring an app that used WebSocket.
4551793Svbart@nginx.com
4561793Svbart@nginx.com    *) Bugfix: a memory leak occurring in the router process when removing
4571793Svbart@nginx.com       or reconfiguring an application; the bug had appeared in 1.19.0.
4581793Svbart@nginx.com
4591722Svbart@nginx.com
4601722Svbart@nginx.comChanges with Unit 1.21.0                                         19 Nov 2020
4611722Svbart@nginx.com
4621722Svbart@nginx.com    *) Change: procfs is mounted by default for all languages when "rootfs"
4631722Svbart@nginx.com       isolation is used.
4641722Svbart@nginx.com
4651722Svbart@nginx.com    *) Change: any characters valid according to RFC 7230 are now allowed in
4661722Svbart@nginx.com       HTTP header field names.
4671722Svbart@nginx.com
4681722Svbart@nginx.com    *) Change: HTTP header fields with underscores ("_") are now discarded
4691722Svbart@nginx.com       from requests by default.
4701722Svbart@nginx.com
4711722Svbart@nginx.com    *) Feature: optional multithreaded request processing for Java, Python,
4721722Svbart@nginx.com       Perl, and Ruby apps.
4731722Svbart@nginx.com
4741722Svbart@nginx.com    *) Feature: regular expressions in route matching patterns.
4751722Svbart@nginx.com
4761722Svbart@nginx.com    *) Feature: compatibility with Python 3.9.
4771722Svbart@nginx.com
4781722Svbart@nginx.com    *) Feature: the Python module now supports ASGI 2.0 legacy applications.
4791722Svbart@nginx.com
4801722Svbart@nginx.com    *) Feature: the "protocol" option in Python applications aids choice
4811722Svbart@nginx.com       between ASGI and WSGI.
4821722Svbart@nginx.com
4831722Svbart@nginx.com    *) Feature: the fastcgi_finish_request() PHP function that finalizes
4841722Svbart@nginx.com       request processing and continues code execution without holding onto
4851722Svbart@nginx.com       the client connection.
4861722Svbart@nginx.com
4871722Svbart@nginx.com    *) Feature: the "discard_unsafe_fields" HTTP option that enables
4881722Svbart@nginx.com       discarding request header fields with irregular (but still valid)
4891722Svbart@nginx.com       characters in the field name.
4901722Svbart@nginx.com
4911722Svbart@nginx.com    *) Feature: the "procfs" and "tmpfs" automount isolation options to
4921722Svbart@nginx.com       disable automatic mounting of eponymous filesystems.
4931722Svbart@nginx.com
4941722Svbart@nginx.com    *) Bugfix: the router process could crash when running Go applications
4951722Svbart@nginx.com       under high load; the bug had appeared in 1.19.0.
4961722Svbart@nginx.com
4971722Svbart@nginx.com    *) Bugfix: some language dependencies could remain mounted after using
4981722Svbart@nginx.com       "rootfs" isolation.
4991722Svbart@nginx.com
5001722Svbart@nginx.com    *) Bugfix: various compatibility issues in Java applications.
5011722Svbart@nginx.com
5021722Svbart@nginx.com    *) Bugfix: the Java module built with the musl C library couldn't run
5031722Svbart@nginx.com       applications that use "rootfs" isolation.
5041722Svbart@nginx.com
5051640Svbart@nginx.com
5061640Svbart@nginx.comChanges with Unit 1.20.0                                         08 Oct 2020
5071640Svbart@nginx.com
5081640Svbart@nginx.com    *) Change: the PHP module is now initialized before chrooting; this
5091640Svbart@nginx.com       enables loading all extensions from the host system.
5101640Svbart@nginx.com
5111640Svbart@nginx.com    *) Change: AVIF and APNG image formats added to the default MIME type
5121640Svbart@nginx.com       list.
5131640Svbart@nginx.com
5141643Svbart@nginx.com    *) Change: functional tests migrated to the pytest framework.
5151643Svbart@nginx.com
5161640Svbart@nginx.com    *) Feature: the Python module now fully supports applications that use
5171640Svbart@nginx.com       the ASGI 3.0 server interface.
5181640Svbart@nginx.com
5191640Svbart@nginx.com    *) Feature: the Python module now has a built-in WebSocket server
5201640Svbart@nginx.com       implementation for applications, compatible with the HTTP & WebSocket
5211640Svbart@nginx.com       ASGI Message Format 2.1 specification.
5221640Svbart@nginx.com
5231640Svbart@nginx.com    *) Feature: automatic mounting of an isolated "/tmp" file system into
5241640Svbart@nginx.com       chrooted application environments.
5251640Svbart@nginx.com
5261640Svbart@nginx.com    *) Feature: the $host variable contains a normalized "Host" request
5271640Svbart@nginx.com       value.
5281640Svbart@nginx.com
5291640Svbart@nginx.com    *) Feature: the "callable" option sets Python application callable
5301640Svbart@nginx.com       names.
5311640Svbart@nginx.com
5321640Svbart@nginx.com    *) Feature: compatibility with PHP 8 RC 1. Thanks to Remi Collet.
5331640Svbart@nginx.com
5341640Svbart@nginx.com    *) Feature: the "automount" option in the "isolation" object allows to
5351640Svbart@nginx.com       turn off the automatic mounting of language module dependencies.
5361640Svbart@nginx.com
5371640Svbart@nginx.com    *) Bugfix: "pass"-ing requests to upstreams from a route was broken; the
5381640Svbart@nginx.com       bug had appeared in 1.19.0. Thanks to 洪志道 (Hong Zhi Dao) for
5391640Svbart@nginx.com       discovering and fixing it.
5401640Svbart@nginx.com
5411640Svbart@nginx.com    *) Bugfix: the router process could crash during reconfiguration.
5421640Svbart@nginx.com
5431640Svbart@nginx.com    *) Bugfix: a memory leak occurring in the router process; the bug had
5441640Svbart@nginx.com       appeared in 1.18.0.
5451640Svbart@nginx.com
5461640Svbart@nginx.com    *) Bugfix: the "!" (non-empty) pattern was matched incorrectly; the bug
5471640Svbart@nginx.com       had appeared in 1.19.0.
5481640Svbart@nginx.com
5491640Svbart@nginx.com    *) Bugfix: fixed building on platforms without sendfile() support,
5501640Svbart@nginx.com       notably NetBSD; the bug had appeared in 1.16.0.
5511640Svbart@nginx.com
5521570Svbart@nginx.com
5531570Svbart@nginx.comChanges with Unit 1.19.0                                         13 Aug 2020
5541570Svbart@nginx.com
5551570Svbart@nginx.com    *) Feature: reworked IPC between the router process and the applications
5561570Svbart@nginx.com       to lower latencies, increase performance, and improve scalability.
5571570Svbart@nginx.com
5581570Svbart@nginx.com    *) Feature: support for an arbitrary number of wildcards in route
5591570Svbart@nginx.com       matching patterns.
5601570Svbart@nginx.com
5611570Svbart@nginx.com    *) Feature: chunked transfer encoding in proxy responses.
5621570Svbart@nginx.com
5631570Svbart@nginx.com    *) Feature: basic variables support in the "pass" option.
5641570Svbart@nginx.com
5651570Svbart@nginx.com    *) Feature: compatibility with PHP 8 Beta 1. Thanks to Remi Collet.
5661570Svbart@nginx.com
5671570Svbart@nginx.com    *) Bugfix: the router process could crash while passing requests to an
5681570Svbart@nginx.com       application under high load.
5691570Svbart@nginx.com
5701570Svbart@nginx.com    *) Bugfix: a number of language modules failed to build on some systems;
5711570Svbart@nginx.com       the bug had appeared in 1.18.0.
5721570Svbart@nginx.com
5731570Svbart@nginx.com    *) Bugfix: time in error log messages from PHP applications could lag.
5741570Svbart@nginx.com
5751570Svbart@nginx.com    *) Bugfix: reconfiguration requests could hang if an application had
5761570Svbart@nginx.com       failed to start; the bug had appeared in 1.18.0.
5771570Svbart@nginx.com
5781570Svbart@nginx.com    *) Bugfix: memory leak during reconfiguration.
5791570Svbart@nginx.com
5801570Svbart@nginx.com    *) Bugfix: the daemon didn't start without language modules; the bug had
5811570Svbart@nginx.com       appeared in 1.18.0.
5821570Svbart@nginx.com
5831570Svbart@nginx.com    *) Bugfix: the router process could crash at exit.
5841570Svbart@nginx.com
5851570Svbart@nginx.com    *) Bugfix: Node.js applications could crash at exit.
5861570Svbart@nginx.com
5871570Svbart@nginx.com    *) Bugfix: the Ruby module could be linked against a wrong library
5881570Svbart@nginx.com       version.
5891570Svbart@nginx.com
5901491Svbart@nginx.com
5911491Svbart@nginx.comChanges with Unit 1.18.0                                         28 May 2020
5921491Svbart@nginx.com
5931491Svbart@nginx.com    *) Feature: the "rootfs" isolation option for changing root filesystem
5941491Svbart@nginx.com       for an application.
5951491Svbart@nginx.com
5961491Svbart@nginx.com    *) Feature: multiple "targets" in PHP applications.
5971491Svbart@nginx.com
5981491Svbart@nginx.com    *) Feature: support for percent-encoding in the "uri" and "arguments"
5991491Svbart@nginx.com       matching options and in the "pass" option.
6001491Svbart@nginx.com
6011460Svbart@nginx.com
6021460Svbart@nginx.comChanges with Unit 1.17.0                                         16 Apr 2020
6031460Svbart@nginx.com
6041460Svbart@nginx.com    *) Feature: a "return" action with optional "location" for immediate
6051460Svbart@nginx.com       responses and external redirection.
6061460Svbart@nginx.com
6071460Svbart@nginx.com    *) Feature: fractional weights support for upstream servers.
6081460Svbart@nginx.com
6091460Svbart@nginx.com    *) Bugfix: accidental 502 "Bad Gateway" errors might have occurred in
6101460Svbart@nginx.com       applications under high load.
6111460Svbart@nginx.com
6121460Svbart@nginx.com    *) Bugfix: memory leak in the router; the bug had appeared in 1.13.0.
6131460Svbart@nginx.com
6141460Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in the router process
6151460Svbart@nginx.com       when reaching open connections limit.
6161460Svbart@nginx.com
6171460Svbart@nginx.com    *) Bugfix: "close() failed (9: Bad file descriptor)" alerts might have
6181460Svbart@nginx.com       appeared in the log while processing large request bodies; the bug
6191460Svbart@nginx.com       had appeared in 1.16.0.
6201460Svbart@nginx.com
6211460Svbart@nginx.com    *) Bugfix: existing application processes didn't reopen the log file.
6221460Svbart@nginx.com
6231460Svbart@nginx.com    *) Bugfix: incompatibility with some Node.js applications.
6241460Svbart@nginx.com
6251460Svbart@nginx.com    *) Bugfix: broken build on DragonFly BSD; the bug had appeared in
6261460Svbart@nginx.com       1.16.0.
6271460Svbart@nginx.com
6281404Svbart@nginx.com
6291404Svbart@nginx.comChanges with Unit 1.16.0                                         12 Mar 2020
6301404Svbart@nginx.com
6311404Svbart@nginx.com    *) Feature: basic load-balancing support with round-robin.
6321404Svbart@nginx.com
6331404Svbart@nginx.com    *) Feature: a "fallback" option that performs an alternative action if a
6341404Svbart@nginx.com       request can't be served from the "share" directory.
6351404Svbart@nginx.com
6361404Svbart@nginx.com    *) Feature: reduced memory consumption by dumping large request bodies
6371404Svbart@nginx.com       to disk.
6381404Svbart@nginx.com
6391404Svbart@nginx.com    *) Feature: stripping UTF-8 BOM and JavaScript-style comments from
6401404Svbart@nginx.com       uploaded JSON.
6411404Svbart@nginx.com
6421404Svbart@nginx.com    *) Bugfix: negative address matching in router might work improperly in
6431404Svbart@nginx.com       combination with non-negative patterns.
6441404Svbart@nginx.com
6451404Svbart@nginx.com    *) Bugfix: Java Spring applications failed to run; the bug had appeared
6461404Svbart@nginx.com       in 1.10.0.
6471404Svbart@nginx.com
6481404Svbart@nginx.com    *) Bugfix: PHP 7.4 was broken if it was built with thread safety
6491404Svbart@nginx.com       enabled.
6501404Svbart@nginx.com
6511404Svbart@nginx.com    *) Bugfix: compatibility issues with some Python applications.
6521404Svbart@nginx.com
6531357Svbart@nginx.com
6541357Svbart@nginx.comChanges with Unit 1.15.0                                         06 Feb 2020
6551357Svbart@nginx.com
6561357Svbart@nginx.com    *) Change: extensions of dynamically requested PHP scripts were
6571357Svbart@nginx.com       restricted to ".php".
6581357Svbart@nginx.com
6591357Svbart@nginx.com    *) Feature: compatibility with Ruby 2.7.
6601357Svbart@nginx.com
6611357Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in the router process
6621357Svbart@nginx.com       with multiple application processes under load; the bug had appeared
6631357Svbart@nginx.com       in 1.14.0.
6641357Svbart@nginx.com
6651357Svbart@nginx.com    *) Bugfix: receiving request body over TLS connection might have
6661357Svbart@nginx.com       stalled.
6671357Svbart@nginx.com
6681330Svbart@nginx.com
6691330Svbart@nginx.comChanges with Unit 1.14.0                                         26 Dec 2019
6701330Svbart@nginx.com
6711330Svbart@nginx.com    *) Change: the Go package import name changed to "unit.nginx.org/go".
6721330Svbart@nginx.com
6731330Svbart@nginx.com    *) Change: Go package now links to libunit instead of including library
6741330Svbart@nginx.com       sources.
6751330Svbart@nginx.com
6761330Svbart@nginx.com    *) Feature: ability to change user and group for isolated applications
6771330Svbart@nginx.com       when Unit daemon runs as an unprivileged user.
6781330Svbart@nginx.com
6791330Svbart@nginx.com    *) Feature: request routing by source and destination addresses and
6801330Svbart@nginx.com       ports.
6811330Svbart@nginx.com
6821330Svbart@nginx.com    *) Bugfix: memory bloat on large responses.
6831330Svbart@nginx.com
6841284Svbart@nginx.com
6851284Svbart@nginx.comChanges with Unit 1.13.0                                         14 Nov 2019
6861284Svbart@nginx.com
6871284Svbart@nginx.com    *) Feature: basic support for HTTP reverse proxying.
6881284Svbart@nginx.com
6891284Svbart@nginx.com    *) Feature: compatibility with Python 3.8.
6901284Svbart@nginx.com
6911284Svbart@nginx.com    *) Bugfix: memory leak in Python application processes when the close
6921284Svbart@nginx.com       handler was used.
6931284Svbart@nginx.com
6941284Svbart@nginx.com    *) Bugfix: threads in Python applications might not work correctly.
6951284Svbart@nginx.com
6961284Svbart@nginx.com    *) Bugfix: Ruby on Rails applications might not work on Ruby 2.6.
6971284Svbart@nginx.com
6981284Svbart@nginx.com    *) Bugfix: backtraces for uncaught exceptions in Python 3 might be
6991284Svbart@nginx.com       logged with significant delays.
7001284Svbart@nginx.com
7011284Svbart@nginx.com    *) Bugfix: explicit setting a namespaces isolation option to false might
7021284Svbart@nginx.com       have enabled it.
7031284Svbart@nginx.com
7041222Svbart@nginx.com
7051222Svbart@nginx.comChanges with Unit 1.12.0                                         03 Oct 2019
7061222Svbart@nginx.com
7071222Svbart@nginx.com    *) Feature: compatibility with PHP 7.4.
7081222Svbart@nginx.com
7091222Svbart@nginx.com    *) Bugfix: descriptors leak on process creation; the bug had appeared in
7101222Svbart@nginx.com       1.11.0.
7111222Svbart@nginx.com
7121222Svbart@nginx.com    *) Bugfix: TLS connection might be closed prematurely while sending
7131222Svbart@nginx.com       response.
7141222Svbart@nginx.com
7151222Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred if an irregular file
7161222Svbart@nginx.com       was requested.
7171222Svbart@nginx.com
7181185Svbart@nginx.com
7191185Svbart@nginx.comChanges with Unit 1.11.0                                         19 Sep 2019
7201185Svbart@nginx.com
7211185Svbart@nginx.com    *) Feature: basic support for serving static files.
7221185Svbart@nginx.com
7231185Svbart@nginx.com    *) Feature: isolation of application processes with Linux namespaces.
7241185Svbart@nginx.com
7251185Svbart@nginx.com    *) Feature: built-in WebSocket server implementation for Java Servlet
7261185Svbart@nginx.com       Containers.
7271185Svbart@nginx.com
7281185Svbart@nginx.com    *) Feature: direct addressing of API configuration options containing
7291185Svbart@nginx.com       slashes "/" using URI encoding (%2F).
7301185Svbart@nginx.com
7311185Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in Go applications
7321185Svbart@nginx.com       under high load.
7331185Svbart@nginx.com
7341185Svbart@nginx.com    *) Bugfix: WebSocket support was broken if Unit was built with some
7351185Svbart@nginx.com       linkers other than GNU ld (e.g. gold or LLD).
7361185Svbart@nginx.com
7371134Svbart@nginx.com
7381134Svbart@nginx.comChanges with Unit 1.10.0                                         22 Aug 2019
7391134Svbart@nginx.com
7401134Svbart@nginx.com    *) Change: matching of cookies in routes made case sensitive.
7411134Svbart@nginx.com
7421134Svbart@nginx.com    *) Change: decreased log level of common errors when clients close
7431134Svbart@nginx.com       connections.
7441134Svbart@nginx.com
7451134Svbart@nginx.com    *) Change: removed the Perl module's "--include=" ./configure option.
7461134Svbart@nginx.com
7471134Svbart@nginx.com    *) Feature: built-in WebSocket server implementation for Node.js module.
7481134Svbart@nginx.com
7491134Svbart@nginx.com    *) Feature: splitting PATH_INFO from request URI in PHP module.
7501134Svbart@nginx.com
7511134Svbart@nginx.com    *) Feature: request routing by scheme (HTTP or HTTPS).
7521134Svbart@nginx.com
7531134Svbart@nginx.com    *) Feature: support for multipart requests body in Java module.
7541134Svbart@nginx.com
7551134Svbart@nginx.com    *) Feature: improved API compatibility with Node.js 11.10 or later.
7561134Svbart@nginx.com
7571134Svbart@nginx.com    *) Bugfix: reconfiguration failed if "listeners" or "applications"
7581134Svbart@nginx.com       objects were missing.
7591134Svbart@nginx.com
7601134Svbart@nginx.com    *) Bugfix: applying a large configuration might have failed.
7611134Svbart@nginx.com
7621069Svbart@nginx.com
7631069Svbart@nginx.comChanges with Unit 1.9.0                                          30 May 2019
7641069Svbart@nginx.com
7651069Svbart@nginx.com    *) Feature: request routing by arguments, headers, and cookies.
7661069Svbart@nginx.com
7671069Svbart@nginx.com    *) Feature: route matching patterns allow a wildcard in the middle.
7681069Svbart@nginx.com
7691069Svbart@nginx.com    *) Feature: POST operation for appending elements to arrays in
7701069Svbart@nginx.com       configuration.
7711069Svbart@nginx.com
7721069Svbart@nginx.com    *) Feature: support for changing credentials using CAP_SETUID and
7731069Svbart@nginx.com       CAP_SETGID capabilities on Linux without running main process as
7741069Svbart@nginx.com       privileged user.
7751069Svbart@nginx.com
7761069Svbart@nginx.com    *) Bugfix: memory leak in the router process might have happened when a
7771069Svbart@nginx.com       client prematurely closed the connection.
7781069Svbart@nginx.com
7791069Svbart@nginx.com    *) Bugfix: applying a large configuration might have failed.
7801069Svbart@nginx.com
7811069Svbart@nginx.com    *) Bugfix: PUT and DELETE operations on array elements in configuration
7821069Svbart@nginx.com       did not work.
7831069Svbart@nginx.com
7841069Svbart@nginx.com    *) Bugfix: request schema in applications did not reflect TLS
7851069Svbart@nginx.com       connections.
7861069Svbart@nginx.com
7871069Svbart@nginx.com    *) Bugfix: restored compatibility with Node.js applications that use
7881069Svbart@nginx.com       ServerResponse._implicitHeader() function; the bug had appeared in
7891069Svbart@nginx.com       1.7.
7901069Svbart@nginx.com
7911069Svbart@nginx.com    *) Bugfix: various compatibility issues with Node.js applications.
7921069Svbart@nginx.com
793991Svbart@nginx.com
794991Svbart@nginx.comChanges with Unit 1.8.0                                          01 Mar 2019
795991Svbart@nginx.com
796991Svbart@nginx.com    *) Change: now three numbers are always used for versioning: major,
797991Svbart@nginx.com       minor, and patch versions.
798991Svbart@nginx.com
799991Svbart@nginx.com    *) Change: now QUERY_STRING is always defined even if the request does
800991Svbart@nginx.com       not include the query component.
801991Svbart@nginx.com
802991Svbart@nginx.com    *) Feature: basic internal request routing by Host, URI, and method.
803991Svbart@nginx.com
804991Svbart@nginx.com    *) Feature: experimental support for Java Servlet Containers.
805991Svbart@nginx.com
806991Svbart@nginx.com    *) Bugfix: segmentation fault might have occurred in the router process.
807991Svbart@nginx.com
808991Svbart@nginx.com    *) Bugfix: various potential memory leaks.
809991Svbart@nginx.com
810991Svbart@nginx.com    *) Bugfix: TLS connections might have stalled.
811991Svbart@nginx.com
812991Svbart@nginx.com    *) Bugfix: some Perl applications might have failed to send the response
813991Svbart@nginx.com       body.
814991Svbart@nginx.com
815991Svbart@nginx.com    *) Bugfix: some compilers with specific flags might have produced
816991Svbart@nginx.com       non-functioning builds; the bug had appeared in 1.5.
817991Svbart@nginx.com
818991Svbart@nginx.com    *) Bugfix: Node.js package had wrong version number when installed from
819991Svbart@nginx.com       sources.
820991Svbart@nginx.com
821926Svbart@nginx.com
822926Svbart@nginx.comChanges with Unit 1.7.1                                          07 Feb 2019
823926Svbart@nginx.com
824926Svbart@nginx.com    *) Security: a heap memory buffer overflow might have been caused in the
825926Svbart@nginx.com       router process by a specially crafted request, potentially resulting
826926Svbart@nginx.com       in a segmentation fault or other unspecified behavior
827926Svbart@nginx.com       (CVE-2019-7401).
828926Svbart@nginx.com
829926Svbart@nginx.com    *) Bugfix: install of Go module failed without prior building of Unit
830926Svbart@nginx.com       daemon; the bug had appeared in 1.7.
831926Svbart@nginx.com
832886Svbart@nginx.com
833886Svbart@nginx.comChanges with Unit 1.7                                            20 Dec 2018
834886Svbart@nginx.com
835886Svbart@nginx.com    *) Change: now rpath is set in Ruby module only if the library was not
836886Svbart@nginx.com       found in default search paths; this allows to meet packaging
837886Svbart@nginx.com       restrictions on some systems.
838886Svbart@nginx.com
839886Svbart@nginx.com    *) Bugfix: "disable_functions" and "disable_classes" PHP options set via
840886Svbart@nginx.com       Control API did not work.
841886Svbart@nginx.com
842886Svbart@nginx.com    *) Bugfix: Promises on request data in Node.js were not triggered.
843886Svbart@nginx.com
844886Svbart@nginx.com    *) Bugfix: various compatibility issues with Node.js applications.
845886Svbart@nginx.com
846886Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in Node.js module if
847886Svbart@nginx.com       application tried to read request body after request.end() was
848886Svbart@nginx.com       called.
849886Svbart@nginx.com
850886Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in Node.js module if
851886Svbart@nginx.com       application attempted to send header twice.
852886Svbart@nginx.com
853886Svbart@nginx.com    *) Bugfix: names of response header fields in Node.js module were
854886Svbart@nginx.com       erroneously treated as case-sensitive.
855886Svbart@nginx.com
856886Svbart@nginx.com    *) Bugfix: uncatched exceptions in Node.js were not logged.
857886Svbart@nginx.com
858886Svbart@nginx.com    *) Bugfix: global install of Node.js module from sources was broken on
859886Svbart@nginx.com       some systems; the bug had appeared in 1.6.
860886Svbart@nginx.com
861886Svbart@nginx.com    *) Bugfix: traceback for exceptions during initialization of Python
862886Svbart@nginx.com       applications might not be logged.
863886Svbart@nginx.com
864886Svbart@nginx.com    *) Bugfix: PHP module build failed if PHP interpreter was built with
865886Svbart@nginx.com       thread safety enabled.
866886Svbart@nginx.com
867846Svbart@nginx.com
868846Svbart@nginx.comChanges with Unit 1.6                                            15 Nov 2018
869846Svbart@nginx.com
870846Svbart@nginx.com    *) Change: "make install" now installs Node.js module as well if it was
871846Svbart@nginx.com       configured.
872846Svbart@nginx.com
873846Svbart@nginx.com    *) Feature: "--local" ./configure option to install Node.js module
874846Svbart@nginx.com       locally.
875846Svbart@nginx.com
876846Svbart@nginx.com    *) Bugfix: Node.js module might have crashed due to broken reference
877846Svbart@nginx.com       counting.
878846Svbart@nginx.com
879846Svbart@nginx.com    *) Bugfix: asynchronous operations in Node.js might not have worked.
880846Svbart@nginx.com
881846Svbart@nginx.com    *) Bugfix: various compatibility issues with Node.js applications.
882846Svbart@nginx.com
883846Svbart@nginx.com    *) Bugfix: "freed pointer is out of pool" alerts might have appeared in
884846Svbart@nginx.com       log.
885846Svbart@nginx.com
886885Svbart@nginx.com    *) Bugfix: module discovery did not work on 64-bit big-endian systems
887846Svbart@nginx.com       like IBM/S390x.
888846Svbart@nginx.com
889820Svbart@nginx.com
890820Svbart@nginx.comChanges with Unit 1.5                                            25 Oct 2018
891820Svbart@nginx.com
892820Svbart@nginx.com    *) Change: the "type" of application object for Go was changed to
893820Svbart@nginx.com       "external".
894820Svbart@nginx.com
895820Svbart@nginx.com    *) Feature: initial version of Node.js package with basic HTTP
896820Svbart@nginx.com       request-response support.
897820Svbart@nginx.com
898820Svbart@nginx.com    *) Feature: compatibility with LibreSSL.
899820Svbart@nginx.com
900820Svbart@nginx.com    *) Feature: --libdir and --incdir ./configure options to install libunit
901820Svbart@nginx.com       headers and static library.
902820Svbart@nginx.com
903820Svbart@nginx.com    *) Bugfix: connection might be closed prematurely while sending
904820Svbart@nginx.com       response; the bug had appeared in 1.3.
905820Svbart@nginx.com
906820Svbart@nginx.com    *) Bugfix: application processes might have stopped handling requests,
907820Svbart@nginx.com       producing "last message send failed: Resource temporarily
908820Svbart@nginx.com       unavailable" alerts in log; the bug had appeared in 1.4.
909820Svbart@nginx.com
910885Svbart@nginx.com    *) Bugfix: Go applications did not work when Unit was built with musl C
911820Svbart@nginx.com       library.
912820Svbart@nginx.com
913783Svbart@nginx.com
914783Svbart@nginx.comChanges with Unit 1.4                                            20 Sep 2018
915783Svbart@nginx.com
916783Svbart@nginx.com    *) Change: the control API maps the configuration object only at
917783Svbart@nginx.com       "/config/".
918783Svbart@nginx.com
919783Svbart@nginx.com    *) Feature: TLS support for client connections.
920783Svbart@nginx.com
921783Svbart@nginx.com    *) Feature: TLS certificates storage control API.
922783Svbart@nginx.com
923783Svbart@nginx.com    *) Feature: Unit library (libunit) to streamline language module
924783Svbart@nginx.com       integration.
925783Svbart@nginx.com
926783Svbart@nginx.com    *) Feature: "408 Request Timeout" responses while closing HTTP
927783Svbart@nginx.com       keep-alive connections.
928783Svbart@nginx.com
929783Svbart@nginx.com    *) Feature: improvements in OpenBSD support. Thanks to David Carlier.
930783Svbart@nginx.com
931783Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred after
932783Svbart@nginx.com       reconfiguration.
933783Svbart@nginx.com
934783Svbart@nginx.com    *) Bugfix: building on systems with non-default locale might be broken.
935783Svbart@nginx.com
936783Svbart@nginx.com    *) Bugfix: "header_read_timeout" might not work properly.
937783Svbart@nginx.com
938783Svbart@nginx.com    *) Bugfix: header fields values with non-ASCII bytes might be handled
939783Svbart@nginx.com       incorrectly in Python 3 module.
940783Svbart@nginx.com
941727Svbart@nginx.com
942727Svbart@nginx.comChanges with Unit 1.3                                            13 Jul 2018
943727Svbart@nginx.com
944727Svbart@nginx.com    *) Change: UTF-8 characters are now allowed in request header field
945727Svbart@nginx.com       values.
946727Svbart@nginx.com
947727Svbart@nginx.com    *) Feature: configuration of the request body size limit.
948727Svbart@nginx.com
949727Svbart@nginx.com    *) Feature: configuration of various HTTP connection timeouts.
950727Svbart@nginx.com
951727Svbart@nginx.com    *) Feature: Ruby module now automatically uses Bundler where possible.
952727Svbart@nginx.com
953727Svbart@nginx.com    *) Feature: http.Flusher interface in Go module.
954727Svbart@nginx.com
955727Svbart@nginx.com    *) Bugfix: various issues in HTTP connection errors handling.
956727Svbart@nginx.com
957727Svbart@nginx.com    *) Bugfix: requests with body data might be handled incorrectly in PHP
958727Svbart@nginx.com       module.
959727Svbart@nginx.com
960727Svbart@nginx.com    *) Bugfix: individual PHP configuration options specified via control
961727Svbart@nginx.com       API were reset to previous values after the first request in
962727Svbart@nginx.com       application process.
963727Svbart@nginx.com
964689Svbart@nginx.com
965689Svbart@nginx.comChanges with Unit 1.2                                            07 Jun 2018
966689Svbart@nginx.com
967689Svbart@nginx.com    *) Feature: configuration of environment variables for application
968689Svbart@nginx.com       processes.
969689Svbart@nginx.com
970689Svbart@nginx.com    *) Feature: customization of php.ini path.
971689Svbart@nginx.com
972689Svbart@nginx.com    *) Feature: setting of individual PHP configuration options.
973689Svbart@nginx.com
974689Svbart@nginx.com    *) Feature: configuration of execution arguments for Go applications.
975689Svbart@nginx.com
976689Svbart@nginx.com    *) Bugfix: keep-alive connections might hang after reconfiguration.
977689Svbart@nginx.com
978666Svbart@nginx.com
979666Svbart@nginx.comChanges with Unit 1.1                                            26 Apr 2018
980666Svbart@nginx.com
981666Svbart@nginx.com    *) Bugfix: Python applications that use the write() callable did not
982666Svbart@nginx.com       work.
983666Svbart@nginx.com
984666Svbart@nginx.com    *) Bugfix: virtual environments created with Python 3.3 or above might
985666Svbart@nginx.com       not have worked.
986666Svbart@nginx.com
987666Svbart@nginx.com    *) Bugfix: the request.Read() function in Go applications did not
988666Svbart@nginx.com       produce EOF when the whole body was read.
989666Svbart@nginx.com
990666Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred while access log
991666Svbart@nginx.com       reopening.
992666Svbart@nginx.com
993666Svbart@nginx.com    *) Bugfix: in parsing of IPv6 control socket addresses.
994666Svbart@nginx.com
995666Svbart@nginx.com    *) Bugfix: loading of application modules was broken on OpenBSD.
996666Svbart@nginx.com
997666Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred when there were two
998666Svbart@nginx.com       modules with the same type and version; the bug had appeared in 1.0.
999666Svbart@nginx.com
1000666Svbart@nginx.com    *) Bugfix: alerts "freed pointer points to non-freeble page" might have
1001666Svbart@nginx.com       appeared in log on 32-bit platforms.
1002666Svbart@nginx.com
1003639Svbart@nginx.com
1004639Svbart@nginx.comChanges with Unit 1.0                                            12 Apr 2018
1005639Svbart@nginx.com
1006639Svbart@nginx.com    *) Change: configuration object moved into "/config/" path.
1007639Svbart@nginx.com
1008639Svbart@nginx.com    *) Feature: basic access logging.
1009639Svbart@nginx.com
1010639Svbart@nginx.com    *) Bugfix: 503 error occurred if Go application did not write response
1011639Svbart@nginx.com       header or body.
1012639Svbart@nginx.com
1013639Svbart@nginx.com    *) Bugfix: Ruby applications that use encoding conversions might not
1014663Svbart@nginx.com       have worked.
1015639Svbart@nginx.com
1016639Svbart@nginx.com    *) Bugfix: various stability issues.
1017639Svbart@nginx.com
1018586Svbart@nginx.com
1019586Svbart@nginx.comChanges with Unit 0.7                                            22 Mar 2018
1020586Svbart@nginx.com
1021586Svbart@nginx.com    *) Feature: Ruby application module.
1022586Svbart@nginx.com
1023586Svbart@nginx.com    *) Bugfix: in discovering modules.
1024586Svbart@nginx.com
1025586Svbart@nginx.com    *) Bugfix: various race conditions on reconfiguration and during
1026586Svbart@nginx.com       shutting down.
1027586Svbart@nginx.com
1028586Svbart@nginx.com    *) Bugfix: tabs and trailing spaces were not allowed in header fields
1029586Svbart@nginx.com       values.
1030586Svbart@nginx.com
1031586Svbart@nginx.com    *) Bugfix: a segmentation fault occurred in Python module if
1032586Svbart@nginx.com       start_response() was called outside of WSGI callable.
1033586Svbart@nginx.com
1034663Svbart@nginx.com    *) Bugfix: a segmentation fault might have occurred in PHP module if
1035663Svbart@nginx.com       there was an error while initialization.
1036586Svbart@nginx.com
1037539Svbart@nginx.com
1038539Svbart@nginx.comChanges with Unit 0.6                                            09 Feb 2018
1039539Svbart@nginx.com
1040539Svbart@nginx.com    *) Bugfix: the main process died when the "type" application option
1041539Svbart@nginx.com       contained version; the bug had appeared in 0.5.
1042539Svbart@nginx.com
1043531Svbart@nginx.com
1044531Svbart@nginx.comChanges with Unit 0.5                                            08 Feb 2018
1045531Svbart@nginx.com
1046531Svbart@nginx.com    *) Change: the "workers" application option was removed, the "processes"
1047531Svbart@nginx.com       application option should be used instead.
1048531Svbart@nginx.com
1049531Svbart@nginx.com    *) Feature: the "processes" application option with prefork and dynamic
1050531Svbart@nginx.com       process management support.
1051531Svbart@nginx.com
1052531Svbart@nginx.com    *) Feature: Perl application module.
1053531Svbart@nginx.com
1054531Svbart@nginx.com    *) Bugfix: in reading client request body; the bug had appeared in 0.3.
1055531Svbart@nginx.com
1056663Svbart@nginx.com    *) Bugfix: some Python applications might not have worked due to missing
1057531Svbart@nginx.com       "wsgi.errors" environ variable.
1058531Svbart@nginx.com
1059531Svbart@nginx.com    *) Bugfix: HTTP chunked responses might be encoded incorrectly on 32-bit
1060531Svbart@nginx.com       platforms.
1061531Svbart@nginx.com
1062531Svbart@nginx.com    *) Bugfix: infinite looping in HTTP parser.
1063531Svbart@nginx.com
1064531Svbart@nginx.com    *) Bugfix: segmentation fault in router.
1065531Svbart@nginx.com
1066469Sigor@sysoev.ru
1067469Sigor@sysoev.ruChanges with Unit 0.4                                            15 Jan 2018
1068469Sigor@sysoev.ru
1069469Sigor@sysoev.ru    *) Feature: compatibility with DragonFly BSD.
1070469Sigor@sysoev.ru
1071469Sigor@sysoev.ru    *) Feature: "configure php --lib-static" option.
1072469Sigor@sysoev.ru
1073469Sigor@sysoev.ru    *) Bugfix: HTTP request body was not passed to application; the bug had
1074469Sigor@sysoev.ru       appeared in 0.3.
1075469Sigor@sysoev.ru
1076469Sigor@sysoev.ru    *) Bugfix: HTTP large header buffers allocation and deallocation fixed;
1077469Sigor@sysoev.ru       the bug had appeared in 0.3.
1078469Sigor@sysoev.ru
1079663Svbart@nginx.com    *) Bugfix: some PHP applications might not have worked with relative
1080663Svbart@nginx.com       "root" path.
1081469Sigor@sysoev.ru
1082432Sigor@sysoev.ru
1083432Sigor@sysoev.ruChanges with Unit 0.3                                            28 Dec 2017
1084432Sigor@sysoev.ru
1085432Sigor@sysoev.ru    *) Change: the Go package name changed to "nginx/unit".
1086432Sigor@sysoev.ru
1087432Sigor@sysoev.ru    *) Change: in the "limits.timeout" application option: application start
1088432Sigor@sysoev.ru       time and time in queue now are not accounted.
1089432Sigor@sysoev.ru
1090432Sigor@sysoev.ru    *) Feature: the "limits.requests" application option.
1091432Sigor@sysoev.ru
1092432Sigor@sysoev.ru    *) Feature: application request processing latency optimization.
1093432Sigor@sysoev.ru
1094432Sigor@sysoev.ru    *) Feature: HTTP keep-alive connections support.
1095432Sigor@sysoev.ru
1096432Sigor@sysoev.ru    *) Feature: the "home" Python virtual environment configuration option.
1097432Sigor@sysoev.ru
1098432Sigor@sysoev.ru    *) Feature: Python atexit hook support.
1099432Sigor@sysoev.ru
1100432Sigor@sysoev.ru    *) Feature: various Go package improvements.
1101432Sigor@sysoev.ru
1102432Sigor@sysoev.ru    *) Bugfix: various crashes fixed.
1103432Sigor@sysoev.ru
1104286Sigor@sysoev.ru
1105370Sigor@sysoev.ruChanges with Unit 0.2                                            19 Oct 2017
1106370Sigor@sysoev.ru
1107370Sigor@sysoev.ru    *) Feature: configuration persistence.
1108370Sigor@sysoev.ru
1109370Sigor@sysoev.ru    *) Feature: improved handling of configuration errors.
1110370Sigor@sysoev.ru
1111370Sigor@sysoev.ru    *) Feature: application "timeout" property.
1112370Sigor@sysoev.ru
1113370Sigor@sysoev.ru    *) Bugfix: POST request for PHP were handled incorrectly.
1114370Sigor@sysoev.ru
1115370Sigor@sysoev.ru    *) Bugfix: the router exited abnormally if all listeners had been
1116370Sigor@sysoev.ru       deleted.
1117370Sigor@sysoev.ru
1118370Sigor@sysoev.ru    *) Bugfix: the router crashed under load.
1119370Sigor@sysoev.ru
1120370Sigor@sysoev.ru    *) Bugfix: memory leak in the router.
1121370Sigor@sysoev.ru
1122370Sigor@sysoev.ru
1123370Sigor@sysoev.ruChanges with Unit 0.1                                            06 Sep 2017
1124286Sigor@sysoev.ru
1125286Sigor@sysoev.ru    *) First public release.
1126286Sigor@sysoev.ru
1127