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