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