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