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