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