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