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