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