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