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