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