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