xref: /unit/docs/changes.xml (revision 2161)
1369Sdefan@nginx.com<?xml version="1.0" ?>
2369Sdefan@nginx.com<!DOCTYPE change_log SYSTEM "changes.dtd" >
3369Sdefan@nginx.com
4369Sdefan@nginx.com
5369Sdefan@nginx.com<change_log title="unit">
6369Sdefan@nginx.com
7369Sdefan@nginx.com
82029SN/A<changes apply="unit-php
92029SN/A                unit-python unit-python2.7
102029SN/A                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
112029SN/A                unit-python3.8 unit-python3.9 unit-python3.10
122029SN/A                unit-go
132029SN/A                unit-perl
142029SN/A                unit-ruby
152029SN/A                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
162029SN/A                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
172129Szelenkov@nginx.com         ver="1.28.0" rev="1"
182129Szelenkov@nginx.com         date="" time=""
192135Sthresh@nginx.com         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
202129Szelenkov@nginx.com
212129Szelenkov@nginx.com<change>
222129Szelenkov@nginx.com<para>
232129Szelenkov@nginx.comNGINX Unit updated to 1.28.0.
242129Szelenkov@nginx.com</para>
252129Szelenkov@nginx.com</change>
262129Szelenkov@nginx.com
272129Szelenkov@nginx.com</changes>
282129Szelenkov@nginx.com
292129Szelenkov@nginx.com
302129Szelenkov@nginx.com<changes apply="unit" ver="1.28.0" rev="1"
312129Szelenkov@nginx.com         date="" time=""
322135Sthresh@nginx.com         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
332129Szelenkov@nginx.com
342133Sz.hong@f5.com<change type="feature">
352133Sz.hong@f5.com<para>
36*2161Salx.manpages@gmail.comsupporting UNIX sockets in address matching.
37*2161Salx.manpages@gmail.com</para>
38*2161Salx.manpages@gmail.com</change>
39*2161Salx.manpages@gmail.com
40*2161Salx.manpages@gmail.com<change type="feature">
41*2161Salx.manpages@gmail.com<para>
422133Sz.hong@f5.comforwarded header to replace client address and protocol.
432133Sz.hong@f5.com</para>
442133Sz.hong@f5.com</change>
452133Sz.hong@f5.com
462147Sz.hong@f5.com<change type="feature">
472147Sz.hong@f5.com<para>
482147Sz.hong@f5.comability to get dynamic variables.
492147Sz.hong@f5.com</para>
502147Sz.hong@f5.com</change>
512147Sz.hong@f5.com
522149Sz.hong@f5.com<change type="feature">
532149Sz.hong@f5.com<para>
542149Sz.hong@f5.commore http variables support.
552149Sz.hong@f5.com</para>
562149Sz.hong@f5.com</change>
572149Sz.hong@f5.com
58*2161Salx.manpages@gmail.com<change type="feature">
59*2161Salx.manpages@gmail.com<para>
60*2161Salx.manpages@gmail.comadded a new variable, $dollar, that translates to a literal "$" during
61*2161Salx.manpages@gmail.com</para>
62*2161Salx.manpages@gmail.com</change>
63*2161Salx.manpages@gmail.com
642137Salx.manpages@gmail.com<change type="bugfix">
652137Salx.manpages@gmail.com<para>
662137Salx.manpages@gmail.coman index file that didn't contain a file extension was incorrectly
672137Salx.manpages@gmail.comhandled, and caused a use-after-free bug.
682137Salx.manpages@gmail.com</para>
692137Salx.manpages@gmail.com</change>
702137Salx.manpages@gmail.com
712145Stippexs91@googlemail.com<change type="change">
722145Stippexs91@googlemail.com<para>
732145Stippexs91@googlemail.comincreased the applications' startup timeout.
742145Stippexs91@googlemail.com</para>
752145Stippexs91@googlemail.com</change>
762145Stippexs91@googlemail.com
772129Szelenkov@nginx.com</changes>
782129Szelenkov@nginx.com
792129Szelenkov@nginx.com
802129Szelenkov@nginx.com<changes apply="unit-php
812129Szelenkov@nginx.com                unit-python unit-python2.7
822129Szelenkov@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
832129Szelenkov@nginx.com                unit-python3.8 unit-python3.9 unit-python3.10
842129Szelenkov@nginx.com                unit-go
852129Szelenkov@nginx.com                unit-perl
862129Szelenkov@nginx.com                unit-ruby
872129Szelenkov@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
882129Szelenkov@nginx.com                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
892012Svbart@nginx.com         ver="1.27.0" rev="1"
902127Szelenkov@nginx.com         date="2022-06-02" time="18:00:00 +0300"
912012Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
922012Svbart@nginx.com
932012Svbart@nginx.com<change>
942012Svbart@nginx.com<para>
952012Svbart@nginx.comNGINX Unit updated to 1.27.0.
962012Svbart@nginx.com</para>
972012Svbart@nginx.com</change>
982012Svbart@nginx.com
992012Svbart@nginx.com</changes>
1002012Svbart@nginx.com
1012012Svbart@nginx.com
1022012Svbart@nginx.com<changes apply="unit" ver="1.27.0" rev="1"
1032127Szelenkov@nginx.com         date="2022-06-02" time="18:00:00 +0300"
1042012Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1052012Svbart@nginx.com
1062072Sz.hong@f5.com<change type="feature">
1072072Sz.hong@f5.com<para>
1082108Salx.manpages@gmail.comability to specify a custom index file name when serving static files.
1092108Salx.manpages@gmail.com</para>
1102108Salx.manpages@gmail.com</change>
1112108Salx.manpages@gmail.com
1122108Salx.manpages@gmail.com<change type="feature">
1132108Salx.manpages@gmail.com<para>
1142081Salx.manpages@gmail.comvariables support in the "location" option of the "return" action.
1152081Salx.manpages@gmail.com</para>
1162081Salx.manpages@gmail.com</change>
1172081Salx.manpages@gmail.com
1182081Salx.manpages@gmail.com<change type="feature">
1192081Salx.manpages@gmail.com<para>
1202113Sartem.konev@nginx.comsupport empty strings in the "location" option of the "return" action.
1212113Sartem.konev@nginx.com</para>
1222113Sartem.konev@nginx.com</change>
1232113Sartem.konev@nginx.com
1242113Sartem.konev@nginx.com<change type="feature">
1252113Sartem.konev@nginx.com<para>
1262113Sartem.konev@nginx.comadded a new variable, $request_uri, that includes both the path and the query
1272113Sartem.konev@nginx.comparts as per RFC 3986, sections 3-4.
1282113Sartem.konev@nginx.com</para>
1292113Sartem.konev@nginx.com</change>
1302113Sartem.konev@nginx.com
1312113Sartem.konev@nginx.com<change type="feature">
1322113Sartem.konev@nginx.com<para>
1332113Sartem.konev@nginx.comRuby Rack environment parameter "SCRIPT_NAME" support.
1342110Salx.manpages@gmail.com</para>
1352110Salx.manpages@gmail.com</change>
1362110Salx.manpages@gmail.com
1372110Salx.manpages@gmail.com<change type="feature">
1382110Salx.manpages@gmail.com<para>
1392072Sz.hong@f5.comcompatibility with GCC 12.
1402072Sz.hong@f5.com</para>
1412072Sz.hong@f5.com</change>
1422072Sz.hong@f5.com
1432060Smax.romanov@nginx.com<change type="bugfix">
1442060Smax.romanov@nginx.com<para>
1452093Sz.hong@f5.comRuby Sinatra applications don't work without custom logging.
1462093Sz.hong@f5.com</para>
1472093Sz.hong@f5.com</change>
1482093Sz.hong@f5.com
1492093Sz.hong@f5.com<change type="bugfix">
1502093Sz.hong@f5.com<para>
1512113Sartem.konev@nginx.comthe controller process could crash when a chain of more than four
1522069Sz.hong@f5.comcertificates was uploaded.
1532069Sz.hong@f5.com</para>
1542069Sz.hong@f5.com</change>
1552069Sz.hong@f5.com
1562069Sz.hong@f5.com<change type="bugfix">
1572069Sz.hong@f5.com<para>
1582060Smax.romanov@nginx.comsome Perl applications failed to process the request body, notably with Plack.
1592060Smax.romanov@nginx.com</para>
1602060Smax.romanov@nginx.com</change>
1612060Smax.romanov@nginx.com
1622061Smax.romanov@nginx.com<change type="bugfix">
1632061Smax.romanov@nginx.com<para>
1642061Smax.romanov@nginx.comsome Spring Boot applications failed to start, notably with Grails.
1652061Smax.romanov@nginx.com</para>
1662061Smax.romanov@nginx.com</change>
1672061Smax.romanov@nginx.com
1682067Smax.romanov@nginx.com<change type="bugfix">
1692067Smax.romanov@nginx.com<para>
1702067Smax.romanov@nginx.comincorrect Python protocol auto detection (ASGI or WSGI) for native callable
1712067Smax.romanov@nginx.comobject, notably with Falcon.
1722067Smax.romanov@nginx.com</para>
1732067Smax.romanov@nginx.com</change>
1742067Smax.romanov@nginx.com
1752117Szelenkov@nginx.com<change type="bugfix">
1762117Szelenkov@nginx.com<para>
1772117Szelenkov@nginx.comECMAScript modules did not work with the recent Node.js versions.
1782117Szelenkov@nginx.com</para>
1792117Szelenkov@nginx.com</change>
1802117Szelenkov@nginx.com
1812050Svbart@nginx.com</changes>
1822050Svbart@nginx.com
1832050Svbart@nginx.com
1842050Svbart@nginx.com<changes apply="unit-php
1852050Svbart@nginx.com                unit-python unit-python2.7
1862050Svbart@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1872050Svbart@nginx.com                unit-python3.8 unit-python3.9 unit-python3.10
1882050Svbart@nginx.com                unit-go
1892050Svbart@nginx.com                unit-perl
1902050Svbart@nginx.com                unit-ruby
1912050Svbart@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
1922050Svbart@nginx.com                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
1932029SN/A         ver="1.26.1" rev="1"
1942045SN/A         date="2021-12-02" time="18:00:00 +0300"
1952029SN/A         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1962029SN/A
1972029SN/A<change>
1982029SN/A<para>
1992029SN/ANGINX Unit updated to 1.26.1.
2002029SN/A</para>
2012029SN/A</change>
2022029SN/A
2032029SN/A</changes>
2042029SN/A
2052029SN/A
2062029SN/A<changes apply="unit" ver="1.26.1" rev="1"
2072045SN/A         date="2021-12-02" time="18:00:00 +0300"
2082029SN/A         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2092029SN/A
2102033SN/A<change type="bugfix">
2112033SN/A<para>
2122044SN/Aoccasionally, the Unit daemon was unable to fully terminate; the bug had
2132044SN/Aappeared in 1.26.0.
2142033SN/A</para>
2152033SN/A</change>
2162033SN/A
2172034SN/A<change type="bugfix">
2182034SN/A<para>
2192044SN/Aa prototype process could crash on an application process exit; the bug had
2202034SN/Aappeared in 1.26.0.
2212034SN/A</para>
2222034SN/A</change>
2232034SN/A
2242035SN/A<change type="bugfix">
2252035SN/A<para>
2262044SN/Athe router process crashed on reconfiguration if "access_log" was configured
2272044SN/Awithout listeners.
2282044SN/A</para>
2292044SN/A</change>
2302044SN/A
2312044SN/A<change type="bugfix">
2322044SN/A<para>
2332035SN/Aa segmentation fault occurred in the PHP module if chdir() or
2342035SN/Afastcgi_finish_request() was called in the OPcache preloading script.
2352035SN/A</para>
2362035SN/A</change>
2372035SN/A
2382040SN/A<change type="bugfix">
2392040SN/A<para>
2402041SN/Afatal errors on DragonFly BSD; the bug had appeared in 1.26.0.
2412041SN/A</para>
2422041SN/A</change>
2432041SN/A
2442029SN/A</changes>
2452029SN/A
2462029SN/A
2471973Sdefan@nginx.com<changes apply="unit-jsc18" ver="1.26.0" rev="1"
2482007Svbart@nginx.com         date="2021-11-18" time="18:00:00 +0300"
2491973Sdefan@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2501973Sdefan@nginx.com
2511973Sdefan@nginx.com<change>
2521973Sdefan@nginx.com<para>
2531973Sdefan@nginx.comInitial release of Java 18 module for NGINX Unit.
2541973Sdefan@nginx.com</para>
2551973Sdefan@nginx.com</change>
2561973Sdefan@nginx.com
2571973Sdefan@nginx.com</changes>
2581973Sdefan@nginx.com
2591973Sdefan@nginx.com
2601973Sdefan@nginx.com<changes apply="unit-python3.10" ver="1.26.0" rev="1"
2612007Svbart@nginx.com         date="2021-11-18" time="18:00:00 +0300"
2621973Sdefan@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2631973Sdefan@nginx.com
2641973Sdefan@nginx.com<change>
2651973Sdefan@nginx.com<para>
2661973Sdefan@nginx.comInitial release of Python 3.10 module for NGINX Unit.
2671973Sdefan@nginx.com</para>
2681973Sdefan@nginx.com</change>
2691973Sdefan@nginx.com
2701973Sdefan@nginx.com</changes>
2711973Sdefan@nginx.com
2721973Sdefan@nginx.com
2731896Svbart@nginx.com<changes apply="unit-php
2741896Svbart@nginx.com                unit-python unit-python2.7
2751896Svbart@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
2761896Svbart@nginx.com                unit-python3.8 unit-python3.9
2771896Svbart@nginx.com                unit-go
2781896Svbart@nginx.com                unit-perl
2791896Svbart@nginx.com                unit-ruby
2801896Svbart@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
2811896Svbart@nginx.com                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17"
2821951Svbart@nginx.com         ver="1.26.0" rev="1"
2832007Svbart@nginx.com         date="2021-11-18" time="18:00:00 +0300"
2841951Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2851951Svbart@nginx.com
2861951Svbart@nginx.com<change>
2871951Svbart@nginx.com<para>
2881951Svbart@nginx.comNGINX Unit updated to 1.26.0.
2891951Svbart@nginx.com</para>
2901951Svbart@nginx.com</change>
2911951Svbart@nginx.com
2921951Svbart@nginx.com</changes>
2931951Svbart@nginx.com
2941951Svbart@nginx.com
2951951Svbart@nginx.com<changes apply="unit" ver="1.26.0" rev="1"
2962007Svbart@nginx.com         date="2021-11-18" time="18:00:00 +0300"
2971951Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2981951Svbart@nginx.com
2991960Sz.hong@f5.com<change type="change">
3001960Sz.hong@f5.com<para>
3011960Sz.hong@f5.comthe "share" option now specifies the entire path to the files it serves,
3021960Sz.hong@f5.comrather than a document root directory to be prepended to the request URI.
3031960Sz.hong@f5.com</para>
3041960Sz.hong@f5.com</change>
3051960Sz.hong@f5.com
3061960Sz.hong@f5.com<change type="feature">
3071960Sz.hong@f5.com<para>
3082006Svbart@nginx.comautomatic adjustment of existing configurations to the new "share" behavior
3092006Svbart@nginx.comwhen updating from previous versions.
3102006Svbart@nginx.com</para>
3112006Svbart@nginx.com</change>
3122006Svbart@nginx.com
3132006Svbart@nginx.com<change type="feature">
3142006Svbart@nginx.com<para>
3151960Sz.hong@f5.comvariables support in the "share" option.
3161960Sz.hong@f5.com</para>
3171960Sz.hong@f5.com</change>
3181960Sz.hong@f5.com
3191959Sz.hong@f5.com<change type="feature">
3201959Sz.hong@f5.com<para>
3211961Sz.hong@f5.commultiple paths in the "share" option.
3221961Sz.hong@f5.com</para>
3231961Sz.hong@f5.com</change>
3241961Sz.hong@f5.com
3251961Sz.hong@f5.com<change type="feature">
3261961Sz.hong@f5.com<para>
3271959Sz.hong@f5.comvariables support in the "chroot" option.
3281959Sz.hong@f5.com</para>
3291959Sz.hong@f5.com</change>
3301959Sz.hong@f5.com
3311969Sz.hong@f5.com<change type="feature">
3321969Sz.hong@f5.com<para>
3332006Svbart@nginx.comPHP opcache is shared between application processes.
3341969Sz.hong@f5.com</para>
3351969Sz.hong@f5.com</change>
3361969Sz.hong@f5.com
3371991Sz.hong@f5.com<change type="feature">
3381991Sz.hong@f5.com<para>
3391991Sz.hong@f5.comrequest routing by the query string.
3401991Sz.hong@f5.com</para>
3411991Sz.hong@f5.com</change>
3421991Sz.hong@f5.com
3431955Smax.romanov@nginx.com<change type="bugfix">
3441955Smax.romanov@nginx.com<para>
3452006Svbart@nginx.comthe router and app processes could crash when the requests limit was reached
3462006Svbart@nginx.comby asynchronous or multithreaded apps.
3471955Smax.romanov@nginx.com</para>
3481955Smax.romanov@nginx.com</change>
3491955Smax.romanov@nginx.com
3501956Smax.romanov@nginx.com<change type="bugfix">
3511956Smax.romanov@nginx.com<para>
3521956Smax.romanov@nginx.comestablished WebSocket connections could stop reading frames from the client
3531956Smax.romanov@nginx.comafter the corresponding listener had been reconfigured.
3541956Smax.romanov@nginx.com</para>
3551956Smax.romanov@nginx.com</change>
3561956Smax.romanov@nginx.com
3571992Smax.romanov@nginx.com<change type="bugfix">
3581992Smax.romanov@nginx.com<para>
3592006Svbart@nginx.comfixed building with glibc 2.34, notably Fedora 35.
3601992Smax.romanov@nginx.com</para>
3611992Smax.romanov@nginx.com</change>
3621992Smax.romanov@nginx.com
3631951Svbart@nginx.com</changes>
3641951Svbart@nginx.com
3651951Svbart@nginx.com
3661951Svbart@nginx.com<changes apply="unit-php
3671951Svbart@nginx.com                unit-python unit-python2.7
3681951Svbart@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
3691951Svbart@nginx.com                unit-python3.8 unit-python3.9
3701951Svbart@nginx.com                unit-go
3711951Svbart@nginx.com                unit-perl
3721951Svbart@nginx.com                unit-ruby
3731951Svbart@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
3741951Svbart@nginx.com                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17"
3751896Svbart@nginx.com         ver="1.25.0" rev="1"
3761945Svbart@nginx.com         date="2021-08-19" time="18:00:00 +0300"
3771896Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3781896Svbart@nginx.com
3791896Svbart@nginx.com<change>
3801896Svbart@nginx.com<para>
3811896Svbart@nginx.comNGINX Unit updated to 1.25.0.
3821896Svbart@nginx.com</para>
3831896Svbart@nginx.com</change>
3841896Svbart@nginx.com
3851896Svbart@nginx.com</changes>
3861896Svbart@nginx.com
3871896Svbart@nginx.com
3881896Svbart@nginx.com<changes apply="unit" ver="1.25.0" rev="1"
3891945Svbart@nginx.com         date="2021-08-19" time="18:00:00 +0300"
3901896Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3911896Svbart@nginx.com
3921910So.canty@f5.com<change type="feature">
3931910So.canty@f5.com<para>
3941944Svbart@nginx.comclient IP address replacement from a specified HTTP header field.
3951942Sa.suvorov@f5.com</para>
3961942Sa.suvorov@f5.com</change>
3971942Sa.suvorov@f5.com
3981942Sa.suvorov@f5.com<change type="feature">
3991942Sa.suvorov@f5.com<para>
4001920Sa.suvorov@f5.comTLS sessions cache.
4011920Sa.suvorov@f5.com</para>
4021920Sa.suvorov@f5.com</change>
4031920Sa.suvorov@f5.com
4041920Sa.suvorov@f5.com<change type="feature">
4051920Sa.suvorov@f5.com<para>
4061944Svbart@nginx.comTLS session tickets.
4071910So.canty@f5.com</para>
4081910So.canty@f5.com</change>
4091910So.canty@f5.com
4101926Smax.romanov@nginx.com<change type="feature">
4111926Smax.romanov@nginx.com<para>
4121926Smax.romanov@nginx.comapplication restart control.
4131926Smax.romanov@nginx.com</para>
4141926Smax.romanov@nginx.com</change>
4151926Smax.romanov@nginx.com
4161936So.canty@f5.com<change type="feature">
4171936So.canty@f5.com<para>
4181944Svbart@nginx.comprocess and thread lifecycle hooks in Ruby.
4191936So.canty@f5.com</para>
4201936So.canty@f5.com</change>
4211936So.canty@f5.com
4221907Smax.romanov@nginx.com<change type="bugfix">
4231907Smax.romanov@nginx.com<para>
4241944Svbart@nginx.comthe router process could crash on TLS connection open when multiple listeners
4251944Svbart@nginx.comwith TLS certificates were configured; the bug had appeared in 1.23.0.
4261921Sa.suvorov@f5.com</para>
4271921Sa.suvorov@f5.com</change>
4281921Sa.suvorov@f5.com
4291921Sa.suvorov@f5.com<change type="bugfix">
4301921Sa.suvorov@f5.com<para>
4311944Svbart@nginx.comTLS connections were rejected for configurations with multiple certificate
4321944Svbart@nginx.combundles in a listener if the client did not use SNI.
4331907Smax.romanov@nginx.com</para>
4341907Smax.romanov@nginx.com</change>
4351907Smax.romanov@nginx.com
4361907Smax.romanov@nginx.com<change type="bugfix">
4371907Smax.romanov@nginx.com<para>
4381950Sartem.konev@nginx.comthe router process could crash with frequent multithreaded application
4391915Smax.romanov@nginx.comreconfiguration.
4401915Smax.romanov@nginx.com</para>
4411915Smax.romanov@nginx.com</change>
4421915Smax.romanov@nginx.com
4431915Smax.romanov@nginx.com<change type="bugfix">
4441915Smax.romanov@nginx.com<para>
4451944Svbart@nginx.comcompatibility issues with some Python ASGI apps, notably based on the Starlette
4461944Svbart@nginx.comframework.
4471944Svbart@nginx.com</para>
4481944Svbart@nginx.com</change>
4491944Svbart@nginx.com
4501944Svbart@nginx.com<change type="bugfix">
4511944Svbart@nginx.com<para>
4521944Svbart@nginx.coma descriptor and memory leak occurred in the router process when an app process
4531944Svbart@nginx.comstopped or crashed.
4541907Smax.romanov@nginx.com</para>
4551907Smax.romanov@nginx.com</change>
4561907Smax.romanov@nginx.com
4571909So.canty@f5.com<change type="bugfix">
4581909So.canty@f5.com<para>
4591909So.canty@f5.comthe controller or router process could crash if the configuration contained
4601909So.canty@f5.coma full-form IPv6 in a listener address.
4611909So.canty@f5.com</para>
4621909So.canty@f5.com</change>
4631909So.canty@f5.com
4641916Smax.romanov@nginx.com<change type="bugfix">
4651916Smax.romanov@nginx.com<para>
4661929Sz.hong@f5.comthe router process crashed when a request was passed to an empty "routes"
4671929Sz.hong@f5.comor "upstreams" using a variable "pass" option.
4681929Sz.hong@f5.com</para>
4691929Sz.hong@f5.com</change>
4701929Sz.hong@f5.com
4711930So.canty@f5.com<change type="bugfix">
4721930So.canty@f5.com<para>
4731944Svbart@nginx.comthe router process crashed while matching a request to an empty array of source
4741944Svbart@nginx.comor destination address patterns.
4751930So.canty@f5.com</para>
4761930So.canty@f5.com</change>
4771930So.canty@f5.com
4781896Svbart@nginx.com</changes>
4791896Svbart@nginx.com
4801896Svbart@nginx.com
4811887Sdefan@nginx.com<changes apply="unit-jsc17" ver="1.24.0" rev="1"
4821891Svbart@nginx.com         date="2021-05-27" time="18:00:00 +0300"
4831887Sdefan@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
4841887Sdefan@nginx.com
4851887Sdefan@nginx.com<change>
4861887Sdefan@nginx.com<para>
4871887Sdefan@nginx.comInitial release of Java 17 module for NGINX Unit.
4881887Sdefan@nginx.com</para>
4891887Sdefan@nginx.com</change>
4901887Sdefan@nginx.com
4911887Sdefan@nginx.com</changes>
4921887Sdefan@nginx.com
4931887Sdefan@nginx.com
4941887Sdefan@nginx.com<changes apply="unit-jsc16" ver="1.24.0" rev="1"
4951891Svbart@nginx.com         date="2021-05-27" time="18:00:00 +0300"
4961887Sdefan@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
4971887Sdefan@nginx.com
4981887Sdefan@nginx.com<change>
4991887Sdefan@nginx.com<para>
5001887Sdefan@nginx.comInitial release of Java 16 module for NGINX Unit.
5011887Sdefan@nginx.com</para>
5021887Sdefan@nginx.com</change>
5031887Sdefan@nginx.com
5041887Sdefan@nginx.com</changes>
5051887Sdefan@nginx.com
5061887Sdefan@nginx.com
5071834Svbart@nginx.com<changes apply="unit-php
5081834Svbart@nginx.com                unit-python unit-python2.7
5091834Svbart@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
5101834Svbart@nginx.com                unit-python3.8 unit-python3.9
5111834Svbart@nginx.com                unit-go
5121834Svbart@nginx.com                unit-perl
5131834Svbart@nginx.com                unit-ruby
5141834Svbart@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
5151834Svbart@nginx.com                unit-jsc14 unit-jsc15"
5161839Svbart@nginx.com         ver="1.24.0" rev="1"
5171891Svbart@nginx.com         date="2021-05-27" time="18:00:00 +0300"
5181839Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
5191839Svbart@nginx.com
5201839Svbart@nginx.com<change>
5211839Svbart@nginx.com<para>
5221839Svbart@nginx.comNGINX Unit updated to 1.24.0.
5231839Svbart@nginx.com</para>
5241839Svbart@nginx.com</change>
5251839Svbart@nginx.com
5261839Svbart@nginx.com</changes>
5271839Svbart@nginx.com
5281839Svbart@nginx.com
5291839Svbart@nginx.com<changes apply="unit" ver="1.24.0" rev="1"
5301891Svbart@nginx.com         date="2021-05-27" time="18:00:00 +0300"
5311839Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
5321839Svbart@nginx.com
5331882So.canty@f5.com<change type="change">
5341882So.canty@f5.com<para>
5351882So.canty@f5.comPHP added to the default MIME type list.
5361882So.canty@f5.com</para>
5371882So.canty@f5.com</change>
5381882So.canty@f5.com
5391855Sz.hong@f5.com<change type="feature">
5401855Sz.hong@f5.com<para>
5411885Sa.suvorov@f5.comarbitrary configuration of TLS connections via OpenSSL commands.
5421885Sa.suvorov@f5.com</para>
5431885Sa.suvorov@f5.com</change>
5441885Sa.suvorov@f5.com
5451885Sa.suvorov@f5.com<change type="feature">
5461885Sa.suvorov@f5.com<para>
5471890Svbart@nginx.comthe ability to limit static file serving by MIME types.
5481890Svbart@nginx.com</para>
5491890Svbart@nginx.com</change>
5501890Svbart@nginx.com
5511890Svbart@nginx.com<change type="feature">
5521890Svbart@nginx.com<para>
5531890Svbart@nginx.comsupport for chrooting, rejecting symlinks, and rejecting mount
5541890Svbart@nginx.compoint traversal on a per-request basis when serving static files.
5551872So.canty@f5.com</para>
5561872So.canty@f5.com</change>
5571872So.canty@f5.com
5581872So.canty@f5.com<change type="feature">
5591872So.canty@f5.com<para>
5601889Sartem.konev@nginx.coma loader for automatically overriding the "http" and "websocket" modules in
5611889Sartem.konev@nginx.comNode.js.
5621865So.canty@f5.com</para>
5631865So.canty@f5.com</change>
5641865So.canty@f5.com
5651865So.canty@f5.com<change type="feature">
5661865So.canty@f5.com<para>
5671890Svbart@nginx.commultiple "targets" in Python applications.
5681855Sz.hong@f5.com</para>
5691855Sz.hong@f5.com</change>
5701855Sz.hong@f5.com
5711870So.canty@f5.com<change type="feature">
5721870So.canty@f5.com<para>
5731870So.canty@f5.comcompatibility with Ruby 3.0.
5741870So.canty@f5.com</para>
5751870So.canty@f5.com</change>
5761870So.canty@f5.com
5771861Svbart@nginx.com<change type="bugfix">
5781861Svbart@nginx.com<para>
5791889Sartem.konev@nginx.comthe router process could crash while closing a TLS connection.
5801884Sa.suvorov@f5.com</para>
5811884Sa.suvorov@f5.com</change>
5821884Sa.suvorov@f5.com
5831884Sa.suvorov@f5.com<change type="bugfix">
5841884Sa.suvorov@f5.com<para>
5851861Svbart@nginx.coma segmentation fault might have occurred in the PHP module if
5861861Svbart@nginx.comfastcgi_finish_request() was used with the "auto_globals_jit" option enabled.
5871861Svbart@nginx.com</para>
5881861Svbart@nginx.com</change>
5891861Svbart@nginx.com
5901839Svbart@nginx.com</changes>
5911839Svbart@nginx.com
5921839Svbart@nginx.com
5931839Svbart@nginx.com<changes apply="unit-php
5941839Svbart@nginx.com                unit-python unit-python2.7
5951839Svbart@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
5961839Svbart@nginx.com                unit-python3.8 unit-python3.9
5971839Svbart@nginx.com                unit-go
5981839Svbart@nginx.com                unit-perl
5991839Svbart@nginx.com                unit-ruby
6001839Svbart@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
6011839Svbart@nginx.com                unit-jsc14 unit-jsc15"
6021834Svbart@nginx.com         ver="1.23.0" rev="1"
6031834Svbart@nginx.com         date="2021-03-25" time="18:00:00 +0300"
6041834Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
6051834Svbart@nginx.com
6061834Svbart@nginx.com<change>
6071834Svbart@nginx.com<para>
6081834Svbart@nginx.comNGINX Unit updated to 1.23.0.
6091834Svbart@nginx.com</para>
6101834Svbart@nginx.com</change>
6111834Svbart@nginx.com
6121834Svbart@nginx.com</changes>
6131834Svbart@nginx.com
6141834Svbart@nginx.com
6151806Svbart@nginx.com<changes apply="unit" ver="1.23.0" rev="1"
6161834Svbart@nginx.com         date="2021-03-25" time="18:00:00 +0300"
6171806Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
6181806Svbart@nginx.com
6191825Sthresh@nginx.com<change type="feature">
6201825Sthresh@nginx.com<para>
6211833Sartem.konev@nginx.comsupport for multiple certificate bundles on a listener via the Server Name
6221828Sa.suvorov@f5.comIndication (SNI) TLS extension.
6231828Sa.suvorov@f5.com</para>
6241828Sa.suvorov@f5.com</change>
6251828Sa.suvorov@f5.com
6261828Sa.suvorov@f5.com<change type="feature">
6271828Sa.suvorov@f5.com<para>
6281833Sartem.konev@nginx.com"--mandir" ./configure option to specify the directory for man page
6291833Sartem.konev@nginx.cominstallation.
6301825Sthresh@nginx.com</para>
6311825Sthresh@nginx.com</change>
6321825Sthresh@nginx.com
6331811Smax.romanov@nginx.com<change type="bugfix">
6341811Smax.romanov@nginx.com<para>
6351812Svbart@nginx.comthe router process could crash on premature TLS connection close; the bug had
6361812Svbart@nginx.comappeared in 1.17.0.
6371812Svbart@nginx.com</para>
6381812Svbart@nginx.com</change>
6391812Svbart@nginx.com
6401812Svbart@nginx.com<change type="bugfix">
6411812Svbart@nginx.com<para>
6421833Sartem.konev@nginx.coma connection leak occurred on premature TLS connection close; the bug had
6431812Svbart@nginx.comappeared in 1.6.
6441812Svbart@nginx.com</para>
6451812Svbart@nginx.com</change>
6461812Svbart@nginx.com
6471812Svbart@nginx.com<change type="bugfix">
6481812Svbart@nginx.com<para>
6491833Sartem.konev@nginx.coma descriptor and memory leak occurred in the router process when processing
6501832Smax.romanov@nginx.comsmall WebSocket frames from a client; the bug had appeared in 1.19.0.
6511832Smax.romanov@nginx.com</para>
6521832Smax.romanov@nginx.com</change>
6531832Smax.romanov@nginx.com
6541832Smax.romanov@nginx.com<change type="bugfix">
6551832Smax.romanov@nginx.com<para>
6561833Sartem.konev@nginx.coma descriptor leak occurred in the router process when removing or
6571811Smax.romanov@nginx.comreconfiguring an application; the bug had appeared in 1.19.0.
6581811Smax.romanov@nginx.com</para>
6591811Smax.romanov@nginx.com</change>
6601806Svbart@nginx.com
6611813Svbart@nginx.com<change type="bugfix">
6621813Svbart@nginx.com<para>
6631813Svbart@nginx.compersistent storage of certificates might've not worked with some filesystems in
6641813Svbart@nginx.comLinux, and all uploaded certificate bundles were forgotten after restart.
6651813Svbart@nginx.com</para>
6661813Svbart@nginx.com</change>
6671813Svbart@nginx.com
6681814Svbart@nginx.com<change type="bugfix">
6691814Svbart@nginx.com<para>
6701820Svbart@nginx.comthe controller process could crash while requesting information about a
6711820Svbart@nginx.comcertificate with a non-DNS SAN entry.
6721820Svbart@nginx.com</para>
6731820Svbart@nginx.com</change>
6741820Svbart@nginx.com
6751820Svbart@nginx.com<change type="bugfix">
6761820Svbart@nginx.com<para>
6771822Svbart@nginx.comthe controller process could crash on manipulations with a certificate
6781833Sartem.konev@nginx.comcontaining a SAN and no standard name attributes in subject or issuer.
6791822Svbart@nginx.com</para>
6801822Svbart@nginx.com</change>
6811822Svbart@nginx.com
6821822Svbart@nginx.com<change type="bugfix">
6831822Svbart@nginx.com<para>
6841833Sartem.konev@nginx.comthe Ruby module didn't respect the user locale for defaults in the Encoding
6851833Sartem.konev@nginx.comclass.
6861814Svbart@nginx.com</para>
6871814Svbart@nginx.com</change>
6881814Svbart@nginx.com
6891815Svbart@nginx.com<change type="bugfix">
6901815Svbart@nginx.com<para>
6911815Svbart@nginx.comthe PHP 5 module failed to build with thread safety enabled; the bug had
6921815Svbart@nginx.comappeared in 1.22.0.
6931815Svbart@nginx.com</para>
6941815Svbart@nginx.com</change>
6951815Svbart@nginx.com
6961806Svbart@nginx.com</changes>
6971806Svbart@nginx.com
6981806Svbart@nginx.com
6991798Sdefan@nginx.com<changes apply="unit-python3.9" ver="1.22.0" rev="1"
7001798Sdefan@nginx.com         date="2021-02-04" time="18:00:00 +0300"
7011798Sdefan@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
7021798Sdefan@nginx.com
7031798Sdefan@nginx.com<change>
7041798Sdefan@nginx.com<para>
7051798Sdefan@nginx.comInitial release of Python 3.9 module for NGINX Unit.
7061798Sdefan@nginx.com</para>
7071798Sdefan@nginx.com</change>
7081798Sdefan@nginx.com
7091798Sdefan@nginx.com</changes>
7101798Sdefan@nginx.com
7111798Sdefan@nginx.com
7121763Sdefan@nginx.com<changes apply="unit-php
7131763Sdefan@nginx.com                unit-python unit-python2.7
7141763Sdefan@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
7151763Sdefan@nginx.com                unit-python3.8
7161763Sdefan@nginx.com                unit-go
7171763Sdefan@nginx.com                unit-perl
7181763Sdefan@nginx.com                unit-ruby
7191763Sdefan@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
7201763Sdefan@nginx.com                unit-jsc14 unit-jsc15"
7211763Sdefan@nginx.com         ver="1.22.0" rev="1"
7221793Svbart@nginx.com         date="2021-02-04" time="18:00:00 +0300"
7231763Sdefan@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
7241763Sdefan@nginx.com
7251763Sdefan@nginx.com<change>
7261763Sdefan@nginx.com<para>
7271763Sdefan@nginx.comNGINX Unit updated to 1.22.0.
7281763Sdefan@nginx.com</para>
7291763Sdefan@nginx.com</change>
7301763Sdefan@nginx.com
7311763Sdefan@nginx.com</changes>
7321763Sdefan@nginx.com
7331763Sdefan@nginx.com
7341727Svbart@nginx.com<changes apply="unit" ver="1.22.0" rev="1"
7351793Svbart@nginx.com         date="2021-02-04" time="18:00:00 +0300"
7361727Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
7371727Svbart@nginx.com
7381759Svbart@nginx.com<change type="feature">
7391759Svbart@nginx.com<para>
7401792Svbart@nginx.comthe ServerRequest and ServerResponse objects of Node.js module are now
7411792Svbart@nginx.comcompliant with Stream API.
7421759Svbart@nginx.com</para>
7431759Svbart@nginx.com</change>
7441759Svbart@nginx.com
7451766Smax.romanov@nginx.com<change type="feature">
7461766Smax.romanov@nginx.com<para>
7471792Svbart@nginx.comsupport for specifying multiple directories in the "path" option of Python
7481792Svbart@nginx.comapps.
7491732Svbart@nginx.com</para>
7501732Svbart@nginx.com</change>
7511732Svbart@nginx.com
7521733Svbart@nginx.com<change type="bugfix">
7531733Svbart@nginx.com<para>
7541792Svbart@nginx.coma memory leak occurred in the router process when serving files larger than
7551792Svbart@nginx.com128K; the bug had appeared in 1.13.0.
7561754Smax.romanov@nginx.com</para>
7571754Smax.romanov@nginx.com</change>
7581754Smax.romanov@nginx.com
7591755Smax.romanov@nginx.com<change type="bugfix">
7601755Smax.romanov@nginx.com<para>
7611790Sartem.konev@nginx.comapps could stop processing new requests under high load; the bug had
7621755Smax.romanov@nginx.comappeared in 1.19.0.
7631755Smax.romanov@nginx.com</para>
7641755Smax.romanov@nginx.com</change>
7651755Smax.romanov@nginx.com
7661756Smax.romanov@nginx.com<change type="bugfix">
7671756Smax.romanov@nginx.com<para>
7681790Sartem.konev@nginx.comapp processes could terminate unexpectedly under high load; the bug had
7691790Sartem.konev@nginx.comappeared in 1.19.0.
7701756Smax.romanov@nginx.com</para>
7711756Smax.romanov@nginx.com</change>
7721756Smax.romanov@nginx.com
7731760Smax.romanov@nginx.com<change type="bugfix">
7741760Smax.romanov@nginx.com<para>
7751792Svbart@nginx.cominvalid HTTP responses were generated for some unusual status codes.
7761792Svbart@nginx.com</para>
7771792Svbart@nginx.com</change>
7781792Svbart@nginx.com
7791792Svbart@nginx.com<change type="bugfix">
7801792Svbart@nginx.com<para>
7811792Svbart@nginx.comthe PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server variables were
7821792Svbart@nginx.commissing in the PHP module.
7831792Svbart@nginx.com</para>
7841792Svbart@nginx.com</change>
7851792Svbart@nginx.com
7861792Svbart@nginx.com<change type="bugfix">
7871792Svbart@nginx.com<para>
7881792Svbart@nginx.comthe router process could crash with multithreaded apps under high load.
7891792Svbart@nginx.com</para>
7901792Svbart@nginx.com</change>
7911792Svbart@nginx.com
7921792Svbart@nginx.com<change type="bugfix">
7931792Svbart@nginx.com<para>
7941792Svbart@nginx.comRuby apps with multithreading configured could crash on start under load.
7951792Svbart@nginx.com</para>
7961792Svbart@nginx.com</change>
7971792Svbart@nginx.com
7981792Svbart@nginx.com<change type="bugfix">
7991792Svbart@nginx.com<para>
8001792Svbart@nginx.commount points weren't unmounted when the "mount" namespace isolation was used;
8011792Svbart@nginx.comthe bug had appeared in 1.21.0.
8021760Smax.romanov@nginx.com</para>
8031760Smax.romanov@nginx.com</change>
8041760Smax.romanov@nginx.com
8051780Smax.romanov@nginx.com<change type="bugfix">
8061780Smax.romanov@nginx.com<para>
8071790Sartem.konev@nginx.comthe router process could crash while removing or reconfiguring an app that used
8081790Sartem.konev@nginx.comWebSocket.
8091780Smax.romanov@nginx.com</para>
8101780Smax.romanov@nginx.com</change>
8111780Smax.romanov@nginx.com
8121789Smax.romanov@nginx.com<change type="bugfix">
8131789Smax.romanov@nginx.com<para>
8141789Smax.romanov@nginx.coma memory leak occurring in the router process when removing or reconfiguring
8151789Smax.romanov@nginx.coman application; the bug had appeared in 1.19.0.
8161789Smax.romanov@nginx.com</para>
8171789Smax.romanov@nginx.com</change>
8181789Smax.romanov@nginx.com
8191727Svbart@nginx.com</changes>
8201727Svbart@nginx.com
8211727Svbart@nginx.com
8221722Svbart@nginx.com<changes apply="unit-jsc15" ver="1.21.0" rev="1"
8231722Svbart@nginx.com         date="2020-11-19" time="18:00:00 +0300"
8241722Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
8251722Svbart@nginx.com
8261722Svbart@nginx.com<change>
8271722Svbart@nginx.com<para>
8281722Svbart@nginx.comInitial release of Java 15 module for NGINX Unit.
8291722Svbart@nginx.com</para>
8301722Svbart@nginx.com</change>
8311722Svbart@nginx.com
8321722Svbart@nginx.com</changes>
8331722Svbart@nginx.com
8341722Svbart@nginx.com
8351722Svbart@nginx.com<changes apply="unit-jsc14" ver="1.21.0" rev="1"
8361722Svbart@nginx.com         date="2020-11-19" time="18:00:00 +0300"
8371722Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
8381722Svbart@nginx.com
8391722Svbart@nginx.com<change>
8401722Svbart@nginx.com<para>
8411722Svbart@nginx.comInitial release of Java 14 module for NGINX Unit.
8421722Svbart@nginx.com</para>
8431722Svbart@nginx.com</change>
8441722Svbart@nginx.com
8451722Svbart@nginx.com</changes>
8461722Svbart@nginx.com
8471722Svbart@nginx.com
8481722Svbart@nginx.com<changes apply="unit-jsc13" ver="1.21.0" rev="1"
8491722Svbart@nginx.com         date="2020-11-19" time="18:00:00 +0300"
8501722Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
8511722Svbart@nginx.com
8521722Svbart@nginx.com<change>
8531722Svbart@nginx.com<para>
8541722Svbart@nginx.comInitial release of Java 13 module for NGINX Unit.
8551722Svbart@nginx.com</para>
8561722Svbart@nginx.com</change>
8571722Svbart@nginx.com
8581722Svbart@nginx.com</changes>
8591722Svbart@nginx.com
8601722Svbart@nginx.com
8611722Svbart@nginx.com<changes apply="unit-php
8621722Svbart@nginx.com                unit-python unit-python2.7
8631722Svbart@nginx.com                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
8641722Svbart@nginx.com                unit-python3.8
8651722Svbart@nginx.com                unit-go
8661722Svbart@nginx.com                unit-perl
8671722Svbart@nginx.com                unit-ruby
8681722Svbart@nginx.com                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
8691722Svbart@nginx.com         ver="1.21.0" rev="1"
8701722Svbart@nginx.com         date="2020-11-19" time="18:00:00 +0300"
8711722Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
8721722Svbart@nginx.com
8731722Svbart@nginx.com<change>
8741722Svbart@nginx.com<para>
8751722Svbart@nginx.comNGINX Unit updated to 1.21.0.
8761722Svbart@nginx.com</para>
8771722Svbart@nginx.com</change>
8781722Svbart@nginx.com
8791722Svbart@nginx.com</changes>
8801722Svbart@nginx.com
8811722Svbart@nginx.com
8821722Svbart@nginx.com<changes apply="unit" ver="1.21.0" rev="1"
8831722Svbart@nginx.com         date="2020-11-19" time="18:00:00 +0300"
8841722Svbart@nginx.com         packager="Andrei Belov &lt;defan@nginx.com&gt;">
8851722Svbart@nginx.com
8861722Svbart@nginx.com<change type="change">
8871722Svbart@nginx.com<para>
8881722Svbart@nginx.comprocfs is mounted by default for all languages when "rootfs" isolation is used.
8891722Svbart@nginx.com</para>
8901722Svbart@nginx.com</change>
8911722Svbart@nginx.com
8921722Svbart@nginx.com<change type="change">
8931722Svbart@nginx.com<para>
8941722Svbart@nginx.comany characters valid according to RFC 7230 are now allowed in HTTP header field
8951722Svbart@nginx.comnames.
8961722Svbart@nginx.com</para>
8971722Svbart@nginx.com</change>
8981722Svbart@nginx.com
8991722Svbart@nginx.com<change type="change">
9001722Svbart@nginx.com<para>
9011722Svbart@nginx.comHTTP header fields with underscores ("_") are now discarded from requests by
9021722Svbart@nginx.comdefault.
9031722Svbart@nginx.com</para>
9041722Svbart@nginx.com</change>
9051722Svbart@nginx.com
9061722Svbart@nginx.com<change type="feature">
9071722Svbart@nginx.com<para>
9081722Svbart@nginx.comoptional multithreaded request processing for Java, Python, Perl, and Ruby apps.
9091722Svbart@nginx.com</para>
9101722Svbart@nginx.com</change>
9111722Svbart@nginx.com
9121722Svbart@nginx.com<change type="feature">
9131722Svbart@nginx.com<para>
9141722Svbart@nginx.comregular expressions in route matching patterns.
9151722Svbart@nginx.com</para>
9161722Svbart@nginx.com</change>
9171722Svbart@nginx.com
9181722Svbart@nginx.com<change type="feature">
9191722Svbart@nginx.com<para>
9201722Svbart@nginx.comcompatibility with Python 3.9.
9211722Svbart@nginx.com</para>
9221722Svbart@nginx.com</change>
9231722Svbart@nginx.com
9241722Svbart@nginx.com<change type="feature">
9251722Svbart@nginx.com<para>
9261722Svbart@nginx.comthe Python module now supports ASGI 2.0 legacy applications.
9271722Svbart@nginx.com</para>
9281722Svbart@nginx.com</change>
9291722Svbart@nginx.com
9301722Svbart@nginx.com<change type="feature">
9311722Svbart@nginx.com<para>
9321722Svbart@nginx.comthe "protocol" option in Python applications aids choice between ASGI and WSGI.
9331722Svbart@nginx.com</para>
9341722Svbart@nginx.com</change>
9351722Svbart@nginx.com
9361722Svbart@nginx.com<change type="feature">
9371722Svbart@nginx.com<para>
9381722Svbart@nginx.comthe fastcgi_finish_request() PHP function that finalizes request processing and
9391722Svbart@nginx.comcontinues code execution without holding onto the client connection.
9401722Svbart@nginx.com</para>
9411722Svbart@nginx.com</change>
9421722Svbart@nginx.com
9431722Svbart@nginx.com<change type="feature">
9441722Svbart@nginx.com<para>
9451722Svbart@nginx.comthe "discard_unsafe_fields" HTTP option that enables discarding request header
9461722Svbart@nginx.comfields with irregular (but still valid) characters in the field name.
9471722Svbart@nginx.com</para>
9481722Svbart@nginx.com</change>
9491722Svbart@nginx.com
9501722Svbart@nginx.com<change type="feature">
9511722Svbart@nginx.com<para>
9521722Svbart@nginx.comthe "procfs" and "tmpfs" automount isolation options to disable automatic
9531722Svbart@nginx.commounting of eponymous filesystems.
9541722Svbart@nginx.com</para>
9551722Svbart@nginx.com</change>
9561722Svbart@nginx.com
9571722Svbart@nginx.com<change type="bugfix">
9581722Svbart@nginx.com<para>
9591722Svbart@nginx.comthe router process could crash when running Go applications under high load;
9601722Svbart@nginx.comthe bug had appeared in 1.19.0.
9611722Svbart@nginx.com</para>
9621722Svbart@nginx.com</change>
9631722Svbart@nginx.com
9641722Svbart@nginx.com<change type="bugfix">
9651722Svbart@nginx.com<para>
9661722Svbart@nginx.comsome language dependencies could remain mounted after using "rootfs" isolation.
9671722Svbart@nginx.com</para>
968