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