1 2Changes with Unit 1.12.0 03 Oct 2019 3 4 *) Feature: compatibility with PHP 7.4. 5 6 *) Bugfix: descriptors leak on process creation; the bug had appeared in 7 1.11.0. 8 9 *) Bugfix: TLS connection might be closed prematurely while sending 10 response. 11 12 *) Bugfix: segmentation fault might have occurred if an irregular file 13 was requested. 14 15 16Changes with Unit 1.11.0 19 Sep 2019 17 18 *) Feature: basic support for serving static files. 19 20 *) Feature: isolation of application processes with Linux namespaces. 21 22 *) Feature: built-in WebSocket server implementation for Java Servlet 23 Containers. 24 25 *) Feature: direct addressing of API configuration options containing 26 slashes "/" using URI encoding (%2F). 27 28 *) Bugfix: segmentation fault might have occurred in Go applications 29 under high load. 30 31 *) Bugfix: WebSocket support was broken if Unit was built with some 32 linkers other than GNU ld (e.g. gold or LLD). 33 34 35Changes with Unit 1.10.0 22 Aug 2019 36 37 *) Change: matching of cookies in routes made case sensitive. 38 39 *) Change: decreased log level of common errors when clients close 40 connections. 41 42 *) Change: removed the Perl module's "--include=" ./configure option. 43 44 *) Feature: built-in WebSocket server implementation for Node.js module. 45 46 *) Feature: splitting PATH_INFO from request URI in PHP module. 47 48 *) Feature: request routing by scheme (HTTP or HTTPS). 49 50 *) Feature: support for multipart requests body in Java module. 51 52 *) Feature: improved API compatibility with Node.js 11.10 or later. 53 54 *) Bugfix: reconfiguration failed if "listeners" or "applications" 55 objects were missing. 56 57 *) Bugfix: applying a large configuration might have failed. 58 59 60Changes with Unit 1.9.0 30 May 2019 61 62 *) Feature: request routing by arguments, headers, and cookies. 63 64 *) Feature: route matching patterns allow a wildcard in the middle. 65 66 *) Feature: POST operation for appending elements to arrays in 67 configuration. 68 69 *) Feature: support for changing credentials using CAP_SETUID and 70 CAP_SETGID capabilities on Linux without running main process as 71 privileged user. 72 73 *) Bugfix: memory leak in the router process might have happened when a 74 client prematurely closed the connection. 75 76 *) Bugfix: applying a large configuration might have failed. 77 78 *) Bugfix: PUT and DELETE operations on array elements in configuration 79 did not work. 80 81 *) Bugfix: request schema in applications did not reflect TLS 82 connections. 83 84 *) Bugfix: restored compatibility with Node.js applications that use 85 ServerResponse._implicitHeader() function; the bug had appeared in 86 1.7. 87 88 *) Bugfix: various compatibility issues with Node.js applications. 89 90 91Changes with Unit 1.8.0 01 Mar 2019 92 93 *) Change: now three numbers are always used for versioning: major, 94 minor, and patch versions. 95 96 *) Change: now QUERY_STRING is always defined even if the request does 97 not include the query component. 98 99 *) Feature: basic internal request routing by Host, URI, and method. 100 101 *) Feature: experimental support for Java Servlet Containers. 102 103 *) Bugfix: segmentation fault might have occurred in the router process. 104 105 *) Bugfix: various potential memory leaks. 106 107 *) Bugfix: TLS connections might have stalled. 108 109 *) Bugfix: some Perl applications might have failed to send the response 110 body. 111 112 *) Bugfix: some compilers with specific flags might have produced 113 non-functioning builds; the bug had appeared in 1.5. 114 115 *) Bugfix: Node.js package had wrong version number when installed from 116 sources. 117 118 119Changes with Unit 1.7.1 07 Feb 2019 120 121 *) Security: a heap memory buffer overflow might have been caused in the 122 router process by a specially crafted request, potentially resulting 123 in a segmentation fault or other unspecified behavior 124 (CVE-2019-7401). 125 126 *) Bugfix: install of Go module failed without prior building of Unit 127 daemon; the bug had appeared in 1.7. 128 129 130Changes with Unit 1.7 20 Dec 2018 131 132 *) Change: now rpath is set in Ruby module only if the library was not 133 found in default search paths; this allows to meet packaging 134 restrictions on some systems. 135 136 *) Bugfix: "disable_functions" and "disable_classes" PHP options set via 137 Control API did not work. 138 139 *) Bugfix: Promises on request data in Node.js were not triggered. 140 141 *) Bugfix: various compatibility issues with Node.js applications. 142 143 *) Bugfix: a segmentation fault occurred in Node.js module if 144 application tried to read request body after request.end() was 145 called. 146 147 *) Bugfix: a segmentation fault occurred in Node.js module if 148 application attempted to send header twice. 149 150 *) Bugfix: names of response header fields in Node.js module were 151 erroneously treated as case-sensitive. 152 153 *) Bugfix: uncatched exceptions in Node.js were not logged. 154 155 *) Bugfix: global install of Node.js module from sources was broken on 156 some systems; the bug had appeared in 1.6. 157 158 *) Bugfix: traceback for exceptions during initialization of Python 159 applications might not be logged. 160 161 *) Bugfix: PHP module build failed if PHP interpreter was built with 162 thread safety enabled. 163 164 165Changes with Unit 1.6 15 Nov 2018 166 167 *) Change: "make install" now installs Node.js module as well if it was 168 configured. 169 170 *) Feature: "--local" ./configure option to install Node.js module 171 locally. 172 173 *) Bugfix: Node.js module might have crashed due to broken reference 174 counting. 175 176 *) Bugfix: asynchronous operations in Node.js might not have worked. 177 178 *) Bugfix: various compatibility issues with Node.js applications. 179 180 *) Bugfix: "freed pointer is out of pool" alerts might have appeared in 181 log. 182 183 *) Bugfix: module discovery did not work on 64-bit big-endian systems 184 like IBM/S390x. 185 186 187Changes with Unit 1.5 25 Oct 2018 188 189 *) Change: the "type" of application object for Go was changed to 190 "external". 191 192 *) Feature: initial version of Node.js package with basic HTTP 193 request-response support. 194 195 *) Feature: compatibility with LibreSSL. 196 197 *) Feature: --libdir and --incdir ./configure options to install libunit 198 headers and static library. 199 200 *) Bugfix: connection might be closed prematurely while sending 201 response; the bug had appeared in 1.3. 202 203 *) Bugfix: application processes might have stopped handling requests, 204 producing "last message send failed: Resource temporarily 205 unavailable" alerts in log; the bug had appeared in 1.4. 206 207 *) Bugfix: Go applications did not work when Unit was built with musl C 208 library. 209 210 211Changes with Unit 1.4 20 Sep 2018 212 213 *) Change: the control API maps the configuration object only at 214 "/config/". 215 216 *) Feature: TLS support for client connections. 217 218 *) Feature: TLS certificates storage control API. 219 220 *) Feature: Unit library (libunit) to streamline language module 221 integration. 222 223 *) Feature: "408 Request Timeout" responses while closing HTTP 224 keep-alive connections. 225 226 *) Feature: improvements in OpenBSD support. Thanks to David Carlier. 227 228 *) Bugfix: a segmentation fault might have occurred after 229 reconfiguration. 230 231 *) Bugfix: building on systems with non-default locale might be broken. 232 233 *) Bugfix: "header_read_timeout" might not work properly. 234 235 *) Bugfix: header fields values with non-ASCII bytes might be handled 236 incorrectly in Python 3 module. 237 238 239Changes with Unit 1.3 13 Jul 2018 240 241 *) Change: UTF-8 characters are now allowed in request header field 242 values. 243 244 *) Feature: configuration of the request body size limit. 245 246 *) Feature: configuration of various HTTP connection timeouts. 247 248 *) Feature: Ruby module now automatically uses Bundler where possible. 249 250 *) Feature: http.Flusher interface in Go module. 251 252 *) Bugfix: various issues in HTTP connection errors handling. 253 254 *) Bugfix: requests with body data might be handled incorrectly in PHP 255 module. 256 257 *) Bugfix: individual PHP configuration options specified via control 258 API were reset to previous values after the first request in 259 application process. 260 261 262Changes with Unit 1.2 07 Jun 2018 263 264 *) Feature: configuration of environment variables for application 265 processes. 266 267 *) Feature: customization of php.ini path. 268 269 *) Feature: setting of individual PHP configuration options. 270 271 *) Feature: configuration of execution arguments for Go applications. 272 273 *) Bugfix: keep-alive connections might hang after reconfiguration. 274 275 276Changes with Unit 1.1 26 Apr 2018 277 278 *) Bugfix: Python applications that use the write() callable did not 279 work. 280 281 *) Bugfix: virtual environments created with Python 3.3 or above might 282 not have worked. 283 284 *) Bugfix: the request.Read() function in Go applications did not 285 produce EOF when the whole body was read. 286 287 *) Bugfix: a segmentation fault might have occurred while access log 288 reopening. 289 290 *) Bugfix: in parsing of IPv6 control socket addresses. 291 292 *) Bugfix: loading of application modules was broken on OpenBSD. 293 294 *) Bugfix: a segmentation fault might have occurred when there were two 295 modules with the same type and version; the bug had appeared in 1.0. 296 297 *) Bugfix: alerts "freed pointer points to non-freeble page" might have 298 appeared in log on 32-bit platforms. 299 300 301Changes with Unit 1.0 12 Apr 2018 302 303 *) Change: configuration object moved into "/config/" path. 304 305 *) Feature: basic access logging. 306 307 *) Bugfix: 503 error occurred if Go application did not write response 308 header or body. 309 310 *) Bugfix: Ruby applications that use encoding conversions might not 311 have worked. 312 313 *) Bugfix: various stability issues. 314 315 316Changes with Unit 0.7 22 Mar 2018 317 318 *) Feature: Ruby application module. 319 320 *) Bugfix: in discovering modules. 321 322 *) Bugfix: various race conditions on reconfiguration and during 323 shutting down. 324 325 *) Bugfix: tabs and trailing spaces were not allowed in header fields 326 values. 327 328 *) Bugfix: a segmentation fault occurred in Python module if 329 start_response() was called outside of WSGI callable. 330 331 *) Bugfix: a segmentation fault might have occurred in PHP module if 332 there was an error while initialization. 333 334 335Changes with Unit 0.6 09 Feb 2018 336 337 *) Bugfix: the main process died when the "type" application option 338 contained version; the bug had appeared in 0.5. 339 340 341Changes with Unit 0.5 08 Feb 2018 342 343 *) Change: the "workers" application option was removed, the "processes" 344 application option should be used instead. 345 346 *) Feature: the "processes" application option with prefork and dynamic 347 process management support. 348 349 *) Feature: Perl application module. 350 351 *) Bugfix: in reading client request body; the bug had appeared in 0.3. 352 353 *) Bugfix: some Python applications might not have worked due to missing 354 "wsgi.errors" environ variable. 355 356 *) Bugfix: HTTP chunked responses might be encoded incorrectly on 32-bit 357 platforms. 358 359 *) Bugfix: infinite looping in HTTP parser. 360 361 *) Bugfix: segmentation fault in router. 362 363 364Changes with Unit 0.4 15 Jan 2018 365 366 *) Feature: compatibility with DragonFly BSD. 367 368 *) Feature: "configure php --lib-static" option. 369 370 *) Bugfix: HTTP request body was not passed to application; the bug had 371 appeared in 0.3. 372 373 *) Bugfix: HTTP large header buffers allocation and deallocation fixed; 374 the bug had appeared in 0.3. 375 376 *) Bugfix: some PHP applications might not have worked with relative 377 "root" path. 378 379 380Changes with Unit 0.3 28 Dec 2017 381 382 *) Change: the Go package name changed to "nginx/unit". 383 384 *) Change: in the "limits.timeout" application option: application start 385 time and time in queue now are not accounted. 386 387 *) Feature: the "limits.requests" application option. 388 389 *) Feature: application request processing latency optimization. 390 391 *) Feature: HTTP keep-alive connections support. 392 393 *) Feature: the "home" Python virtual environment configuration option. 394 395 *) Feature: Python atexit hook support. 396 397 *) Feature: various Go package improvements. 398 399 *) Bugfix: various crashes fixed. 400 401 402Changes with Unit 0.2 19 Oct 2017 403 404 *) Feature: configuration persistence. 405 406 *) Feature: improved handling of configuration errors. 407 408 *) Feature: application "timeout" property. 409 410 *) Bugfix: POST request for PHP were handled incorrectly. 411 412 *) Bugfix: the router exited abnormally if all listeners had been 413 deleted. 414 415 *) Bugfix: the router crashed under load. 416 417 *) Bugfix: memory leak in the router. 418 419 420Changes with Unit 0.1 06 Sep 2017 421 422 *) First public release. 423 424