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