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