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