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