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