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