-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathHISTORY.md.html
235 lines (235 loc) · 20.2 KB
/
HISTORY.md.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<h1><a id="user-content-downloads--release-history" class="anchor" aria-hidden="true" href="#downloads--release-history"><span aria-hidden="true" class="octicon octicon-link"></span></a>Downloads & Release History</h1>
<ol>
<li><a href="http://sourceforge.net/projects/nginx-clojure/files/" rel="nofollow">Binaries of Releases</a></li>
<li><a href="https://github.com/nginx-clojure/nginx-clojure/releases">Sources of Releases</a></li>
</ol>
<h2><a id="user-content-060-2023-03-18" class="anchor" aria-hidden="true" href="#060-2023-03-18"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.6.0 (2023-03-18)</h2>
<ol>
<li>New Feature: #270 All handlers can be used at http & server context</li>
<li>New Feature: #272 Support Nginx 1.23.X where some internals have been changed</li>
<li>New Feature: #250 Support to use jdk19 built-in coroutine viz. Continuation</li>
<li>Binaries Distribution: Built with Nginx v1.23.3</li>
<li>Documents: Add build notes for nginx-clojure-embed</li>
</ol>
<h2><a id="user-content-053-2022-03-10" class="anchor" aria-hidden="true" href="#053-2022-03-10"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.5.3 (2022-03-10)</h2>
<ol>
<li>Bug Fix: #256 NginxClojureAsynSocket isClosed is not return correct result</li>
<li>Binaries Distribution: Built with Nginx v1.20.2</li>
</ol>
<h2><a id="user-content-052-2020-12-23" class="anchor" aria-hidden="true" href="#052-2020-12-23"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.5.2 (2020-12-23)</h2>
<ol>
<li>Bug Fix: #234 Try to fix no response when NGX_AGAIN return at next header filter</li>
<li>Bug Fix: #233 Fix compiler warnings when there's no zlib found</li>
<li>Enhancement: Delayed update to improve setVariable/set-ngx-var! performance at thread-pool mode</li>
<li>Example Project: Add an example project for Jersey & Spring DI</li>
<li>Example Project: Add example for integration with Spring framework</li>
<li>Binaries Distribution: Built with Nginx v1.18.0</li>
</ol>
<h2><a id="user-content-051-2019-11-23" class="anchor" aria-hidden="true" href="#051-2019-11-23"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.5.1 (2019-11-23)</h2>
<ol>
<li>Bug Fix: Connection hangs with header filter at thread-pool mode #209 #153</li>
<li>Bug Fix: Body filter hangs when body size is larger than the value specified in proxy_buffers #219</li>
<li>Bug Fix: Segment fault caused by request is marked as closed too late #222</li>
<li>Code Style: Fix generic warnings in java code code-style #223 (Thanks to Michael @mgoblin)</li>
<li>Bug Fix: NPE caused by damaged memory because unsafe modify response headers #198</li>
<li>Bug Fix: Wrong response for uncompressed message with PMCE enabled</li>
<li>CI: both auto-triggered unit test and integration test use travis-ci</li>
</ol>
<h2><a id="user-content-050-2019-10-26" class="anchor" aria-hidden="true" href="#050-2019-10-26"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.5.0 (2019-10-26)</h2>
<ol>
<li>New Feature: Java 9, 10, 11, 12 support. But Java 6 and Java 7 are deprecated now.</li>
<li>New Feature: Log handler</li>
<li>New Feature: HTTP V2 support (thanks to Nginx v1.14.2)</li>
<li>Bug Fix: Memory leak with file handler #180</li>
<li>Bug Fix: Zero buffer error when hijack_send empty string #181</li>
<li>Bug Fix: Mysql driver issue about jdbc4 flag</li>
<li>Bug Fix: ContainsKey of nginx shared map</li>
<li>Bug Fix: NginxRequest.setVariable in a rewrite handler will hang</li>
<li>Bug Fix: Segmentation fault on shutdown</li>
<li>Bug Fix: Make clojure request map immutable for compojure</li>
<li>Enhancement: API for discarding request body (request.discardRequestBody())</li>
<li>Enhancement: Coroutine support for cascade constructor invoking</li>
<li>Enhancement: Configurable headers/variables prefetch for more safety in multithreaded mode</li>
<li>Binaries Distribution: built with Nginx v1.14.2</li>
</ol>
<h2><a id="user-content-045-2017-05-28" class="anchor" aria-hidden="true" href="#045-2017-05-28"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.4.5 (2017-05-28)</h2>
<ol>
<li>New Feature: Support to be compiled as Nginx dynamic module, thanks to <a href="https://github.com/LinuxJedi">Andrew Hutchings</a>
</li>
<li>Bug Fix: Cannot add multiple Cookies in a response</li>
<li>Bug Fix: Too many empty chunks are passed to Body filter & some body data lost</li>
<li>Enhancement: [Nginx-Jersey] Support jersey application sub class</li>
<li>Enhancement: Try to use enviroment variable JAVA_HOME to detect jvm when jvm_path is auto</li>
<li>Enhancement: NginxSharedHashMap.keySet/values/entrySet for debug/test usage.</li>
<li>Bug Fix: Can not use more than two shared maps.</li>
<li>Bug Fix: NullPointerExecption will happen when multiple rewrite handlers are invoked for one request</li>
<li>Bug Fix: Can't access ring request data in Sente handler. (content_handler_property fore-prefetch-all-properties true;)</li>
<li>Enhancement: Compile against Nginx 1.11 & Nginx 1.12</li>
<li>Bug Fix: Nginx reload will cause connection reset without response</li>
<li>Bug Fix: Header filter can not change response status from upstream</li>
<li>Bug Fix: body filters sometimes crash under thread pool mode</li>
<li>Binaries Distribution: built with the latest stable Nginx v1.12.0 & openssl v1.1.0e</li>
</ol>
<h2><a id="user-content-044-2016-03-04" class="anchor" aria-hidden="true" href="#044-2016-03-04"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.4.4 (2016-03-04)</h2>
<ol>
<li>New Feature: experimental nginx body filter by Java/Clojure/Groovy (issue #107)</li>
<li>New Feature: read request body by event callback (issue #109)</li>
<li>Bug Fix: 500 (internal server error) returns when committing 2000+ files to nginx as a proxy for apache mod_dav_svn (issue #106)</li>
</ol>
<h2><a id="user-content-043-2015-10-25" class="anchor" aria-hidden="true" href="#043-2015-10-25"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.4.3 (2015-10-25)</h2>
<ol>
<li>New Feature: Add directive <a href="//nginx-clojure.github.io/directives.html#jvm_classpath" rel="nofollow">jvm_classpath</a> which supports wildcard character * (issue #95)</li>
<li>New Feature: Add directive <a href="//nginx-clojure.github.io/directives.html#jvm_classpath_check" rel="nofollow">jvm_classpath_check</a> which is enabled by default and when it is enabled access permission about classpaths will be checked.</li>
<li>New Feature: Add <a href="//nginx-clojure.github.io/subpub.html" rel="nofollow">NginxPubSubTopic(Java)/PubSubTopic(Clojure)</a> to simplify handling messages among Nginx worker processes. (issue #97)</li>
<li>New Feature: <a href="//nginx-clojure.github.io/sharedmap.html" rel="nofollow">Shared Map based on shared memory</a> (issue #96) and it has two implementations : tinymap & hashmap.</li>
<li>New Feature: <a href="//nginx-clojure.github.io/sharedmap.html" rel="nofollow">Shared Map based Ring session store</a> (issue #98)</li>
<li>Enhancement: on-broadcast-event-decode!/on-broadcast! returns a removal function which can be used to remove the registered decoder/listener</li>
<li>Enhancement: embedded nginx-clojure becomes friendly to mock tests and also fix issue #101</li>
<li>Bug Fix: After stopping an embedded Nginx-Clojure server keep-alived connections become CLOSE_WAIT.</li>
<li>Bug Fix: HackUtil.decode decodes unnecessary chars when several strings share one char[] generally on JDK 6</li>
<li>Bug Fix: jvm crashes with thread pool mode when open_file_cache is enabled.</li>
<li>Bug Fix: Fix compile errors when no sha1-implementation/zlib can be found (issue #99)</li>
<li>Example Project: Add <a href="https://github.com/nginx-clojure/nginx-clojure/tree/master/example-projects/clojure-web-example">an example project about clojure web dev</a> to show how to develop & deploy with Nginx-Clojure. Thanks to <a href="https://github.com/ptaoussanis">Peter Taoussanis</a> without whose
comments there would not be such example project. (issue #91)</li>
<li>Documents: Add <a href="http://nginx-clojure.github.io/directives.html" rel="nofollow">Directives Reference</a>
</li>
</ol>
<h2><a id="user-content-042-2015-08-31" class="anchor" aria-hidden="true" href="#042-2015-08-31"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.4.2 (2015-08-31)</h2>
<ol>
<li>New Feature: Support Sente (issue #87, see <a href="https://github.com/ptaoussanis/sente/pull/160">this PR</a>)</li>
<li>New Feature: Per-message Compression Extensions (PMCEs) for WebSocket (issue #88)</li>
<li>New Feature: Add <code>add-aggregated-listener!</code> in HttpServerChannel to makes handling small but fragmented websocket messages easier by clojure.</li>
<li>Enhancement: Support to build on a Linux ARM machine</li>
<li>Bug Fix: WebSocket and Server Channel do not Work with Some Ring Middlewares (issue #89)</li>
<li>Bug Fix: Autodetect jvm_path doesn't work sometimes</li>
</ol>
<h2><a id="user-content-041-2015-08-12" class="anchor" aria-hidden="true" href="#041-2015-08-12"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.4.1 (2015-08-12)</h2>
<ol>
<li>New Feature: Coroutine based socket supports unix domain socket</li>
<li>New Feature: APIs for Embedding Nginx-Clojure into a standard Clojure/Java/Groovy App (issue #86)</li>
<li>New Feature: Autodetect jvm_path (issue #85)</li>
<li>New Feature: Support to use annotation to mark a class or method to be suspenable in coroutine context (issue #84)</li>
<li>Enhancement: Auto send error when meets a non websocket request with <code>auto_upgrade_ws</code> is on</li>
<li>Enhancement: Add <code>websocket-upgrade!</code> to server channel API</li>
<li>Enhancement: Add <code>WholeMessageAdapter</code> to make handling small websocket messages easier.</li>
<li>Bug Fix: NginxHttpServerChannel.write(ByteBuffer buf) does not reset the buffer's position (issue #83)</li>
<li>Bug Fix: No access to tomcat server 8.24 from nginx-clojure (issue #82)</li>
<li>Binaries Distribution: Including some java sources for easy debug.</li>
<li>Build Script: Autodetect JNI header files</li>
</ol>
<h2><a id="user-content-040-2015-07-06" class="anchor" aria-hidden="true" href="#040-2015-07-06"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.4.0 (2015-07-06)</h2>
<ol>
<li>New Feature: Server Side Websocket (issue #73)</li>
<li>New Feature: A build-in Jersey container to support java standard RESTful web services (JAX-RS 2.0) (issue #74)</li>
<li>New Feature: Tomcat 8 embedding support (so servlet 3.1/jsp/sendfile/JSR-356 websocket work within nginx!) (issue #67)</li>
<li>New Feature: Coroutined Based Client Socket Supports to Bind to Specified IP Address (issue #69)</li>
<li>New Feature: Handler's Property Configuration (issue #66)</li>
<li>Enhancement: NginxHttpServerChannel can work with Rewrite Handler or Access Handler (issue #79)</li>
<li>Enhancement: Configurable Write Buffer Size for SSE or Websocket (issue #76)</li>
<li>Bug Fix: When we do not configure jvm_path proxy_pass will not work (issue #72)</li>
<li>Bug Fix: nginx worker restart when get the value of header X-Forwarded-For (issue #70)</li>
<li>Bug Fix: proxy_cache_path causes crash (issue #64)</li>
<li>Bug Fix: send_timeout does not take effect with NginxHttpServerChannel (issue #78)</li>
<li>Bug Fix: Waving tool generates wrong wave information of fuzzing classes (issue #80)</li>
<li>Documents : Release History link in README (issue #68)</li>
<li>Binaries Distribution: built with The latest stable Nginx v1.8.0 which released at 2015-04-21.</li>
</ol>
<h2><a id="user-content-030-2014-12-11" class="anchor" aria-hidden="true" href="#030-2014-12-11"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.3.0 (2014-12-11)</h2>
<ol>
<li>Discard: Directive <code>clojure</code>, <code>clojure_code</code> are no longer supported, use <code>handler_type</code>/<code>content_handler_type</code>,
<code>handler_name</code>/<code>content_handler_name</code>, <code>handler_code</code>/<code>content_handler_code</code> instead.</li>
<li>Discard: Now <code>handler_***</code> can not be used to declare a nginx worker initialization handler, use `jvm_init_handler_*** instead.</li>
<li>New Feature: Supports writing nginx access handler by java/clojure/groovy (issue #53)</li>
<li>New Feature: Supports writing nginx header filter by java/clojure/groovy (issue #55)</li>
<li>New Feature: Add new directive <code>max_balanced_tcp_connections</code> to make nginx auto set worker_connections.</li>
<li>Enhancement: For Java We can use r.setVariable, r.getVariable now if r is an instance of NginxJavaRequest.</li>
<li>Deprecated Directives: handler_type, handler_name, handler_code are deprecated and maybe will be removed in the next version, add new directive content_handler_type, content_handler_code, content_handler_code</li>
<li>New Directives: rewrite_handler_type, access_handler_type, header_filter_type, body_filter_type</li>
<li>New Feature: Supports nested locations (issue #56)</li>
<li>Bug Fix : uppercase letters in nginx variable name can not work (issue #54)</li>
<li>Bug Fix: The first registered handler will not work if there's a asynchronous reading of request body (issue #51)</li>
<li>Enhancement: <code>handlers_lazy_init</code> can be used to make handler initialized lazily or eagerly (issue #52)</li>
</ol>
<h2><a id="user-content-027-2014-11-11" class="anchor" aria-hidden="true" href="#027-2014-11-11"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.7 (2014-11-11)</h2>
<ol>
<li>New Feature: Compiling option for disabling all functions silently when JVM_PATH not configured. (issue #47)</li>
<li>New Feature: Access request BODY in rewrite handler (issue #49)</li>
<li>Enhancement : Optimization of encoding String to Nginx temp buffer chain to reduce Java heap memory usage and improve the performance.</li>
</ol>
<h2><a id="user-content-026-2014-10-10" class="anchor" aria-hidden="true" href="#026-2014-10-10"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.6 (2014-10-10)</h2>
<ol>
<li>Fix Bug: rewrite handler does not handle write event correctly with thread pool mode or coroutine mode (issue #43)</li>
<li>Fix Bug: built-in jvm variable #{pno} doesn't work (issue #44)</li>
<li>Fix Bug: rewrite_handler_name does not work without content handler (issue #45). Thanks <a href="https://github.com/ekubacki">Eric Kubacki</a> for finding this bug.</li>
<li>Fix Bug: rewrite handler does not handle write event correctly with thread pool mode or coroutine mode (issue #43)</li>
<li>Documents : Correct some inaccuracies and add section about logging in Chapter <a href="http://nginx-clojure.github.io/more.html#user-content-37--about-logging" rel="nofollow">More about Nginx-Clojure</a>
</li>
<li>Binaries: built with The latest stable Nginx v1.6.2 which released at 2014-09-16.</li>
</ol>
<h2><a id="user-content-025-2014-09-07" class="anchor" aria-hidden="true" href="#025-2014-09-07"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.5 (2014-09-07)</h2>
<ol>
<li>New Feature: Reference variables in jvm_options & different jvm debug ports for jvm processes (issue #42)</li>
<li>New Feature: Server Sent Events(SSE) & Long polling (issue #41, issue #36)</li>
<li>New Feature: Supports 64-bit JDK on 64-bit Windows (issue #40)</li>
<li>New Feature: Coroutine based socket supports JDK8 (issue #39)</li>
<li>New Feature: More easier to archive Sub/Pub services with Broadcast Events to all Nginx workers (issue #39)</li>
<li>New Feature: Asynchronous Channel a wrapper of asynchronous socket to make the usage easier (issue #37)</li>
<li>Enhancement: Fix--On Windows a little many write events happen and these events seem useless (issue #35)</li>
</ol>
<h2><a id="user-content-024-2014-07-25" class="anchor" aria-hidden="true" href="#024-2014-07-25"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.4 (2014-07-25)</h2>
<ol>
<li>New Feature: Support Groovy - another dynamic jvm language (issue #34)</li>
<li>Fix bug: Slow Memory Leak for Coroutine based Socket bug (issue #32 )</li>
<li>Fix bug: Should Clone ThreadLocals for Coroutines (issue #31)</li>
<li>New Feature: More friendly to java users who maybe know nothing about clojure feature (issue #29)</li>
<li>Five new nginx directives <code>handler_type</code>, <code>handler_name</code>, <code>handler_code</code>, <code>rewrite_handler_name</code>, <code>rewrite_handler_code</code>.
Make Clojure/Java/Groovy handler configurations have the same form. e.g. The old pair of nginx directives <code>clojure</code>, <code>clojure_code</code> is equivalent to <code>handler_type='clojure'</code> + <code>handler_code</code>.</li>
</ol>
<h2><a id="user-content-023-2014-07-05" class="anchor" aria-hidden="true" href="#023-2014-07-05"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.3 (2014-07-05)</h2>
<ol>
<li>Fix issue After invoking on coroutine based socket nginx worker will exit and be recreated when network is disabled (issue #26)</li>
<li>Fix issue PATCH loses the data payload (issue #27)</li>
<li>Support user defined http request method (issue #28 )</li>
<li>Fix issue Nginx worker crashes when to fetch http header "authorization" from request (issue #30)</li>
</ol>
<h2><a id="user-content-022-2014-05-31" class="anchor" aria-hidden="true" href="#022-2014-05-31"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.2 (2014-05-31)</h2>
<ol>
<li>Fix bug of with Compojure 1.1.5 + Apache Solrj 4.3.0 + httpclient 4.3.2 NPE happens first time then everything is OK (issue #22)</li>
<li>Verifying option for auto generated waving configurations needed by coroutine based socket (issue #23)</li>
</ol>
<h2><a id="user-content-021-2014-05-17" class="anchor" aria-hidden="true" href="#021-2014-05-17"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.1 (2014-05-17)</h2>
<ol>
<li>Support to close coroutine based socket from non-main thread (issue #19)</li>
<li>Auto generated waving class configurations about Proxy InvocationHandler instance (issue #17 )</li>
<li>Supports auto turn on thread pool mode when turning on Run Tool Mode feature (issue #16 )</li>
<li>Fix bug of reading from coroutine based socket inputstream returns 0 when eof, should return -1 (issue #15)</li>
<li>Handle multiple sockets parallel in sub coroutines, e.g. we can invoke two remote services at the same time feature (issue #14)</li>
<li>Support nginx rewrite handler to set var before proxy pass (issue #3)</li>
</ol>
<h2><a id="user-content-020-2014-04-25" class="anchor" aria-hidden="true" href="#020-2014-04-25"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.2.0 (2014-04-25)</h2>
<ol>
<li>non-blocking socket based on coroutine and compatible with largely existing java library such as apache http client, mysql jdbc drivers</li>
<li>asynchronous callback API of socket for some advanced usage</li>
<li>run initialization clojure code when nginx worker starting</li>
<li>provide a build-in tool to make setting of coroutine based socket easier</li>
<li>support Linux 32bit x86 now</li>
<li>publish <a href="https://sourceforge.net/projects/nginx-clojure/files/" rel="nofollow">binary release compiled with lastes stable nginx 1.6.0</a> about Linux x64, Linux i586, Win32 & MacOS X</li>
</ol>
<h2><a id="user-content-012-2014-02-03" class="anchor" aria-hidden="true" href="#012-2014-02-03"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.1.2 (2014-02-03)</h2>
<ol>
<li>fix <a href="/nginx-clojure/nginx-clojure/issues/2">#2 Problems with HTTP Redirect 302</a>
</li>
<li>header names are case-insensitive now.</li>
<li>publish <a href="https://sourceforge.net/projects/nginx-clojure/files/" rel="nofollow">binary release</a> about Linux x64, Win32 & MacOS X</li>
</ol>
<h2><a id="user-content-011-2014-01-20" class="anchor" aria-hidden="true" href="#011-2014-01-20"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.1.1 (2014-01-20)</h2>
<ol>
<li>Supports InputStream, ISeq & recursive ISeq in Response Body.</li>
<li>Auto maintains HTTP last-modified header for multiple files in Response Body</li>
</ol>
<h2><a id="user-content-010-2014-01-09" class="anchor" aria-hidden="true" href="#010-2014-01-09"><span aria-hidden="true" class="octicon octicon-link"></span></a>0.1.0 (2014-01-09)</h2>
<ol>
<li>Compitiable with Ring Spec (1.1)</li>
<li>Supports Java Thread Pool for handle request</li>
<li>Fast Static File Service</li>
</ol>