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