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