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