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