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