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