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