xref: /unit/docs/changes.xml (revision 2145:ee1e319c8ed8)
1<?xml version="1.0" ?>
2<!DOCTYPE change_log SYSTEM "changes.dtd" >
3
4
5<change_log title="unit">
6
7
8<changes apply="unit-php
9                unit-python unit-python2.7
10                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
11                unit-python3.8 unit-python3.9 unit-python3.10
12                unit-go
13                unit-perl
14                unit-ruby
15                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
16                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
17         ver="1.28.0" rev="1"
18         date="" time=""
19         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
20
21<change>
22<para>
23NGINX Unit updated to 1.28.0.
24</para>
25</change>
26
27</changes>
28
29
30<changes apply="unit" ver="1.28.0" rev="1"
31         date="" time=""
32         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
33
34<change type="feature">
35<para>
36forwarded header to replace client address and protocol.
37</para>
38</change>
39
40<change type="bugfix">
41<para>
42an index file that didn't contain a file extension was incorrectly
43handled, and caused a use-after-free bug.
44</para>
45</change>
46
47<change type="change">
48<para>
49increased the applications' startup timeout.
50</para>
51</change>
52
53</changes>
54
55
56<changes apply="unit-php
57                unit-python unit-python2.7
58                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
59                unit-python3.8 unit-python3.9 unit-python3.10
60                unit-go
61                unit-perl
62                unit-ruby
63                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
64                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
65         ver="1.27.0" rev="1"
66         date="2022-06-02" time="18:00:00 +0300"
67         packager="Andrei Belov &lt;defan@nginx.com&gt;">
68
69<change>
70<para>
71NGINX Unit updated to 1.27.0.
72</para>
73</change>
74
75</changes>
76
77
78<changes apply="unit" ver="1.27.0" rev="1"
79         date="2022-06-02" time="18:00:00 +0300"
80         packager="Andrei Belov &lt;defan@nginx.com&gt;">
81
82<change type="feature">
83<para>
84ability to specify a custom index file name when serving static files.
85</para>
86</change>
87
88<change type="feature">
89<para>
90variables support in the "location" option of the "return" action.
91</para>
92</change>
93
94<change type="feature">
95<para>
96support empty strings in the "location" option of the "return" action.
97</para>
98</change>
99
100<change type="feature">
101<para>
102added a new variable, $request_uri, that includes both the path and the query
103parts as per RFC 3986, sections 3-4.
104</para>
105</change>
106
107<change type="feature">
108<para>
109Ruby Rack environment parameter "SCRIPT_NAME" support.
110</para>
111</change>
112
113<change type="feature">
114<para>
115compatibility with GCC 12.
116</para>
117</change>
118
119<change type="bugfix">
120<para>
121Ruby Sinatra applications don't work without custom logging.
122</para>
123</change>
124
125<change type="bugfix">
126<para>
127the controller process could crash when a chain of more than four
128certificates was uploaded.
129</para>
130</change>
131
132<change type="bugfix">
133<para>
134some Perl applications failed to process the request body, notably with Plack.
135</para>
136</change>
137
138<change type="bugfix">
139<para>
140some Spring Boot applications failed to start, notably with Grails.
141</para>
142</change>
143
144<change type="bugfix">
145<para>
146incorrect Python protocol auto detection (ASGI or WSGI) for native callable
147object, notably with Falcon.
148</para>
149</change>
150
151<change type="bugfix">
152<para>
153ECMAScript modules did not work with the recent Node.js versions.
154</para>
155</change>
156
157</changes>
158
159
160<changes apply="unit-php
161                unit-python unit-python2.7
162                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
163                unit-python3.8 unit-python3.9 unit-python3.10
164                unit-go
165                unit-perl
166                unit-ruby
167                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
168                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18"
169         ver="1.26.1" rev="1"
170         date="2021-12-02" time="18:00:00 +0300"
171         packager="Andrei Belov &lt;defan@nginx.com&gt;">
172
173<change>
174<para>
175NGINX Unit updated to 1.26.1.
176</para>
177</change>
178
179</changes>
180
181
182<changes apply="unit" ver="1.26.1" rev="1"
183         date="2021-12-02" time="18:00:00 +0300"
184         packager="Andrei Belov &lt;defan@nginx.com&gt;">
185
186<change type="bugfix">
187<para>
188occasionally, the Unit daemon was unable to fully terminate; the bug had
189appeared in 1.26.0.
190</para>
191</change>
192
193<change type="bugfix">
194<para>
195a prototype process could crash on an application process exit; the bug had
196appeared in 1.26.0.
197</para>
198</change>
199
200<change type="bugfix">
201<para>
202the router process crashed on reconfiguration if "access_log" was configured
203without listeners.
204</para>
205</change>
206
207<change type="bugfix">
208<para>
209a segmentation fault occurred in the PHP module if chdir() or
210fastcgi_finish_request() was called in the OPcache preloading script.
211</para>
212</change>
213
214<change type="bugfix">
215<para>
216fatal errors on DragonFly BSD; the bug had appeared in 1.26.0.
217</para>
218</change>
219
220</changes>
221
222
223<changes apply="unit-jsc18" ver="1.26.0" rev="1"
224         date="2021-11-18" time="18:00:00 +0300"
225         packager="Andrei Belov &lt;defan@nginx.com&gt;">
226
227<change>
228<para>
229Initial release of Java 18 module for NGINX Unit.
230</para>
231</change>
232
233</changes>
234
235
236<changes apply="unit-python3.10" ver="1.26.0" rev="1"
237         date="2021-11-18" time="18:00:00 +0300"
238         packager="Andrei Belov &lt;defan@nginx.com&gt;">
239
240<change>
241<para>
242Initial release of Python 3.10 module for NGINX Unit.
243</para>
244</change>
245
246</changes>
247
248
249<changes apply="unit-php
250                unit-python unit-python2.7
251                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
252                unit-python3.8 unit-python3.9
253                unit-go
254                unit-perl
255                unit-ruby
256                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
257                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17"
258         ver="1.26.0" rev="1"
259         date="2021-11-18" time="18:00:00 +0300"
260         packager="Andrei Belov &lt;defan@nginx.com&gt;">
261
262<change>
263<para>
264NGINX Unit updated to 1.26.0.
265</para>
266</change>
267
268</changes>
269
270
271<changes apply="unit" ver="1.26.0" rev="1"
272         date="2021-11-18" time="18:00:00 +0300"
273         packager="Andrei Belov &lt;defan@nginx.com&gt;">
274
275<change type="change">
276<para>
277the "share" option now specifies the entire path to the files it serves,
278rather than a document root directory to be prepended to the request URI.
279</para>
280</change>
281
282<change type="feature">
283<para>
284automatic adjustment of existing configurations to the new "share" behavior
285when updating from previous versions.
286</para>
287</change>
288
289<change type="feature">
290<para>
291variables support in the "share" option.
292</para>
293</change>
294
295<change type="feature">
296<para>
297multiple paths in the "share" option.
298</para>
299</change>
300
301<change type="feature">
302<para>
303variables support in the "chroot" option.
304</para>
305</change>
306
307<change type="feature">
308<para>
309PHP opcache is shared between application processes.
310</para>
311</change>
312
313<change type="feature">
314<para>
315request routing by the query string.
316</para>
317</change>
318
319<change type="bugfix">
320<para>
321the router and app processes could crash when the requests limit was reached
322by asynchronous or multithreaded apps.
323</para>
324</change>
325
326<change type="bugfix">
327<para>
328established WebSocket connections could stop reading frames from the client
329after the corresponding listener had been reconfigured.
330</para>
331</change>
332
333<change type="bugfix">
334<para>
335fixed building with glibc 2.34, notably Fedora 35.
336</para>
337</change>
338
339</changes>
340
341
342<changes apply="unit-php
343                unit-python unit-python2.7
344                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
345                unit-python3.8 unit-python3.9
346                unit-go
347                unit-perl
348                unit-ruby
349                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
350                unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17"
351         ver="1.25.0" rev="1"
352         date="2021-08-19" time="18:00:00 +0300"
353         packager="Andrei Belov &lt;defan@nginx.com&gt;">
354
355<change>
356<para>
357NGINX Unit updated to 1.25.0.
358</para>
359</change>
360
361</changes>
362
363
364<changes apply="unit" ver="1.25.0" rev="1"
365         date="2021-08-19" time="18:00:00 +0300"
366         packager="Andrei Belov &lt;defan@nginx.com&gt;">
367
368<change type="feature">
369<para>
370client IP address replacement from a specified HTTP header field.
371</para>
372</change>
373
374<change type="feature">
375<para>
376TLS sessions cache.
377</para>
378</change>
379
380<change type="feature">
381<para>
382TLS session tickets.
383</para>
384</change>
385
386<change type="feature">
387<para>
388application restart control.
389</para>
390</change>
391
392<change type="feature">
393<para>
394process and thread lifecycle hooks in Ruby.
395</para>
396</change>
397
398<change type="bugfix">
399<para>
400the router process could crash on TLS connection open when multiple listeners
401with TLS certificates were configured; the bug had appeared in 1.23.0.
402</para>
403</change>
404
405<change type="bugfix">
406<para>
407TLS connections were rejected for configurations with multiple certificate
408bundles in a listener if the client did not use SNI.
409</para>
410</change>
411
412<change type="bugfix">
413<para>
414the router process could crash with frequent multithreaded application
415reconfiguration.
416</para>
417</change>
418
419<change type="bugfix">
420<para>
421compatibility issues with some Python ASGI apps, notably based on the Starlette
422framework.
423</para>
424</change>
425
426<change type="bugfix">
427<para>
428a descriptor and memory leak occurred in the router process when an app process
429stopped or crashed.
430</para>
431</change>
432
433<change type="bugfix">
434<para>
435the controller or router process could crash if the configuration contained
436a full-form IPv6 in a listener address.
437</para>
438</change>
439
440<change type="bugfix">
441<para>
442the router process crashed when a request was passed to an empty "routes"
443or "upstreams" using a variable "pass" option.
444</para>
445</change>
446
447<change type="bugfix">
448<para>
449the router process crashed while matching a request to an empty array of source
450or destination address patterns.
451</para>
452</change>
453
454</changes>
455
456
457<changes apply="unit-jsc17" ver="1.24.0" rev="1"
458         date="2021-05-27" time="18:00:00 +0300"
459         packager="Andrei Belov &lt;defan@nginx.com&gt;">
460
461<change>
462<para>
463Initial release of Java 17 module for NGINX Unit.
464</para>
465</change>
466
467</changes>
468
469
470<changes apply="unit-jsc16" ver="1.24.0" rev="1"
471         date="2021-05-27" time="18:00:00 +0300"
472         packager="Andrei Belov &lt;defan@nginx.com&gt;">
473
474<change>
475<para>
476Initial release of Java 16 module for NGINX Unit.
477</para>
478</change>
479
480</changes>
481
482
483<changes apply="unit-php
484                unit-python unit-python2.7
485                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
486                unit-python3.8 unit-python3.9
487                unit-go
488                unit-perl
489                unit-ruby
490                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
491                unit-jsc14 unit-jsc15"
492         ver="1.24.0" rev="1"
493         date="2021-05-27" time="18:00:00 +0300"
494         packager="Andrei Belov &lt;defan@nginx.com&gt;">
495
496<change>
497<para>
498NGINX Unit updated to 1.24.0.
499</para>
500</change>
501
502</changes>
503
504
505<changes apply="unit" ver="1.24.0" rev="1"
506         date="2021-05-27" time="18:00:00 +0300"
507         packager="Andrei Belov &lt;defan@nginx.com&gt;">
508
509<change type="change">
510<para>
511PHP added to the default MIME type list.
512</para>
513</change>
514
515<change type="feature">
516<para>
517arbitrary configuration of TLS connections via OpenSSL commands.
518</para>
519</change>
520
521<change type="feature">
522<para>
523the ability to limit static file serving by MIME types.
524</para>
525</change>
526
527<change type="feature">
528<para>
529support for chrooting, rejecting symlinks, and rejecting mount
530point traversal on a per-request basis when serving static files.
531</para>
532</change>
533
534<change type="feature">
535<para>
536a loader for automatically overriding the "http" and "websocket" modules in
537Node.js.
538</para>
539</change>
540
541<change type="feature">
542<para>
543multiple "targets" in Python applications.
544</para>
545</change>
546
547<change type="feature">
548<para>
549compatibility with Ruby 3.0.
550</para>
551</change>
552
553<change type="bugfix">
554<para>
555the router process could crash while closing a TLS connection.
556</para>
557</change>
558
559<change type="bugfix">
560<para>
561a segmentation fault might have occurred in the PHP module if
562fastcgi_finish_request() was used with the "auto_globals_jit" option enabled.
563</para>
564</change>
565
566</changes>
567
568
569<changes apply="unit-php
570                unit-python unit-python2.7
571                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
572                unit-python3.8 unit-python3.9
573                unit-go
574                unit-perl
575                unit-ruby
576                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
577                unit-jsc14 unit-jsc15"
578         ver="1.23.0" rev="1"
579         date="2021-03-25" time="18:00:00 +0300"
580         packager="Andrei Belov &lt;defan@nginx.com&gt;">
581
582<change>
583<para>
584NGINX Unit updated to 1.23.0.
585</para>
586</change>
587
588</changes>
589
590
591<changes apply="unit" ver="1.23.0" rev="1"
592         date="2021-03-25" time="18:00:00 +0300"
593         packager="Andrei Belov &lt;defan@nginx.com&gt;">
594
595<change type="feature">
596<para>
597support for multiple certificate bundles on a listener via the Server Name
598Indication (SNI) TLS extension.
599</para>
600</change>
601
602<change type="feature">
603<para>
604"--mandir" ./configure option to specify the directory for man page
605installation.
606</para>
607</change>
608
609<change type="bugfix">
610<para>
611the router process could crash on premature TLS connection close; the bug had
612appeared in 1.17.0.
613</para>
614</change>
615
616<change type="bugfix">
617<para>
618a connection leak occurred on premature TLS connection close; the bug had
619appeared in 1.6.
620</para>
621</change>
622
623<change type="bugfix">
624<para>
625a descriptor and memory leak occurred in the router process when processing
626small WebSocket frames from a client; the bug had appeared in 1.19.0.
627</para>
628</change>
629
630<change type="bugfix">
631<para>
632a descriptor leak occurred in the router process when removing or
633reconfiguring an application; the bug had appeared in 1.19.0.
634</para>
635</change>
636
637<change type="bugfix">
638<para>
639persistent storage of certificates might've not worked with some filesystems in
640Linux, and all uploaded certificate bundles were forgotten after restart.
641</para>
642</change>
643
644<change type="bugfix">
645<para>
646the controller process could crash while requesting information about a
647certificate with a non-DNS SAN entry.
648</para>
649</change>
650
651<change type="bugfix">
652<para>
653the controller process could crash on manipulations with a certificate
654containing a SAN and no standard name attributes in subject or issuer.
655</para>
656</change>
657
658<change type="bugfix">
659<para>
660the Ruby module didn't respect the user locale for defaults in the Encoding
661class.
662</para>
663</change>
664
665<change type="bugfix">
666<para>
667the PHP 5 module failed to build with thread safety enabled; the bug had
668appeared in 1.22.0.
669</para>
670</change>
671
672</changes>
673
674
675<changes apply="unit-python3.9" ver="1.22.0" rev="1"
676         date="2021-02-04" time="18:00:00 +0300"
677         packager="Andrei Belov &lt;defan@nginx.com&gt;">
678
679<change>
680<para>
681Initial release of Python 3.9 module for NGINX Unit.
682</para>
683</change>
684
685</changes>
686
687
688<changes apply="unit-php
689                unit-python unit-python2.7
690                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
691                unit-python3.8
692                unit-go
693                unit-perl
694                unit-ruby
695                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13
696                unit-jsc14 unit-jsc15"
697         ver="1.22.0" rev="1"
698         date="2021-02-04" time="18:00:00 +0300"
699         packager="Andrei Belov &lt;defan@nginx.com&gt;">
700
701<change>
702<para>
703NGINX Unit updated to 1.22.0.
704</para>
705</change>
706
707</changes>
708
709
710<changes apply="unit" ver="1.22.0" rev="1"
711         date="2021-02-04" time="18:00:00 +0300"
712         packager="Andrei Belov &lt;defan@nginx.com&gt;">
713
714<change type="feature">
715<para>
716the ServerRequest and ServerResponse objects of Node.js module are now
717compliant with Stream API.
718</para>
719</change>
720
721<change type="feature">
722<para>
723support for specifying multiple directories in the "path" option of Python
724apps.
725</para>
726</change>
727
728<change type="bugfix">
729<para>
730a memory leak occurred in the router process when serving files larger than
731128K; the bug had appeared in 1.13.0.
732</para>
733</change>
734
735<change type="bugfix">
736<para>
737apps could stop processing new requests under high load; the bug had
738appeared in 1.19.0.
739</para>
740</change>
741
742<change type="bugfix">
743<para>
744app processes could terminate unexpectedly under high load; the bug had
745appeared in 1.19.0.
746</para>
747</change>
748
749<change type="bugfix">
750<para>
751invalid HTTP responses were generated for some unusual status codes.
752</para>
753</change>
754
755<change type="bugfix">
756<para>
757the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server variables were
758missing in the PHP module.
759</para>
760</change>
761
762<change type="bugfix">
763<para>
764the router process could crash with multithreaded apps under high load.
765</para>
766</change>
767
768<change type="bugfix">
769<para>
770Ruby apps with multithreading configured could crash on start under load.
771</para>
772</change>
773
774<change type="bugfix">
775<para>
776mount points weren't unmounted when the "mount" namespace isolation was used;
777the bug had appeared in 1.21.0.
778</para>
779</change>
780
781<change type="bugfix">
782<para>
783the router process could crash while removing or reconfiguring an app that used
784WebSocket.
785</para>
786</change>
787
788<change type="bugfix">
789<para>
790a memory leak occurring in the router process when removing or reconfiguring
791an application; the bug had appeared in 1.19.0.
792</para>
793</change>
794
795</changes>
796
797
798<changes apply="unit-jsc15" ver="1.21.0" rev="1"
799         date="2020-11-19" time="18:00:00 +0300"
800         packager="Andrei Belov &lt;defan@nginx.com&gt;">
801
802<change>
803<para>
804Initial release of Java 15 module for NGINX Unit.
805</para>
806</change>
807
808</changes>
809
810
811<changes apply="unit-jsc14" ver="1.21.0" rev="1"
812         date="2020-11-19" time="18:00:00 +0300"
813         packager="Andrei Belov &lt;defan@nginx.com&gt;">
814
815<change>
816<para>
817Initial release of Java 14 module for NGINX Unit.
818</para>
819</change>
820
821</changes>
822
823
824<changes apply="unit-jsc13" ver="1.21.0" rev="1"
825         date="2020-11-19" time="18:00:00 +0300"
826         packager="Andrei Belov &lt;defan@nginx.com&gt;">
827
828<change>
829<para>
830Initial release of Java 13 module for NGINX Unit.
831</para>
832</change>
833
834</changes>
835
836
837<changes apply="unit-php
838                unit-python unit-python2.7
839                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
840                unit-python3.8
841                unit-go
842                unit-perl
843                unit-ruby
844                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
845         ver="1.21.0" rev="1"
846         date="2020-11-19" time="18:00:00 +0300"
847         packager="Andrei Belov &lt;defan@nginx.com&gt;">
848
849<change>
850<para>
851NGINX Unit updated to 1.21.0.
852</para>
853</change>
854
855</changes>
856
857
858<changes apply="unit" ver="1.21.0" rev="1"
859         date="2020-11-19" time="18:00:00 +0300"
860         packager="Andrei Belov &lt;defan@nginx.com&gt;">
861
862<change type="change">
863<para>
864procfs is mounted by default for all languages when "rootfs" isolation is used.
865</para>
866</change>
867
868<change type="change">
869<para>
870any characters valid according to RFC 7230 are now allowed in HTTP header field
871names.
872</para>
873</change>
874
875<change type="change">
876<para>
877HTTP header fields with underscores ("_") are now discarded from requests by
878default.
879</para>
880</change>
881
882<change type="feature">
883<para>
884optional multithreaded request processing for Java, Python, Perl, and Ruby apps.
885</para>
886</change>
887
888<change type="feature">
889<para>
890regular expressions in route matching patterns.
891</para>
892</change>
893
894<change type="feature">
895<para>
896compatibility with Python 3.9.
897</para>
898</change>
899
900<change type="feature">
901<para>
902the Python module now supports ASGI 2.0 legacy applications.
903</para>
904</change>
905
906<change type="feature">
907<para>
908the "protocol" option in Python applications aids choice between ASGI and WSGI.
909</para>
910</change>
911
912<change type="feature">
913<para>
914the fastcgi_finish_request() PHP function that finalizes request processing and
915continues code execution without holding onto the client connection.
916</para>
917</change>
918
919<change type="feature">
920<para>
921the "discard_unsafe_fields" HTTP option that enables discarding request header
922fields with irregular (but still valid) characters in the field name.
923</para>
924</change>
925
926<change type="feature">
927<para>
928the "procfs" and "tmpfs" automount isolation options to disable automatic
929mounting of eponymous filesystems.
930</para>
931</change>
932
933<change type="bugfix">
934<para>
935the router process could crash when running Go applications under high load;
936the bug had appeared in 1.19.0.
937</para>
938</change>
939
940<change type="bugfix">
941<para>
942some language dependencies could remain mounted after using "rootfs" isolation.
943</para>
944</change>
945
946<change type="bugfix">
947<para>
948various compatibility issues in Java applications.
949</para>
950</change>
951
952<change type="bugfix">
953<para>
954the Java module built with the musl C library couldn't run applications that
955use "rootfs" isolation.
956</para>
957</change>
958
959</changes>
960
961
962<changes apply="unit-php
963                unit-python unit-python2.7
964                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
965                unit-python3.8
966                unit-go
967                unit-perl
968                unit-ruby
969                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
970         ver="1.20.0" rev="1"
971         date="2020-10-08" time="18:00:00 +0300"
972         packager="Andrei Belov &lt;defan@nginx.com&gt;">
973
974<change>
975<para>
976NGINX Unit updated to 1.20.0.
977</para>
978</change>
979
980</changes>
981
982
983<changes apply="unit" ver="1.20.0" rev="1"
984         date="2020-10-08" time="18:00:00 +0300"
985         packager="Andrei Belov &lt;defan@nginx.com&gt;">
986
987<change type="change">
988<para>
989the PHP module is now initialized before chrooting; this enables loading all
990extensions from the host system.
991</para>
992</change>
993
994<change type="change">
995<para>
996AVIF and APNG image formats added to the default MIME type list.
997</para>
998</change>
999
1000<change type="change">
1001<para>
1002functional tests migrated to the pytest framework.
1003</para>
1004</change>
1005
1006<change type="feature">
1007<para>
1008the Python module now fully supports applications that use the ASGI 3.0 server
1009interface.
1010</para>
1011</change>
1012
1013<change type="feature">
1014<para>
1015the Python module now has a built-in WebSocket server implementation for
1016applications, compatible with the HTTP &amp; WebSocket ASGI Message Format 2.1
1017specification.
1018</para>
1019</change>
1020
1021<change type="feature">
1022<para>
1023automatic mounting of an isolated "/tmp" file system into chrooted application
1024environments.
1025</para>
1026</change>
1027
1028<change type="feature">
1029<para>
1030the $host variable contains a normalized "Host" request value.
1031</para>
1032</change>
1033
1034<change type="feature">
1035<para>
1036the "callable" option sets Python application callable names.
1037</para>
1038</change>
1039
1040<change type="feature">
1041<para>
1042compatibility with PHP 8 RC 1. Thanks to Remi Collet.
1043</para>
1044</change>
1045
1046<change type="feature">
1047<para>
1048the "automount" option in the "isolation" object allows to turn off the
1049automatic mounting of language module dependencies.
1050</para>
1051</change>
1052
1053<change type="bugfix">
1054<para>
1055"pass"-ing requests to upstreams from a route was broken; the bug had appeared
1056in 1.19.0.  Thanks to 洪志道 (Hong Zhi Dao) for discovering and fixing it.
1057</para>
1058</change>
1059
1060<change type="bugfix">
1061<para>
1062the router process could crash during reconfiguration.
1063</para>
1064</change>
1065
1066<change type="bugfix">
1067<para>
1068a memory leak occurring in the router process; the bug had appeared in 1.18.0.
1069</para>
1070</change>
1071
1072<change type="bugfix">
1073<para>
1074the "!" (non-empty) pattern was matched incorrectly;
1075the bug had appeared in 1.19.0.
1076</para>
1077</change>
1078
1079<change type="bugfix">
1080<para>
1081fixed building on platforms without sendfile() support, notably NetBSD;
1082the bug had appeared in 1.16.0.
1083</para>
1084</change>
1085
1086</changes>
1087
1088
1089<changes apply="unit-php
1090                unit-python unit-python2.7
1091                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1092                unit-python3.8
1093                unit-go
1094                unit-perl
1095                unit-ruby
1096                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1097         ver="1.19.0" rev="1"
1098         date="2020-08-13" time="18:00:00 +0300"
1099         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1100
1101<change>
1102<para>
1103NGINX Unit updated to 1.19.0.
1104</para>
1105</change>
1106
1107</changes>
1108
1109
1110<changes apply="unit" ver="1.19.0" rev="1"
1111         date="2020-08-13" time="18:00:00 +0300"
1112         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1113
1114<change type="feature">
1115<para>
1116reworked IPC between the router process and the applications to lower latencies,
1117increase performance, and improve scalability.
1118</para>
1119</change>
1120
1121<change type="feature">
1122<para>
1123support for an arbitrary number of wildcards in route matching patterns.
1124</para>
1125</change>
1126
1127<change type="feature">
1128<para>
1129chunked transfer encoding in proxy responses.
1130</para>
1131</change>
1132
1133<change type="feature">
1134<para>
1135basic variables support in the "pass" option.
1136</para>
1137</change>
1138
1139<change type="feature">
1140<para>
1141compatibility with PHP 8 Beta 1.
1142Thanks to Remi Collet.
1143</para>
1144</change>
1145
1146<change type="bugfix">
1147<para>
1148the router process could crash while passing requests to an application under
1149high load.
1150</para>
1151</change>
1152
1153<change type="bugfix">
1154<para>
1155a number of language modules failed to build on some systems;
1156the bug had appeared in 1.18.0.
1157</para>
1158</change>
1159
1160<change type="bugfix">
1161<para>
1162time in error log messages from PHP applications could lag.
1163</para>
1164</change>
1165
1166<change type="bugfix">
1167<para>
1168reconfiguration requests could hang if an application had failed to start;
1169the bug had appeared in 1.18.0.
1170</para>
1171</change>
1172
1173<change type="bugfix">
1174<para>
1175memory leak during reconfiguration.
1176</para>
1177</change>
1178
1179<change type="bugfix">
1180<para>
1181the daemon didn't start without language modules;
1182the bug had appeared in 1.18.0.
1183</para>
1184</change>
1185
1186<change type="bugfix">
1187<para>
1188the router process could crash at exit.
1189</para>
1190</change>
1191
1192<change type="bugfix">
1193<para>
1194Node.js applications could crash at exit.
1195</para>
1196</change>
1197
1198<change type="bugfix">
1199<para>
1200the Ruby module could be linked against a wrong library version.
1201</para>
1202</change>
1203
1204</changes>
1205
1206
1207<changes apply="unit-php
1208                unit-python unit-python2.7
1209                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1210                unit-python3.8
1211                unit-go
1212                unit-perl
1213                unit-ruby
1214                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1215         ver="1.18.0" rev="1"
1216         date="2020-05-28" time="18:00:00 +0300"
1217         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1218
1219<change>
1220<para>
1221NGINX Unit updated to 1.18.0.
1222</para>
1223</change>
1224
1225</changes>
1226
1227
1228<changes apply="unit" ver="1.18.0" rev="1"
1229         date="2020-05-28" time="18:00:00 +0300"
1230         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1231
1232<change type="feature">
1233<para>
1234the "rootfs" isolation option for changing root filesystem for an application.
1235</para>
1236</change>
1237
1238<change type="feature">
1239<para>
1240multiple "targets" in PHP applications.
1241</para>
1242</change>
1243
1244<change type="feature">
1245<para>
1246support for percent-encoding in the "uri" and "arguments" matching options
1247and in the "pass" option.
1248</para>
1249</change>
1250
1251</changes>
1252
1253
1254<changes apply="unit-php
1255                unit-python unit-python2.7
1256                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1257                unit-python3.8
1258                unit-go
1259                unit-perl
1260                unit-ruby
1261                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1262         ver="1.17.0" rev="1"
1263         date="2020-04-16" time="18:00:00 +0300"
1264         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1265
1266<change>
1267<para>
1268NGINX Unit updated to 1.17.0.
1269</para>
1270</change>
1271
1272</changes>
1273
1274
1275<changes apply="unit" ver="1.17.0" rev="1"
1276         date="2020-04-16" time="18:00:00 +0300"
1277         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1278
1279<change type="feature">
1280<para>
1281a "return" action with optional "location" for immediate responses and external
1282redirection.
1283</para>
1284</change>
1285
1286<change type="feature">
1287<para>
1288fractional weights support for upstream servers.
1289</para>
1290</change>
1291
1292<change type="bugfix">
1293<para>
1294accidental 502 "Bad Gateway" errors might have occurred in applications under
1295high load.
1296</para>
1297</change>
1298
1299<change type="bugfix">
1300<para>
1301memory leak in the router; the bug had appeared in 1.13.0.
1302</para>
1303</change>
1304
1305<change type="bugfix">
1306<para>
1307segmentation fault might have occurred in the router process when reaching
1308open connections limit.
1309</para>
1310</change>
1311
1312<change type="bugfix">
1313<para>
1314"close() failed (9: Bad file descriptor)" alerts might have appeared in the log
1315while processing large request bodies; the bug had appeared in 1.16.0.
1316</para>
1317</change>
1318
1319<change type="bugfix">
1320<para>
1321existing application processes didn't reopen the log file.
1322</para>
1323</change>
1324
1325<change type="bugfix">
1326<para>
1327incompatibility with some Node.js applications.
1328</para>
1329</change>
1330
1331<change type="bugfix">
1332<para>
1333broken build on DragonFly BSD; the bug had appeared in 1.16.0.
1334</para>
1335</change>
1336
1337</changes>
1338
1339
1340<changes apply="unit-php
1341                unit-python unit-python2.7
1342                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1343                unit-python3.8
1344                unit-go
1345                unit-perl
1346                unit-ruby
1347                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1348         ver="1.16.0" rev="1"
1349         date="2020-03-12" time="18:00:00 +0300"
1350         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1351
1352<change>
1353<para>
1354NGINX Unit updated to 1.16.0.
1355</para>
1356</change>
1357
1358</changes>
1359
1360
1361<changes apply="unit" ver="1.16.0" rev="1"
1362         date="2020-03-12" time="18:00:00 +0300"
1363         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1364
1365<change type="feature">
1366<para>
1367basic load-balancing support with round-robin.
1368</para>
1369</change>
1370
1371<change type="feature">
1372<para>
1373a "fallback" option that performs an alternative action if a request can't be
1374served from the "share" directory.
1375</para>
1376</change>
1377
1378<change type="feature">
1379<para>
1380reduced memory consumption by dumping large request bodies to disk.
1381</para>
1382</change>
1383
1384<change type="feature">
1385<para>
1386stripping UTF-8 BOM and JavaScript-style comments from uploaded JSON.
1387</para>
1388</change>
1389
1390<change type="bugfix">
1391<para>
1392negative address matching in router might work improperly in combination with
1393non-negative patterns.
1394</para>
1395</change>
1396
1397<change type="bugfix">
1398<para>
1399Java Spring applications failed to run; the bug had appeared in 1.10.0.
1400</para>
1401</change>
1402
1403<change type="bugfix">
1404<para>
1405PHP 7.4 was broken if it was built with thread safety enabled.
1406</para>
1407</change>
1408
1409<change type="bugfix">
1410<para>
1411compatibility issues with some Python applications.
1412</para>
1413</change>
1414
1415</changes>
1416
1417
1418<changes apply="unit-php
1419                unit-python unit-python2.7
1420                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1421                unit-python3.8
1422                unit-go
1423                unit-perl
1424                unit-ruby
1425                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1426         ver="1.15.0" rev="1"
1427         date="2020-02-06" time="18:00:00 +0300"
1428         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1429
1430<change>
1431<para>
1432NGINX Unit updated to 1.15.0.
1433</para>
1434</change>
1435
1436</changes>
1437
1438
1439<changes apply="unit" ver="1.15.0" rev="1"
1440         date="2020-02-06" time="18:00:00 +0300"
1441         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1442
1443<change type="change">
1444<para>
1445extensions of dynamically requested PHP scripts were restricted to ".php".
1446</para>
1447</change>
1448
1449<change type="feature">
1450<para>
1451compatibility with Ruby 2.7.
1452</para>
1453</change>
1454
1455<change type="bugfix">
1456<para>
1457segmentation fault might have occurred in the router process with multiple
1458application processes under load; the bug had appeared in 1.14.0.
1459</para>
1460</change>
1461
1462<change type="bugfix">
1463<para>
1464receiving request body over TLS connection might have stalled.
1465</para>
1466</change>
1467
1468</changes>
1469
1470
1471<changes apply="unit-php
1472                unit-python unit-python2.7
1473                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1474                unit-python3.8
1475                unit-go
1476                unit-perl
1477                unit-ruby
1478                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1479         ver="1.14.0" rev="1"
1480         date="2019-12-26" time="18:00:00 +0300"
1481         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1482
1483<change>
1484<para>
1485NGINX Unit updated to 1.14.0.
1486</para>
1487</change>
1488
1489</changes>
1490
1491
1492<changes apply="unit" ver="1.14.0" rev="1"
1493         date="2019-12-26" time="18:00:00 +0300"
1494         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1495
1496<change type="change">
1497<para>
1498the Go package import name changed to "unit.nginx.org/go".
1499</para>
1500</change>
1501
1502<change type="change">
1503<para>
1504Go package now links to libunit instead of including library sources.
1505</para>
1506</change>
1507
1508<change type="feature">
1509<para>
1510ability to change user and group for isolated applications when Unit daemon
1511runs as an unprivileged user.
1512</para>
1513</change>
1514
1515<change type="feature">
1516<para>
1517request routing by source and destination addresses and ports.
1518</para>
1519</change>
1520
1521<change type="bugfix">
1522<para>
1523memory bloat on large responses.
1524</para>
1525</change>
1526
1527</changes>
1528
1529
1530<changes apply="unit-go1.13" ver="1.13.0" rev="1"
1531         date="2019-11-20" time="09:00:00 +0300"
1532         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1533
1534<change>
1535<para>
1536Initial release of Go 1.13 module for NGINX Unit.
1537</para>
1538</change>
1539
1540</changes>
1541
1542
1543<changes apply="unit-go1.12" ver="1.13.0" rev="1"
1544         date="2019-11-20" time="09:00:00 +0300"
1545         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1546
1547<change>
1548<para>
1549Initial release of Go 1.12 module for NGINX Unit.
1550</para>
1551</change>
1552
1553</changes>
1554
1555
1556<changes apply="unit-python3.8" ver="1.13.0" rev="1"
1557         date="2019-11-18" time="14:20:00 +0300"
1558         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1559
1560<change>
1561<para>
1562Initial release of Python 3.8 module for NGINX Unit.
1563</para>
1564</change>
1565
1566</changes>
1567
1568
1569<changes apply="unit-php
1570                unit-python unit-python2.7
1571                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1572                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1573                unit-perl
1574                unit-ruby
1575                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1576         ver="1.13.0" rev="1"
1577         date="2019-11-14" time="18:00:00 +0300"
1578         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1579
1580<change>
1581<para>
1582NGINX Unit updated to 1.13.0.
1583</para>
1584</change>
1585
1586</changes>
1587
1588
1589<changes apply="unit" ver="1.13.0" rev="1"
1590         date="2019-11-14" time="18:00:00 +0300"
1591         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1592
1593<change type="feature">
1594<para>
1595basic support for HTTP reverse proxying.
1596</para>
1597</change>
1598
1599<change type="feature">
1600<para>
1601compatibility with Python 3.8.
1602</para>
1603</change>
1604
1605<change type="bugfix">
1606<para>
1607memory leak in Python application processes when the close handler was used.
1608</para>
1609</change>
1610
1611<change type="bugfix">
1612<para>
1613threads in Python applications might not work correctly.
1614</para>
1615</change>
1616
1617<change type="bugfix">
1618<para>
1619Ruby on Rails applications might not work on Ruby 2.6.
1620</para>
1621</change>
1622
1623<change type="bugfix">
1624<para>
1625backtraces for uncaught exceptions in Python 3 might be logged with significant
1626delays.
1627</para>
1628</change>
1629
1630<change type="bugfix">
1631<para>
1632explicit setting a namespaces isolation option to false might have enabled it.
1633</para>
1634</change>
1635
1636</changes>
1637
1638
1639<changes apply="unit-php
1640                unit-python unit-python2.7
1641                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1642                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1643                unit-perl
1644                unit-ruby
1645                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1646         ver="1.12.0" rev="1"
1647         date="2019-10-03" time="18:00:00 +0300"
1648         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1649
1650<change>
1651<para>
1652NGINX Unit updated to 1.12.0.
1653</para>
1654</change>
1655
1656</changes>
1657
1658
1659<changes apply="unit" ver="1.12.0" rev="1"
1660         date="2019-10-03" time="18:00:00 +0300"
1661         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1662
1663<change type="feature">
1664<para>
1665compatibility with PHP 7.4.
1666</para>
1667</change>
1668
1669<change type="bugfix">
1670<para>
1671descriptors leak on process creation; the bug had appeared in 1.11.0.
1672</para>
1673</change>
1674
1675<change type="bugfix">
1676<para>
1677TLS connection might be closed prematurely while sending response.
1678</para>
1679</change>
1680
1681<change type="bugfix">
1682<para>
1683segmentation fault might have occurred if an irregular file was requested.
1684</para>
1685</change>
1686
1687</changes>
1688
1689
1690
1691<changes apply="unit-php
1692                unit-python unit-python2.7
1693                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1694                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1695                unit-perl
1696                unit-ruby
1697                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1698         ver="1.11.0" rev="1"
1699         date="2019-09-19" time="18:00:00 +0300"
1700         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
1701
1702<change>
1703<para>
1704NGINX Unit updated to 1.11.0.
1705</para>
1706</change>
1707
1708</changes>
1709
1710
1711<changes apply="unit" ver="1.11.0" rev="1"
1712         date="2019-09-19" time="18:00:00 +0300"
1713         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
1714
1715<change type="feature">
1716<para>
1717basic support for serving static files.
1718</para>
1719</change>
1720
1721<change type="feature">
1722<para>
1723isolation of application processes with Linux namespaces.
1724</para>
1725</change>
1726
1727<change type="feature">
1728<para>
1729built-in WebSocket server implementation for Java Servlet Containers.
1730</para>
1731</change>
1732
1733<change type="feature">
1734<para>
1735direct addressing of API configuration options containing slashes "/"
1736using URI encoding (%2F).
1737</para>
1738</change>
1739
1740<change type="bugfix">
1741<para>
1742segmentation fault might have occurred in Go applications under high load.
1743</para>
1744</change>
1745
1746<change type="bugfix">
1747<para>
1748WebSocket support was broken if Unit was built with some linkers other than
1749GNU ld (e.g. gold or LLD).
1750</para>
1751</change>
1752
1753</changes>
1754
1755
1756<changes apply="unit
1757                unit-php
1758                unit-python unit-python2.7
1759                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1760                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1761                unit-perl
1762                unit-ruby
1763                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1764         ver="1.10.0" rev="2"
1765         date="2019-08-23" time="12:00:00 +0300"
1766         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1767
1768<change type="bugfix">
1769<para>
1770missed header files added to unit development package.
1771</para>
1772</change>
1773
1774</changes>
1775
1776
1777<changes apply="unit-php
1778                unit-python unit-python2.7
1779                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1780                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10 unit-go1.11
1781                unit-perl
1782                unit-ruby
1783                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1784         ver="1.10.0" rev="1"
1785         date="2019-08-22" time="18:00:00 +0300"
1786         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1787
1788<change>
1789<para>
1790NGINX Unit updated to 1.10.0.
1791</para>
1792</change>
1793
1794</changes>
1795
1796
1797<changes apply="unit" ver="1.10.0" rev="1"
1798         date="2019-08-22" time="18:00:00 +0300"
1799         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1800
1801<change type="change">
1802<para>
1803matching of cookies in routes made case sensitive.
1804</para>
1805</change>
1806
1807<change type="change">
1808<para>
1809decreased log level of common errors when clients close connections.
1810</para>
1811</change>
1812
1813<change type="change">
1814<para>
1815removed the Perl module's "--include=" ./configure option.
1816</para>
1817</change>
1818
1819<change type="feature">
1820<para>
1821built-in WebSocket server implementation for Node.js module.
1822</para>
1823</change>
1824
1825<change type="feature">
1826<para>
1827splitting PATH_INFO from request URI in PHP module.
1828</para>
1829</change>
1830
1831<change type="feature">
1832<para>
1833request routing by scheme (HTTP or HTTPS).
1834</para>
1835</change>
1836
1837<change type="feature">
1838<para>
1839support for multipart requests body in Java module.
1840</para>
1841</change>
1842
1843<change type="feature">
1844<para>
1845improved API compatibility with Node.js 11.10 or later.
1846</para>
1847</change>
1848
1849<change type="bugfix">
1850<para>
1851reconfiguration failed if "listeners" or "applications" objects were missing.
1852</para>
1853</change>
1854
1855<change type="bugfix">
1856<para>
1857applying a large configuration might have failed.
1858</para>
1859</change>
1860
1861</changes>
1862
1863
1864<changes apply="unit-go1.11" ver="1.9.0" rev="1"
1865         date="2019-05-30" time="18:00:00 +0300"
1866         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1867
1868<change>
1869<para>
1870Initial release of Go 1.11 module for NGINX Unit.
1871</para>
1872</change>
1873
1874</changes>
1875
1876
1877<changes apply="unit-php
1878                unit-python unit-python2.7
1879                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
1880                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
1881                unit-perl
1882                unit-ruby
1883                unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11"
1884         ver="1.9.0" rev="1"
1885         date="2019-05-30" time="18:00:00 +0300"
1886         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1887
1888<change>
1889<para>
1890NGINX Unit updated to 1.9.0.
1891</para>
1892</change>
1893
1894</changes>
1895
1896
1897<changes apply="unit" ver="1.9.0" rev="1"
1898         date="2019-05-30" time="18:00:00 +0300"
1899         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1900
1901<change type="feature">
1902<para>
1903request routing by arguments, headers, and cookies.
1904</para>
1905</change>
1906
1907<change type="feature">
1908<para>
1909route matching patterns allow a wildcard in the middle.
1910</para>
1911</change>
1912
1913<change type="feature">
1914<para>
1915POST operation for appending elements to arrays in configuration.
1916</para>
1917</change>
1918
1919<change type="feature">
1920<para>
1921support for changing credentials using CAP_SETUID and CAP_SETGID capabilities
1922on Linux without running main process as privileged user.
1923</para>
1924</change>
1925
1926<change type="bugfix">
1927<para>
1928memory leak in the router process might have happened when a client
1929prematurely closed the connection.
1930</para>
1931</change>
1932
1933<change type="bugfix">
1934<para>
1935applying a large configuration might have failed.
1936</para>
1937</change>
1938
1939<change type="bugfix">
1940<para>
1941PUT and DELETE operations on array elements in configuration did not work.
1942</para>
1943</change>
1944
1945<change type="bugfix">
1946<para>
1947request schema in applications did not reflect TLS connections.
1948</para>
1949</change>
1950
1951<change type="bugfix">
1952<para>
1953restored compatibility with Node.js applications that use
1954ServerResponse._implicitHeader() function; the bug had appeared in 1.7.
1955</para>
1956</change>
1957
1958<change type="bugfix">
1959<para>
1960various compatibility issues with Node.js applications.
1961</para>
1962</change>
1963
1964</changes>
1965
1966
1967<changes apply="unit-jsc-common" ver="1.8.0" rev="1"
1968         date="2019-03-01" time="18:00:00 +0300"
1969         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1970
1971<change>
1972<para>
1973Initial release of Java common packages for NGINX Unit.
1974</para>
1975</change>
1976
1977</changes>
1978
1979
1980<changes apply="unit-jsc8" ver="1.8.0" rev="1"
1981         date="2019-03-01" time="18:00:00 +0300"
1982         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1983
1984<change>
1985<para>
1986Initial release of Java 8 module for NGINX Unit.
1987</para>
1988</change>
1989
1990</changes>
1991
1992
1993<changes apply="unit-jsc10" ver="1.8.0" rev="1"
1994         date="2019-03-01" time="18:00:00 +0300"
1995         packager="Andrei Belov &lt;defan@nginx.com&gt;">
1996
1997<change>
1998<para>
1999Initial release of Java 10 module for NGINX Unit.
2000</para>
2001</change>
2002
2003</changes>
2004
2005
2006<changes apply="unit-jsc11" ver="1.8.0" rev="1"
2007         date="2019-03-01" time="18:00:00 +0300"
2008         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2009
2010<change>
2011<para>
2012Initial release of Java 11 module for NGINX Unit.
2013</para>
2014</change>
2015
2016</changes>
2017
2018
2019<changes apply="unit-php
2020                unit-python unit-python2.7
2021                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
2022                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2023                unit-perl
2024                unit-ruby"
2025         ver="1.8.0" rev="1"
2026         date="2019-03-01" time="18:00:00 +0300"
2027         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2028
2029<change>
2030<para>
2031NGINX Unit updated to 1.8.0.
2032</para>
2033</change>
2034
2035</changes>
2036
2037
2038<changes apply="unit" ver="1.8.0" rev="1"
2039         date="2019-03-01" time="18:00:00 +0300"
2040         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2041
2042<change type="change">
2043<para>
2044now three numbers are always used for versioning: major, minor,
2045and patch versions.
2046</para>
2047</change>
2048
2049<change type="change">
2050<para>
2051now QUERY_STRING is always defined even if the request does not include
2052the query component.
2053</para>
2054</change>
2055
2056<change type="feature">
2057<para>
2058basic internal request routing by Host, URI, and method.
2059</para>
2060</change>
2061
2062<change type="feature">
2063<para>
2064experimental support for Java Servlet Containers.
2065</para>
2066</change>
2067
2068<change type="bugfix">
2069<para>
2070segmentation fault might have occurred in the router process.
2071</para>
2072</change>
2073
2074<change type="bugfix">
2075<para>
2076various potential memory leaks.
2077</para>
2078</change>
2079
2080<change type="bugfix">
2081<para>
2082TLS connections might have stalled.
2083</para>
2084</change>
2085
2086<change type="bugfix">
2087<para>
2088some Perl applications might have failed to send the response body.
2089</para>
2090</change>
2091
2092<change type="bugfix">
2093<para>
2094some compilers with specific flags might have produced non-functioning builds;
2095the bug had appeared in 1.5.
2096</para>
2097</change>
2098
2099<change type="bugfix">
2100<para>
2101Node.js package had wrong version number when installed from sources.
2102</para>
2103</change>
2104
2105</changes>
2106
2107
2108<changes apply="unit-php
2109                unit-python unit-python2.7
2110                unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7
2111                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2112                unit-perl
2113                unit-ruby"
2114         ver="1.7.1" rev="1"
2115         date="2019-02-07" time="18:00:00 +0300"
2116         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2117
2118<change>
2119<para>
2120NGINX Unit updated to 1.7.1.
2121</para>
2122</change>
2123
2124</changes>
2125
2126
2127<changes apply="unit" ver="1.7.1" rev="1"
2128         date="2019-02-07" time="18:00:00 +0300"
2129         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2130
2131<change type="security">
2132<para>
2133a heap memory buffer overflow might have been caused in the router process by
2134a specially crafted request, potentially resulting in a segmentation fault or
2135other unspecified behavior (CVE-2019-7401).
2136</para>
2137</change>
2138
2139<change type="bugfix">
2140<para>
2141install of Go module failed without prior building of Unit daemon;
2142the bug had appeared in 1.7.
2143</para>
2144</change>
2145
2146</changes>
2147
2148
2149<changes apply="unit-python3.7" ver="1.7" rev="1"
2150         date="2018-12-25" time="10:30:00 +0300"
2151         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2152
2153<change>
2154<para>
2155Initial release of Python 3.7 module for NGINX Unit.
2156</para>
2157</change>
2158
2159</changes>
2160
2161
2162<changes apply="unit-php
2163                unit-python unit-python2.7
2164                unit-python3.4 unit-python3.5 unit-python3.6
2165                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2166                unit-perl
2167                unit-ruby"
2168         ver="1.7" rev="1"
2169         date="2018-12-20" time="18:00:00 +0300"
2170         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2171
2172<change>
2173<para>
2174NGINX Unit updated to 1.7.
2175</para>
2176</change>
2177
2178</changes>
2179
2180
2181<changes apply="unit" ver="1.7" rev="1"
2182         date="2018-12-20" time="18:00:00 +0300"
2183         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2184
2185<change type="change">
2186<para>
2187now rpath is set in Ruby module only if the library was not found in default
2188search paths; this allows to meet packaging restrictions on some systems.
2189</para>
2190</change>
2191
2192<change type="bugfix">
2193<para>
2194"disable_functions" and "disable_classes" PHP options set via Control API
2195did not work.
2196</para>
2197</change>
2198
2199<change type="bugfix">
2200<para>
2201Promises on request data in Node.js were not triggered.
2202</para>
2203</change>
2204
2205<change type="bugfix">
2206<para>
2207various compatibility issues with Node.js applications.
2208</para>
2209</change>
2210
2211<change type="bugfix">
2212<para>
2213a segmentation fault occurred in Node.js module if application tried to read
2214request body after request.end() was called.
2215</para>
2216</change>
2217
2218<change type="bugfix">
2219<para>
2220a segmentation fault occurred in Node.js module if application attempted to
2221send header twice.
2222</para>
2223</change>
2224
2225<change type="bugfix">
2226<para>
2227names of response header fields in Node.js module were erroneously treated as
2228case-sensitive.
2229</para>
2230</change>
2231
2232<change type="bugfix">
2233<para>
2234uncatched exceptions in Node.js were not logged.
2235</para>
2236</change>
2237
2238<change type="bugfix">
2239<para>
2240global install of Node.js module from sources was broken on some systems;
2241the bug had appeared in 1.6.
2242</para>
2243</change>
2244
2245<change type="bugfix">
2246<para>
2247traceback for exceptions during initialization of Python applications might not
2248be logged.
2249</para>
2250</change>
2251
2252<change type="bugfix">
2253<para>
2254PHP module build failed if PHP interpreter was built with thread safety
2255enabled.
2256</para>
2257</change>
2258
2259</changes>
2260
2261
2262<changes apply="unit-php
2263                unit-python unit-python2.7
2264                unit-python3.4 unit-python3.5 unit-python3.6
2265                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2266                unit-perl
2267                unit-ruby"
2268         ver="1.6" rev="1"
2269         date="2018-11-15" time="18:00:00 +0300"
2270         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2271
2272<change>
2273<para>
2274NGINX Unit updated to 1.6.
2275</para>
2276</change>
2277
2278</changes>
2279
2280
2281<changes apply="unit" ver="1.6" rev="1"
2282         date="2018-11-15" time="18:00:00 +0300"
2283         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2284
2285<change type="change">
2286<para>
2287"make install" now installs Node.js module as well if it was configured.
2288</para>
2289</change>
2290
2291<change type="feature">
2292<para>
2293"--local" ./configure option to install Node.js module locally.
2294</para>
2295</change>
2296
2297<change type="bugfix">
2298<para>
2299Node.js module might have crashed due to broken reference counting.
2300</para>
2301</change>
2302
2303<change type="bugfix">
2304<para>
2305asynchronous operations in Node.js might not have worked.
2306</para>
2307</change>
2308
2309<change type="bugfix">
2310<para>
2311various compatibility issues with Node.js applications.
2312</para>
2313</change>
2314
2315<change type="bugfix">
2316<para>
2317"freed pointer is out of pool" alerts might have appeared in log.
2318</para>
2319</change>
2320
2321<change type="bugfix">
2322<para>
2323module discovery did not work on 64-bit big-endian systems like IBM/S390x.
2324</para>
2325</change>
2326
2327</changes>
2328
2329
2330<changes apply="unit-php
2331                unit-python unit-python2.7
2332                unit-python3.4 unit-python3.5 unit-python3.6
2333                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2334                unit-perl
2335                unit-ruby"
2336         ver="1.5" rev="1"
2337         date="2018-10-25" time="18:00:00 +0300"
2338         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2339
2340<change>
2341<para>
2342NGINX Unit updated to 1.5.
2343</para>
2344</change>
2345
2346</changes>
2347
2348
2349<changes apply="unit" ver="1.5" rev="1"
2350         date="2018-10-25" time="18:00:00 +0300"
2351         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2352
2353<change type="change">
2354<para>
2355the "type" of application object for Go was changed to "external".
2356</para>
2357</change>
2358
2359<change type="feature">
2360<para>
2361initial version of Node.js package with basic HTTP request-response support.
2362</para>
2363</change>
2364
2365<change type="feature">
2366<para>
2367compatibility with LibreSSL.
2368</para>
2369</change>
2370
2371<change type="feature">
2372<para>
2373--libdir and --incdir ./configure options to install libunit headers
2374and static library.
2375</para>
2376</change>
2377
2378<change type="bugfix">
2379<para>
2380connection might be closed prematurely while sending response;
2381the bug had appeared in 1.3.
2382</para>
2383</change>
2384
2385<change type="bugfix">
2386<para>
2387application processes might have stopped handling requests, producing
2388"last message send failed: Resource temporarily unavailable" alerts in log;
2389the bug had appeared in 1.4.
2390</para>
2391</change>
2392
2393<change type="bugfix">
2394<para>
2395Go applications did not work when Unit was built with musl C library.
2396</para>
2397</change>
2398
2399</changes>
2400
2401
2402<changes apply="unit-php
2403                unit-python unit-python2.7
2404                unit-python3.4 unit-python3.5 unit-python3.6
2405                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2406                unit-perl
2407                unit-ruby"
2408         ver="1.4" rev="2"
2409         date="2018-09-27" time="13:30:00 +0300"
2410         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2411
2412<change type="bugfix">
2413<para>
2414corrected instructions for launching sample application.
2415</para>
2416</change>
2417
2418</changes>
2419
2420
2421<changes apply="unit" ver="1.4" rev="2"
2422         date="2018-09-27" time="13:30:00 +0300"
2423         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2424
2425<change type="change">
2426<para>
2427the "saveconfig" and "loadconfig" action scripts were removed.
2428</para>
2429</change>
2430
2431</changes>
2432
2433
2434<changes apply="unit-php
2435                unit-python unit-python2.7
2436                unit-python3.4 unit-python3.5 unit-python3.6
2437                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2438                unit-perl
2439                unit-ruby"
2440         ver="1.4" rev="1"
2441         date="2018-09-20" time="18:00:00 +0300"
2442         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2443
2444<change>
2445<para>
2446NGINX Unit updated to 1.4.
2447</para>
2448</change>
2449
2450</changes>
2451
2452
2453<changes apply="unit" ver="1.4" rev="1"
2454         date="2018-09-20" time="18:00:00 +0300"
2455         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2456
2457<change type="change">
2458<para>
2459the control API maps the configuration object only at "/config/".
2460</para>
2461</change>
2462
2463<change type="feature">
2464<para>
2465TLS support for client connections.
2466</para>
2467</change>
2468
2469<change type="feature">
2470<para>
2471TLS certificates storage control API.
2472</para>
2473</change>
2474
2475<change type="feature">
2476<para>
2477Unit library (libunit) to streamline language module integration.
2478</para>
2479</change>
2480
2481<change type="feature">
2482<para>
2483"408 Request Timeout" responses while closing HTTP keep-alive connections.
2484</para>
2485</change>
2486
2487<change type="feature">
2488<para>
2489improvements in OpenBSD support.
2490Thanks to David Carlier.
2491</para>
2492</change>
2493
2494<change type="bugfix">
2495<para>
2496a segmentation fault might have occurred after reconfiguration.
2497</para>
2498</change>
2499
2500<change type="bugfix">
2501<para>
2502building on systems with non-default locale might be broken.
2503</para>
2504</change>
2505
2506<change type="bugfix">
2507<para>
2508"header_read_timeout" might not work properly.
2509</para>
2510</change>
2511
2512<change type="bugfix">
2513<para>
2514header fields values with non-ASCII bytes might be handled incorrectly
2515in Python 3 module.
2516</para>
2517</change>
2518
2519</changes>
2520
2521
2522<changes apply="unit-php
2523                unit-python unit-python2.7
2524                unit-python3.4 unit-python3.5 unit-python3.6
2525                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2526                unit-perl
2527                unit-ruby"
2528         ver="1.3" rev="1"
2529         date="2018-07-13" time="18:00:00 +0300"
2530         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2531
2532<change>
2533<para>
2534NGINX Unit updated to 1.3.
2535</para>
2536</change>
2537
2538</changes>
2539
2540
2541<changes apply="unit" ver="1.3" rev="1"
2542         date="2018-07-13" time="18:00:00 +0300"
2543         packager="Konstantin Pavlov &lt;thresh@nginx.com&gt;">
2544
2545<change type="change">
2546<para>
2547UTF-8 characters are now allowed in request header field values.
2548</para>
2549</change>
2550
2551<change type="feature">
2552<para>
2553configuration of the request body size limit.
2554</para>
2555</change>
2556
2557<change type="feature">
2558<para>
2559configuration of various HTTP connection timeouts.
2560</para>
2561</change>
2562
2563<change type="feature">
2564<para>
2565Ruby module now automatically uses Bundler where possible.
2566</para>
2567</change>
2568
2569<change type="feature">
2570<para>
2571http.Flusher interface in Go module.
2572</para>
2573</change>
2574
2575<change type="bugfix">
2576<para>
2577various issues in HTTP connection errors handling.
2578</para>
2579</change>
2580
2581<change type="bugfix">
2582<para>
2583requests with body data might be handled incorrectly in PHP module.
2584</para>
2585</change>
2586
2587<change type="bugfix">
2588<para>
2589individual PHP configuration options specified via control API were reset
2590to previous values after the first request in application process.
2591</para>
2592</change>
2593
2594</changes>
2595
2596
2597<changes apply="unit-php
2598                unit-python unit-python2.7
2599                unit-python3.4 unit-python3.5 unit-python3.6
2600                unit-go unit-go1.7 unit-go1.8 unit-go1.9 unit-go1.10
2601                unit-perl
2602                unit-ruby"
2603         ver="1.2" rev="1"
2604         date="2018-06-07" time="18:00:00 +0300"
2605         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2606
2607<change>
2608<para>
2609NGINX Unit updated to 1.2.
2610</para>
2611</change>
2612
2613</changes>
2614
2615
2616<changes apply="unit" ver="1.2" rev="1"
2617         date="2018-06-07" time="18:00:00 +0300"
2618         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2619
2620<change type="feature">
2621<para>
2622configuration of environment variables for application processes.
2623</para>
2624</change>
2625
2626<change type="feature">
2627<para>
2628customization of php.ini path.
2629</para>
2630</change>
2631
2632<change type="feature">
2633<para>
2634setting of individual PHP configuration options.
2635</para>
2636</change>
2637
2638<change type="feature">
2639<para>
2640configuration of execution arguments for Go applications.
2641</para>
2642</change>
2643
2644<change type="bugfix">
2645<para>
2646keep-alive connections might hang after reconfiguration.
2647</para>
2648</change>
2649
2650</changes>
2651
2652
2653<changes apply="unit-go1.10" ver="1.1" rev="1"
2654         date="2018-05-14" time="18:00:00 +0300"
2655         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2656
2657<change>
2658<para>
2659Initial release of Go 1.10 module for NGINX Unit.
2660</para>
2661</change>
2662
2663</changes>
2664
2665
2666<changes apply="unit-php
2667                unit-python unit-python2.7
2668                unit-python3.4 unit-python3.5 unit-python3.6
2669                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2670                unit-perl
2671                unit-ruby"
2672         ver="1.1" rev="1"
2673         date="2018-04-26" time="18:00:00 +0300"
2674         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2675
2676<change>
2677<para>
2678NGINX Unit updated to 1.1.
2679</para>
2680</change>
2681
2682</changes>
2683
2684
2685<changes apply="unit" ver="1.1" rev="1"
2686         date="2018-04-26" time="18:00:00 +0300"
2687         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2688
2689<change type="bugfix">
2690<para>
2691Python applications that use the write() callable did not work.
2692</para>
2693</change>
2694
2695<change type="bugfix">
2696<para>
2697virtual environments created with Python 3.3 or above might not have worked.
2698</para>
2699</change>
2700
2701<change type="bugfix">
2702<para>
2703the request.Read() function in Go applications did not produce EOF
2704when the whole body was read.
2705</para>
2706</change>
2707
2708<change type="bugfix">
2709<para>
2710a segmentation fault might have occurred while access log reopening.
2711</para>
2712</change>
2713
2714<change type="bugfix">
2715<para>
2716in parsing of IPv6 control socket addresses.
2717</para>
2718</change>
2719
2720<change type="bugfix">
2721<para>
2722loading of application modules was broken on OpenBSD.
2723</para>
2724</change>
2725
2726<change type="bugfix">
2727<para>
2728a segmentation fault might have occurred when there were two modules
2729with the same type and version; the bug had appeared in 1.0.
2730</para>
2731</change>
2732
2733<change type="bugfix">
2734<para>
2735alerts "freed pointer points to non-freeble page" might have appeared in log
2736on 32-bit platforms.
2737</para>
2738</change>
2739
2740</changes>
2741
2742
2743<changes apply="unit-php
2744                unit-python unit-python2.7
2745                unit-python3.4 unit-python3.5 unit-python3.6
2746                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2747                unit-perl
2748                unit-ruby"
2749         ver="1.0" rev="1"
2750         date="2018-04-12" time="18:00:00 +0300"
2751         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2752
2753<change>
2754<para>
2755NGINX Unit updated to 1.0.
2756</para>
2757</change>
2758
2759</changes>
2760
2761
2762<changes apply="unit" ver="1.0" rev="1"
2763         date="2018-04-12" time="18:00:00 +0300"
2764         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2765
2766<change type="change">
2767<para>
2768configuration object moved into "/config/" path.
2769</para>
2770</change>
2771
2772<change type="feature">
2773<para>
2774basic access logging.
2775</para>
2776</change>
2777
2778<change type="bugfix">
2779<para>
2780503 error occurred if Go application did not write response header or body.
2781</para>
2782</change>
2783
2784<change type="bugfix">
2785<para>
2786Ruby applications that use encoding conversions might not have worked.
2787</para>
2788</change>
2789
2790<change type="bugfix">
2791<para>
2792various stability issues.
2793</para>
2794</change>
2795
2796</changes>
2797
2798
2799<changes apply="unit-php
2800                unit-python unit-python2.7
2801                unit-python3.4 unit-python3.5 unit-python3.6
2802                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2803                unit-perl"
2804         ver="0.7" rev="1"
2805         date="2018-03-22" time="18:00:00 +0300"
2806         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2807
2808<change>
2809<para>
2810NGINX Unit updated to 0.7.
2811</para>
2812</change>
2813
2814</changes>
2815
2816
2817<changes apply="unit-ruby" ver="0.7" rev="1"
2818         date="2018-04-02" time="15:40:00 +0300"
2819         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2820
2821<change>
2822<para>
2823Initial release of Ruby module for NGINX Unit.
2824</para>
2825</change>
2826
2827</changes>
2828
2829
2830<changes apply="unit" ver="0.7" rev="1"
2831         date="2018-03-22" time="18:00:00 +0300"
2832         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2833
2834<change type="feature">
2835<para>
2836Ruby application module.
2837</para>
2838</change>
2839
2840<change type="bugfix">
2841<para>
2842in discovering modules.
2843</para>
2844</change>
2845
2846<change type="bugfix">
2847<para>
2848various race conditions on reconfiguration and during shutting down.
2849</para>
2850</change>
2851
2852<change type="bugfix">
2853<para>
2854tabs and trailing spaces were not allowed in header fields values.
2855</para>
2856</change>
2857
2858<change type="bugfix">
2859<para>
2860a segmentation fault occurred in Python module if start_response() was called
2861outside of WSGI callable.
2862</para>
2863</change>
2864
2865<change type="bugfix">
2866<para>
2867a segmentation fault might have occurred in PHP module if there was an error
2868while initialization.
2869</para>
2870</change>
2871
2872</changes>
2873
2874
2875<changes apply="unit-php
2876                unit-python unit-python2.7
2877                unit-python3.4 unit-python3.5 unit-python3.6
2878                unit-go unit-go1.7 unit-go1.8 unit-go1.9
2879                unit-perl"
2880         ver="0.6" rev="1"
2881         date="2018-02-09" time="18:00:00 +0300"
2882         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2883
2884<change>
2885<para>
2886NGINX Unit updated to 0.6.
2887</para>
2888</change>
2889
2890</changes>
2891
2892
2893<changes apply="unit" ver="0.6" rev="1"
2894         date="2018-02-09" time="18:00:00 +0300"
2895         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2896
2897<change type="bugfix">
2898<para>
2899the main process died when the "type" application option contained version;
2900the bug had appeared in 0.5.
2901</para>
2902</change>
2903
2904</changes>
2905
2906
2907<changes apply="unit-php
2908                unit-python unit-python2.7
2909                unit-python3.4 unit-python3.5 unit-python3.6
2910                unit-go unit-go1.7 unit-go1.8 unit-go1.9"
2911         ver="0.5" rev="1"
2912         date="2018-02-08" time="18:00:00 +0300"
2913         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2914
2915<change>
2916<para>
2917NGINX Unit updated to 0.5.
2918</para>
2919</change>
2920
2921</changes>
2922
2923
2924<changes apply="unit-perl" ver="0.5" rev="1"
2925         date="2018-02-08" time="18:00:00 +0300"
2926         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2927
2928<change>
2929<para>
2930Initial release of Perl module for NGINX Unit.
2931</para>
2932</change>
2933
2934</changes>
2935
2936
2937<changes apply="unit" ver="0.5" rev="1"
2938         date="2018-02-08" time="18:00:00 +0300"
2939         packager="Andrei Belov &lt;defan@nginx.com&gt;">
2940
2941<change type="change">
2942<para>
2943the "workers" application option was removed, the "processes"
2944application option should be used instead.
2945</para>
2946</change>
2947
2948<change type="feature">
2949<para>
2950the "processes" application option with prefork and dynamic
2951process management support.
2952</para>
2953</change>
2954
2955<change type="feature">
2956<para>
2957Perl application module.
2958</para>
2959</change>
2960
2961<change type="bugfix">
2962<para>
2963in reading client request body; the bug had appeared in 0.3.
2964</para>
2965</change>
2966
2967<change type="bugfix">
2968<para>
2969some Python applications might not have worked due to missing
2970"wsgi.errors" environ variable.
2971</para>
2972</change>
2973
2974<change type="bugfix">
2975<para>
2976HTTP chunked responses might be encoded incorrectly on 32-bit
2977platforms.
2978</para>
2979</change>
2980
2981<change type="bugfix">
2982<para>
2983infinite looping in HTTP parser.
2984</para>
2985</change>
2986
2987<change type="bugfix">
2988<para>
2989segmentation fault in router.
2990</para>
2991</change>
2992
2993</changes>
2994
2995
2996<changes apply="unit-php
2997                unit-python unit-python2.7
2998                unit-python3.4 unit-python3.5 unit-python3.6
2999                unit-go unit-go1.7 unit-go1.8 unit-go1.9"
3000         ver="0.4" rev="1"
3001         date="2018-01-15" time="18:00:00 +0300"
3002         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3003
3004<change>
3005<para>
3006NGINX Unit updated to 0.4.
3007</para>
3008</change>
3009
3010</changes>
3011
3012
3013<changes apply="unit" ver="0.4" rev="1"
3014         date="2018-01-15" time="18:00:00 +0300"
3015         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3016
3017<change type="feature">
3018<para>
3019compatibility with DragonFly BSD.
3020</para>
3021</change>
3022
3023<change type="feature">
3024<para>
3025"configure php --lib-static" option.
3026</para>
3027</change>
3028
3029<change type="bugfix">
3030<para>
3031HTTP request body was not passed to application;
3032the bug had appeared in 0.3.
3033</para>
3034</change>
3035
3036<change type="bugfix">
3037<para>
3038HTTP large header buffers allocation and deallocation fixed;
3039the bug had appeared in 0.3.
3040</para>
3041</change>
3042
3043<change type="bugfix">
3044<para>
3045some PHP applications might not have worked with relative "root" path.
3046</para>
3047</change>
3048
3049</changes>
3050
3051
3052<changes apply="unit-go1.9" ver="0.3" rev="1"
3053         date="2017-12-28" time="18:00:00 +0300"
3054         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3055
3056<change>
3057<para>
3058Initial release of Go 1.9 module for NGINX Unit.
3059</para>
3060</change>
3061
3062</changes>
3063
3064
3065<changes apply="unit-python3.6" ver="0.3" rev="1"
3066         date="2017-12-28" time="18:00:00 +0300"
3067         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3068
3069<change>
3070<para>
3071Initial release of Python 3.6 module for NGINX Unit.
3072</para>
3073</change>
3074
3075</changes>
3076
3077
3078<changes apply="unit-php
3079                unit-python unit-python2.7 unit-python3.4 unit-python3.5
3080                unit-go unit-go1.7 unit-go1.8"
3081         ver="0.3" rev="1"
3082         date="2017-12-28" time="18:00:00 +0300"
3083         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3084
3085<change>
3086<para>
3087NGINX Unit updated to 0.3.
3088</para>
3089</change>
3090
3091</changes>
3092
3093
3094<changes apply="unit" ver="0.3" rev="1"
3095         date="2017-12-28" time="18:00:00 +0300"
3096         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3097
3098<change type="change">
3099<para>
3100the Go package name changed to "nginx/unit".
3101</para>
3102</change>
3103
3104<change type="change">
3105<para>
3106in the "limits.timeout" application option: application start time and
3107time in queue now are not accounted.
3108</para>
3109</change>
3110
3111<change type="feature">
3112<para>
3113the "limits.requests" application option.
3114</para>
3115</change>
3116
3117<change type="feature">
3118<para>
3119application request processing latency optimization.
3120</para>
3121</change>
3122
3123<change type="feature">
3124<para>
3125HTTP keep-alive connections support.
3126</para>
3127</change>
3128
3129<change type="feature">
3130<para>
3131the "home" Python virtual environment configuration option.
3132</para>
3133</change>
3134
3135<change type="feature">
3136<para>
3137Python atexit hook support.
3138</para>
3139</change>
3140
3141<change type="feature">
3142<para>
3143various Go package improvements.
3144</para>
3145</change>
3146
3147<change type="bugfix">
3148<para>
3149various crashes fixed.
3150</para>
3151</change>
3152
3153</changes>
3154
3155
3156<changes apply="unit-go" ver="0.2" rev="1"
3157         date="2017-10-19" time="18:00:00 +0300"
3158         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3159
3160<change>
3161<para>
3162Initial release of Go module for NGINX Unit.
3163</para>
3164</change>
3165
3166</changes>
3167
3168
3169<changes apply="unit-go1.7" ver="0.2" rev="1"
3170         date="2017-10-19" time="18:00:00 +0300"
3171         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3172
3173<change>
3174<para>
3175Initial release of Go 1.7 module for NGINX Unit.
3176</para>
3177</change>
3178
3179</changes>
3180
3181
3182<changes apply="unit-go1.8" ver="0.2" rev="1"
3183         date="2017-10-19" time="18:00:00 +0300"
3184         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3185
3186<change>
3187<para>
3188Initial release of Go 1.8 module for NGINX Unit.
3189</para>
3190</change>
3191
3192</changes>
3193
3194
3195<changes apply="unit-python" ver="0.2" rev="1"
3196         date="2017-10-19" time="18:00:00 +0300"
3197         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3198
3199<change>
3200<para>
3201Initial release of Python module for NGINX Unit.
3202</para>
3203</change>
3204
3205</changes>
3206
3207
3208<changes apply="unit-python2.7" ver="0.2" rev="1"
3209         date="2017-10-19" time="18:00:00 +0300"
3210         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3211
3212<change>
3213<para>
3214Initial release of Python 2.7 module for NGINX Unit.
3215</para>
3216</change>
3217
3218</changes>
3219
3220
3221<changes apply="unit-python3.4" ver="0.2" rev="1"
3222         date="2017-10-19" time="18:00:00 +0300"
3223         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3224
3225<change>
3226<para>
3227Initial release of Python 3.4 module for NGINX Unit.
3228</para>
3229</change>
3230
3231</changes>
3232
3233
3234<changes apply="unit-python3.5" ver="0.2" rev="1"
3235         date="2017-10-19" time="18:00:00 +0300"
3236         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3237
3238<change>
3239<para>
3240Initial release of Python 3.5 module for NGINX Unit.
3241</para>
3242</change>
3243
3244</changes>
3245
3246
3247<changes apply="unit-php" ver="0.2" rev="1"
3248         date="2017-10-19" time="18:00:00 +0300"
3249         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3250
3251<change>
3252<para>
3253Initial release of PHP module for NGINX Unit.
3254</para>
3255</change>
3256
3257</changes>
3258
3259
3260<changes apply="unit" ver="0.2" rev="1"
3261         date="2017-10-19" time="18:00:00 +0300"
3262         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3263
3264<change type="feature">
3265<para>
3266configuration persistence.
3267</para>
3268</change>
3269
3270<change type="feature">
3271<para>
3272improved handling of configuration errors.
3273</para>
3274</change>
3275
3276<change type="feature">
3277<para>
3278application "timeout" property.
3279</para>
3280</change>
3281
3282<change type="bugfix">
3283<para>
3284POST request for PHP were handled incorrectly.
3285</para>
3286</change>
3287
3288<change type="bugfix">
3289<para>
3290the router exited abnormally if all listeners had been deleted.
3291</para>
3292</change>
3293
3294<change type="bugfix">
3295<para>
3296the router crashed under load.
3297</para>
3298</change>
3299
3300<change type="bugfix">
3301<para>
3302memory leak in the router.
3303</para>
3304</change>
3305
3306</changes>
3307
3308
3309<changes apply="unit" ver="0.1" rev="1"
3310         date="2017-09-06" time="19:14:28 +0300"
3311         packager="Andrei Belov &lt;defan@nginx.com&gt;">
3312
3313<change>
3314<para>
3315First public release.
3316</para>
3317</change>
3318
3319</changes>
3320
3321
3322</change_log>
3323