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