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