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