xref: /unit/CHANGES (revision 1185:313bb8f91a6b)
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