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