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