forked from spray/spray
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
402 lines (307 loc) · 15.4 KB
/
CHANGELOG
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
Version 1.1-M8 (2013-06-10)
---------------------------
- Upgraded to Scala 2.10.2, Akka 2.1.4 and latest versions of all dependencies
- general: added automatic source formatting via sbt-scalariform
- spray-caching: folded `Cache.fromFuture` into Cache.apply
- spray-can:
+ migrated from old spray-io onto new akka-io
+ completely rewrote client-side APIs for improved architecture and usability
+ completely rewrote HTTP parser for cleanliness and much better performance
+ rewrote HTTP renderer for cleanliness and performance
+ many fixes, additions and smaller improvements
- spray-client:
+ removed HttpConduit (now part of spray-can client-side APIs)
+ moved HttpDialog from spray-can into spray-client
+ adapted to new spray-can client layer
- spray-http:
+ major refactoring for cleanliness and performance
+ established serializability for all model classes
+ added custom RFC3986-compliant URI model incl. fast parser
+ many fixes, additions and smaller improvements
- spray-httpx:
+ added marshaller for `Try[T]`
+ added Json4s native and Json4S jackson support
+ many fixes, additions and smaller improvements
- spray-io:
+ migrated large majority of logic to new Akka I/O layer (for Akka 2.2)
+ backported new Akka I/O layer from Akka 2.2 to Akka 2.1
+ updated remaining logic
- spray-routing:
+ added several new directives (most notably: FutureDirectives, AnyParamDirectives)
+ many fixes, additions and smaller improvements
- spray-servlet:
+ fixed NPE during exception handling using `e.getMessage`
+ enabled dynamic timeout setting via SetRequestTimeout and SetTimeoutTimeout commands
+ smaller improvements
- spray-util: many small fixes and improvements
Version 1.1-M7 (2012-12-19)
---------------------------
- Upgraded to Scala 2.10.0-RC5, Akka 2.1.0-RC6
- spray-can:
+ fixed broken overridability of SprayCanHttpServerApp.system member
+ fixed request rendering to not suppress custom Date headers
+ fixed rendering of 'Content-Length: 0' request headers
+ added option for tagging log messages with custom prefixes, closed #153
+ added DefaultHttpClient extension, closed #166
+ added explicit naming for connection actors
- spray-http:
+ fixed non-public access to the HttpRequest URI and queryParams members through the 'copy' method
+ added HttpMessagePart extractor
+ improved Date header parser to allow UTC as well as GMT time zone label
+ improved language-tag parser to also accept tags according to BCP 47, closed #168
- spray-httpx: changed JSON rendering to always be UTF-8 encoded
- spray-io:
+ changed IOExtension.ioBridge to IOExtension.ioBridge()
+ added option for tagging log messages with custom prefixes, closed #153
+ added proper supervisor strategy for connection actors: stop (and close connection) on all exceptions
+ improved enabling/disabling of encryption on the connection (SslTlsSupport)
+ flexibilized connection tag provision
+ changed IOClient.Connected events to be sent with connection actor as sender
- spray-routing:
+ fixed rejection duplication in certain cases
+ changed default marshalling encoding to UTF-8
+ added SimpleRoutingApp trait
+ added `complete(Future[StatusCode])` overload
+ added `optionalHeaderValuePF` directive
+ simplified and homogenized ExceptionHandler and RejectionHandler to both return Routes
- testkit: turned response MatchError into proper error message, closed #165
- util:
+ introduced SprayActorLogging trait
+ improved LoggingContext with configurability regarding logger name generation
+ improved PimpedFuture.delay to accept implicit ActorRefFactory instead of ActorSystem
- examples:
+ added simple-routing-app example
+ renamed simple-on-jetty and simple-on-spray-can examples to on-jetty / on-spray-can resp.
- smaller fixes and improvements
Version 1.1-M6 (2012-11-30)
---------------------------
- Upgraded to Scala 2.10.0-RC3, Akka 2.1.0-RC3, parboiled 1.1.4, shapeless 1.2.3 and spray-json 1.2.3
- Added 'is-local-ActorRef' assertions across modules (where applicable)
- spray-can:
+ removed superfluous ssl-encryption config setting from HttpClient
+ increase default HttpServer pipelining-limit from 1 to 8
+ introduced SprayCanHttpServerApp convenience trait, updated examples
+ smaller performance improvements
- spray-http:
+ added support for 'Bearer' scheme in Authorization header (OAuth 2.0), closes #155
+ renamed 'OtherHttpCredentials' to 'GenericHttpCredentials'
+ improved MediaType model, added more default MediaTypes, closed #157
+ improved warmup
+ improved parser for 'X-Forwarded-For' header to also accept "unknown" elements
+ added DateTime.fromIsoDateTimeString
- spray-httpx: made the (Un)marshaller[NodeSeq] also accept 'application/xml'
- spray-io:
+ turned IOBridge into Actor, added optional parallelism
+ general refactoring for cleanliness and clarity
+ improved flexibility of connection actor creation
+ smaller performance improvements
- spray-routing:
+ added Directive.recover and .recoverPF modifiers
+ introduced HeaderDirectives trait, reworked and improved header extraction directives
+ changed evaluation of 'complete' directive arguments to call-by-name
+ fixed incomplete exception handling in Directive.unwrapFuture
+ renamed getFromFileName directive to getFromFile
+ introduced default, simple HttpServiceActor implementation
+ smaller refactoring in PathMatcher API
- spray-servlet: fixed missing application of root-path setting
- spray-testkit: flexibilized ActorSystem provision for RouteTest, closed #162
- spray-util: changed log level of loggers installed via 'installEventStreamLoggerFor' from DEBUG to WARNING
- smaller fixes and improvements
Version 1.1-M5 (2012-11-09)
---------------------------
- Upgraded to Scala 2.10.0-RC2 and Akka 2.1.0-RC2
- spray-can:
+ fixed NPE in RequestChunkAggregation
+ removed stray logging statement from RequestChunkAggregation
+ fixed incorrect rendering of chunked responses to HEAD requests
- spray-http: fixed incorrect test for response encoding acceptance
- spray-httpx: removed dangerous StatusCodeMarshaller
- spray-io:
+ improved logging of errors in the SslTlsSupport pipeline stage
+ reworked connection closing, added ConfirmedClose reason, fixed #147
- spray-routing:
+ added option for disabling automatic file-chunking
+ removed HttpService.routingSettings method, provision of RoutingSettings now fully implicit
+ renamed Directive.map and .flatMap to .hmap/.hflatMap, re-added .map and .flatMap pimps for single-value directives
+ improved HttpService 'runRoute' wrapper to also work in "sub-route" actors
+ removed 'filter' directive, converted all applications to 'extract(...).flatMap'
+ added 'pathTest' directive
+ improve rendering of directory listings
+ changed default redirection type to '302 Moved Permanently'
+ improved host directive
+ added 'dynamicIf' directives
+ improved and flexibilized DebuggingDirectives
+ add 'complete' overload taking a single StatusCode parameter
- spray-can & spray-servlet: increased default idle and request timeouts to 120s and 30s respectively
- spray-testkit: improved provision of custom RouteTestTimeout
- spray-util: added 'installDebuggingEventStreamLoggers' convenience helper
- smaller fixes and improvements
Version 1.1-M4 (2012-10-19)
---------------------------
- Upgraded to Scala 2.10.0-RC1 and Akka 2.1.0-RC1
Version 1.0-M4 (2012-10-19)
---------------------------
- Upgraded to parboiled 1.1.3 and spray-json 1.2.2
- routing: further flexibilized directive combination with StandardRoutes
- routing: (re)added 'complete' overload taking a Future[HttpResponse], closes #143
- routing: added new directives:
+ unmatchedPath
+ listDirectoryContents
+ getFromBrowseableDirectory / getFromBrowseableDirectories
- smaller fixes and improvements
Version 1.0-M3 (2012-10-12)
---------------------------
Largest refactoring in the history of the project.
Lots of breaking changes. Most importantly:
- Completely new documentation at http://spray.io
- Renamed group id from "cc.spray" to "io.spray"
- Renamed packages from "cc.spray..." to simply "spray..."
- Completely refactored suite module structure (from 4 to 10+1 modules)
- Improved naming of many identifiers across the board
- Completely new architecture underneath routing DSL
- Completely new Marshalling and Unmarshalling infrastructure
- ...
Version 1.0-M2 (2012-05-16)
---------------------------
- spray-io
+ Added SslTlsSupport pipeline stage
+ Fixed SetTimeout messages not working
+ Fixed closing of already closed connections improperly handled
+ Fixed bug in wiring of certain pipeline stages
+ Dropped 'confirm-sends' config setting, added 'ack:Boolean' field to IoWorker.Send
+ Renamed 'SendCompleted' event to 'AckSend'
+ Made IoWorkerThread daemonic
+ Improved pipeline architecture for reduced call stack depth
- spray-can
+ Added SSL/TLS support to HttpServer and HttpClient
+ Added 'ack-sends' setting to client and server config
+ Added 'transparent-head-requests' server config setting
+ Added HttpClient.SetRequestTimeout message
+ Fixed HttpServer not handling 'Expect: 100-continue' headers
+ Fixed HttpClient not properly handling HEAD requests to resources containing a message body
+ Fixed #99 (getFromFile(Name) sometimes throws IllegalStateException when streaming file content)
+ Fixed SetTimeout messages not working
+ Enabled validity verification on HttpRequests and HttpResponses
+ Extended HttpDialog to also accept ActorContexts as dispatcher container
- spray-base
+ http: fixed custom mediatypes not being matched
+ http: fixed ArrayIndexOutOfBoundsException during header parsing of unregistered CustomMediaTypes
+ http: fixed IPv6 Host header parsing failure
+ Fixed #108 (FormDataUnmarshaller should be more resilient)
+ Fixed incorrect error message in HttpContentExtractor
+ Fixed several memory leaks in streamMarshaller
- spray-server
+ Fixed actorSystem dependency in DebuggingDirectives incorrectly named
+ Make ErrorHandling#responseForException public
- spray-client
+ Improve 'unmarshal' pipeline step to accept all 2xx responses instead of only 200
- general
+ Added basic, but still incomplete, sphinx-based documentation system for new spray website
+ Upgraded to Akka 2.0.1
+ Extended simple-http-server and simple-http-client examples with optional SSL/TLS support
+ Fixed EOL related test failures on Windows
+ Lots of smaller fixes and improvements
Version 1.0-M1 (2012-04-05)
---------------------------
- Moved spray-can sources into spray codebase
- Added spray-io component (and spray-util for common code)
- Upgraded all components and examples to Akka 2.0
Version 0.9.0 (2012-03-07)
--------------------------
- Fixed another problem in the request retry logic (spray-client)
- Fixed incorrect response status code for authentication failures with invalid credentials
- Fixed "LruCache implementations also caching exceptions"
- Readded time-to-live based expiration to ExpiringLruCache
- Closed #87 (wrap non-200 responses in special exception)
- Closed #88 (added PathElement PathMatcher)
Version 0.9.0-RC4 (2012-02-27)
------------------------------
- Fixed spray-client retries not always honoring Pipelined dispatch strategy
- Added missing location pointer to entity of generated redirection responses
- Added directives: reject, cookie, optionalCookie, setCookie, deleteCookie,
headerValue, headerValuePF, clientIP, provide and transformRejections
- Made FilterResult and SprayRoute1 monadic
- Added another overload to the 'authenticate' directive
- Added 'toOption' pimp to Strings (in utils)
Version 0.9.0-RC3 (2012-02-22)
------------------------------
- Fixed #78 (spray-client: unexpected closing of connection not properly handled)
Version 0.9.0-RC2 (2012-02-17)
------------------------------
- Upgrade to Akka 1.3.1
- Fixed getFromResource directive to not serve "content" of resources ending with slash
- Made cacheResults directive honor 'Cache-Control: max-age' header
- Added default Marshaller for Option[T] (#81)
- Added TwirlSupport trait
- Improved DebuggingDirectives trait, added logRequestResponse directive
- Improved relaxed header parsing to also accept custom HttpCharsets
Version 0.9.0-RC1 (2012-02-03)
------------------------------
- Upgrades:
+ Scala 2.9.1
+ Akka 1.3
+ spray-json 1.1.0
+ spray-can 0.9.2
+ SBT 0.11.2
- Changed dependency on akka-actor from scope 'compile' to scope 'provided'
- Added support for chunked responses, including chunk compression and automatic file chunking
- Added new directives: completeWith, redirect, autoChunk, dynamic, transformUnchunkedResponse, transformChunkedResponse
- Added default Marshallers for Eithers, HttpResults, HttpExceptions, Streams, Futures and Array[Byte]
- Added support for JSON (de)serialization via lift-json
- Added support for template rendering via Scalate
- Added support for LDAP authentication
- Added support for asynchronous and cached authentication
- Added option for relaxed header parsing (issue #68)
- Added DebuggingDirectives trait
- Simplified custom rendering of Rejections to HttpResponses
- Improved LruCache implementation to use com.googlecode.concurrentlinkedhashmap
- Fixed #72 (Different HttpConduits sometimes and erroneously share connections)
- Fixed #59 (Factor out Rejection Conversion)
- Fixed #67 ('cacheResults' directive should honor 'Cache-Control: no-cache' request header)
- Fixed most occurrences of implicit ambiguities with SprayJsonSupport
- Fixed several bugs in header parsing and rendering
- Extended spray-example-spray-can to show off new streaming features
- Lots of other fixes, additions and improvements
Version 0.8.0 (2011-11-16)
--------------------------
- Upgrades:
+ Scala 2.9.1
+ Akka 1.2
+ spray-json 1.0.1
+ SBT 0.11.1 (many thx to Steffen for contributing the original buildfile)
- Support for 'application/x-www-form-urlencoded' as well as 'multipart/form-data' form content (many thx to Julien for contributing a lot of the implementation)
- Support for 'multipart/mixed' content (un)marshalling
- Support for spray-can as the first non-servlet-container web server
- Completely rewritten spray-client, now based on the new spray-can HttpClient
- Completely rewritten servlet connector layer for improved performance and stability
- Three new example projects:
+ spray-client-example
+ spray-example-simple
+ spray-example-spray-can
- Unified SimpleParsers and Unmarshallers into a joint 'Deserializer' hierarchy
- Removed 'optionalContent' directive (use 'content(as[Option[T]])' instead)
- Renamed 'spray-http' module to 'spray-base'
- Renamed cc.spray.marshalling to cc.spray.typeconversion
- Renamed SprayJsonMarshalling to SprayJsonSupport
- Moved encoding/decoding to for cc.spray.encoding
- Simplified case class extraction, now 'as(T)' rather than 'as(instanceOf(T))'
- Simplified SprayTest infrastructure making the 'DontDetach' trait obsolete
- Lots of other fixes, additions and improvements
Version 0.7.0 (2011-07-27)
--------------------------
A great number of changes and improvements, most importantly:
- removed dependency on Akka Mist
- upgraded to Scala 2.9.0-1 and Akka 1.1.3
- split into spray-server, spray-client and spray-http
- added support for
+ gzip/deflate encodings
+ authentication/authorization (incl. HTTP Basic Auth)
+ proper server-side caching
+ even better path and parameter matching
+ case class extractions
+ spray-json (un)marshalling
+ Tomcat 6
- closed 27 tickets
Version 0.5.0 (2011-03-31)
--------------------------
first public release