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