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