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