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