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