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