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