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