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