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