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