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