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