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