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