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