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