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