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