<commit_before>﻿Changelog
=========

v0.7.12 - 2013-02-11
--------------------

### Features and improvements ###

 - Big refactoring of the MongoDB interface to be more consistent with its API (by <NAME> aka Dicebot) - [pull #171][issue171]
 - Added a range interface to `MongoCursor` - redo of [pull #172][issue172]
 - Added a [dub](https://github.com/rejectedsoftware/dub) compatible "package.json" file for vibe.d and all example projects
 - Parameters can be made optional for `registerFormInterface` now (by <NAME> aka eskimor) - [issue #156][issue156]
 - The REST interface generator also supports optional parameters by defining default parameter values
 - Added `Task.interrupt()`, `Task.join()` and `Task.running`
 - Improved detection of needed imports in the REST interface generater (by <NAME> aka Dicebot) - [pull #164][issue164]
 - Partially implemented zero-copy file transfers (still disabled for libevent) - [issue #143][issue143]
 - Added `HttpRequest.contentType` and `contentTypeParameters` to avoid errors by direct comparison with the "Content-Type" header - [issue #154][issue154]
 - Added a small forward compatibility fix for [DUB](https://github.com/rejectedsoftware/dub) packages ("vibe.d" is ignored as a dependency)
 - Cleaned up the function names for writing out `Json` objects as a string and added convenience methods (partially done in [pull #166] by <NAME>)
 - Renamed `HttpRequest.url` to `HttpRequest.requestUrl` and added `HttpRequest.fullUrl`
 - Added the possibility to write a request body in chunked transfer mode in the `HttpClient`
 - Added `HttpServerRequest.ssl` to determine if a request was sent encryted
 - Changed several interfaces to take `scope` delegates to avoid useless GC allocations
 - Removed the `in_url` parameter from `Path.toString` - now assumed to be `true`
 - `SysTime` and `DateTime` are now specially treated by the JSON/BSON serialization code
 - Refactored the `Cookie` interface to properly use `@property` (by <NAME> aka Abcissa) - [pull #176][issue176]
 - Added `HttpRouter` as an interface for `UrlRouter` (by <NAME> aka bluepeppers) - [pull #177][issue177]

### Bug fixes ###

 - Fixed matching of the host name in `HttpServer` - is case insensitive now
 - Fixed issues in `ConnectionPool` and `HttpClient` that caused `InvalidMemoryOperationError` and invalid multiplexed requests
 - Fixed `GCAllocator` and `PoolAllocator` to enforce proper alignment
 - Fixed passing of misaligned base pointers to `free()` in `MallocAllocator` - at least 32-bit Linux seems to choke on it
 - Fixed `listenTcp` without an explicit bind address - now returns an array of listeners with one entry per IP protocol version
 - Fixed "Connection: close" hangs also for HTTP/1.0 clients - those that depended on this behavior are broken anyway - [issue #147][issue147]
 - Fixed possible invalid line markers in the mixin generated by the Diet compiler - [issue #155][issue155]
 - Fixed all uses of `render!()` in the example projects by replacing them with `renderCompat!()` - [issue 159][issue159]
 - Fixed concatenation of `Path` objects, where the LHS is not normalized
 - Fixed `serializeToBson` in conjunction with read-only fields (by  <NAME> aka Dicebot) - [pull #168][issue168]
 - Fixed a possible endless loop caused by `ChunkedOutputStream` due to an inconsistent redundant field
 - Fixed `serializeToJson` in conjunction with read-only fields (same fix as for BSON)
 - Fixed `download` ignoring the `port` property of the target URL
 - Fixed termination of Fibers by exceptions of already terminated tasks
 - Fixed propagation of `HttpStatusException` in the REST interface generator (by  <NAME> aka Dicebot) - [pull #173][issue173]
 - Fixed handling of multiple cookies with the same name `HttpServerRequest.cookies.getAll()` can now be used to query them
 - Fixed `WebSocket.connected` - [issue #169][issue169]
 - Fixed accepting of invalid JSON syntax - [issue #161][issue161]
 - Fixed use of `tmpnam` on Posix by replacing with `mkstemps`, still used on Windows - [issue #137][issue137]

[issue137]: https://github.com/rejectedsoftware/vibe.d/issues/137
[issue143]: https://github.com/rejectedsoftware/vibe.d/issues/143
[issue154]: https://github.com/rejectedsoftware/vibe.d/issues/154
[issue155]: https://github.com/rejectedsoftware/vibe.d/issues/155
[issue156]: https://github.com/rejectedsoftware/vibe.d/issues/156
[issue159]: https://github.com/rejectedsoftware/vibe.d/issues/159
[issue161]: https://github.com/rejectedsoftware/vibe.d/issues/161
[issue164]: https://github.com/rejectedsoftware/vibe.d/issues/164
[issue166]: https://github.com/rejectedsoftware/vibe.d/issues/166
[issue168]: https://github.com/rejectedsoftware/vibe.d/issues/168
[issue168]: https://github.com/rejectedsoftware/vibe.d/issues/169
[issue171]: https://github.com/rejectedsoftware/vibe.d/issues/171
[issue172]: https://github.com/rejectedsoftware/vibe.d/issues/172
[issue173]: https://github.com/rejectedsoftware/vibe.d/issues/173
[issue176]: https://github.com/rejectedsoftware/vibe.d/issues/176
[issue177]: https://github.com/rejectedsoftware/vibe.d/issues/177


v0.7.11 - 2013-01-05
--------------------

### Features and improvements ###

 - The `setup-linux.sh` script now installs to `/usr/local/share` and uses any existing `www-data` user for its config if possible (by <NAME>) - [issue #150][issue150], [issue #152][issue152], [issue #153][issue153]

### Bug fixes ###

 - Fixed hanging HTTP 1.1 requests with "Connection: close" when no "Content-Length" or "Transfer-Encoding" header is set - [issue #147][issue147]
 - User/group for privilege lowering are now specified as "user"/"group" in vibe.conf instead of "uid"/"gid" - see [issue #133][issue133]
 - Invalid uid/gid now actually cause the application startup to fail

[issue133]: https://github.com/rejectedsoftware/vibe.d/issues/133
[issue147]: https://github.com/rejectedsoftware/vibe.d/issues/147
[issue150]: https://github.com/rejectedsoftware/vibe.d/issues/150
[issue152]: https://github.com/rejectedsoftware/vibe.d/issues/152
[issue153]: https://github.com/rejectedsoftware/vibe.d/issues/153
<commit_msg>Updated change log.<commit_after>﻿Changelog
=========

v0.7.12 - 2013-02-11
--------------------

### Features and improvements ###

 - Big refactoring of the MongoDB interface to be more consistent with its API (by <NAME> aka Dicebot) - [pull #171][issue171]
 - Added a range interface to `MongoCursor` - redo of [pull #172][issue172]
 - Added a [dub](https://github.com/rejectedsoftware/dub) compatible "package.json" file for vibe.d and all example projects
 - Parameters can be made optional for `registerFormInterface` now (by <NAME> aka eskimor) - [issue #156][issue156]
 - The REST interface generator also supports optional parameters by defining default parameter values
 - Added `Task.interrupt()`, `Task.join()` and `Task.running`
 - Improved detection of needed imports in the REST interface generater (by <NAME> aka Dicebot) - [pull #164][issue164]
 - Partially implemented zero-copy file transfers (still disabled for libevent) - [issue #143][issue143]
 - Added `HttpRequest.contentType` and `contentTypeParameters` to avoid errors by direct comparison with the "Content-Type" header - [issue #154][issue154]
 - Added a small forward compatibility fix for [DUB](https://github.com/rejectedsoftware/dub) packages ("vibe.d" is ignored as a dependency)
 - Cleaned up the function names for writing out `Json` objects as a string and added convenience methods (partially done in [pull #166] by <NAME>)
 - Renamed `HttpRequest.url` to `HttpRequest.requestUrl` and added `HttpRequest.fullUrl`
 - Added the possibility to write a request body in chunked transfer mode in the `HttpClient`
 - Added `HttpServerRequest.ssl` to determine if a request was sent encryted
 - Changed several interfaces to take `scope` delegates to avoid useless GC allocations
 - Removed the `in_url` parameter from `Path.toString` - now assumed to be `true`
 - `SysTime` and `DateTime` are now specially treated by the JSON/BSON serialization code
 - Refactored the `Cookie` interface to properly use `@property` (by <NAME> aka Abcissa) - [pull #176][issue176]
 - Added `HttpRouter` as an interface for `UrlRouter` (by <NAME> aka bluepeppers) - [pull #177][issue177]
 - Added `HttpFileServerSettings.preWriteCallback` (by <NAME>abalausky aka Abcissa) - [pull #180](issue180)

### Bug fixes ###

 - Fixed matching of the host name in `HttpServer` - is case insensitive now
 - Fixed issues in `ConnectionPool` and `HttpClient` that caused `InvalidMemoryOperationError` and invalid multiplexed requests
 - Fixed `GCAllocator` and `PoolAllocator` to enforce proper alignment
 - Fixed passing of misaligned base pointers to `free()` in `MallocAllocator` - at least 32-bit Linux seems to choke on it - [issue #157](issue157)
 - Fixed `listenTcp` without an explicit bind address - now returns an array of listeners with one entry per IP protocol version
 - Fixed "Connection: close" hangs also for HTTP/1.0 clients - those that depended on this behavior are broken anyway - [issue #147][issue147]
 - Fixed possible invalid line markers in the mixin generated by the Diet compiler - [issue #155][issue155]
 - Fixed all uses of `render!()` in the example projects by replacing them with `renderCompat!()` - [issue 159][issue159]
 - Fixed concatenation of `Path` objects, where the LHS is not normalized
 - Fixed `serializeToBson` in conjunction with read-only fields (by  <NAME> aka Dicebot) - [pull #168][issue168]
 - Fixed a possible endless loop caused by `ChunkedOutputStream` due to an inconsistent redundant field
 - Fixed `serializeToJson` in conjunction with read-only fields (same fix as for BSON)
 - Fixed `download` ignoring the `port` property of the target URL
 - Fixed termination of Fibers by exceptions of already terminated tasks
 - Fixed propagation of `HttpStatusException` in the REST interface generator (by  <NAME> aka Dicebot) - [pull #173][issue173]
 - Fixed handling of multiple cookies with the same name `HttpServerRequest.cookies.getAll()` can now be used to query them - fixes [issue #174][issue174]
 - Fixed `WebSocket.connected` - [issue #169][issue169]
 - Fixed accepting of invalid JSON syntax - [issue #161][issue161]
 - Fixed use of `tmpnam` on Posix by replacing with `mkstemps`, still used on Windows - [issue #137][issue137]

[issue137]: https://github.com/rejectedsoftware/vibe.d/issues/137
[issue143]: https://github.com/rejectedsoftware/vibe.d/issues/143
[issue154]: https://github.com/rejectedsoftware/vibe.d/issues/154
[issue155]: https://github.com/rejectedsoftware/vibe.d/issues/155
[issue156]: https://github.com/rejectedsoftware/vibe.d/issues/156
[issue157]: https://github.com/rejectedsoftware/vibe.d/issues/157
[issue159]: https://github.com/rejectedsoftware/vibe.d/issues/159
[issue161]: https://github.com/rejectedsoftware/vibe.d/issues/161
[issue164]: https://github.com/rejectedsoftware/vibe.d/issues/164
[issue166]: https://github.com/rejectedsoftware/vibe.d/issues/166
[issue168]: https://github.com/rejectedsoftware/vibe.d/issues/168
[issue169]: https://github.com/rejectedsoftware/vibe.d/issues/169
[issue171]: https://github.com/rejectedsoftware/vibe.d/issues/171
[issue172]: https://github.com/rejectedsoftware/vibe.d/issues/172
[issue173]: https://github.com/rejectedsoftware/vibe.d/issues/173
[issue176]: https://github.com/rejectedsoftware/vibe.d/issues/176
[issue177]: https://github.com/rejectedsoftware/vibe.d/issues/177
[issue180]: https://github.com/rejectedsoftware/vibe.d/issues/180


v0.7.11 - 2013-01-05
--------------------

### Features and improvements ###

 - The `setup-linux.sh` script now installs to `/usr/local/share` and uses any existing `www-data` user for its config if possible (by <NAME>) - [issue #150][issue150], [issue #152][issue152], [issue #153][issue153]

### Bug fixes ###

 - Fixed hanging HTTP 1.1 requests with "Connection: close" when no "Content-Length" or "Transfer-Encoding" header is set - [issue #147][issue147]
 - User/group for privilege lowering are now specified as "user"/"group" in vibe.conf instead of "uid"/"gid" - see [issue #133][issue133]
 - Invalid uid/gid now actually cause the application startup to fail

[issue133]: https://github.com/rejectedsoftware/vibe.d/issues/133
[issue147]: https://github.com/rejectedsoftware/vibe.d/issues/147
[issue150]: https://github.com/rejectedsoftware/vibe.d/issues/150
[issue152]: https://github.com/rejectedsoftware/vibe.d/issues/152
[issue153]: https://github.com/rejectedsoftware/vibe.d/issues/153

{'fraction_non_alphanumeric': 0.12366618888358019, 'fraction_numerical': 0.047778308647873864, 'mean_word_length': 4.60920053595355, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 22, 'https://': 48, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6218813', 'n_tokens_mistral': 4181, 'n_tokens_neox': 3579, 'n_words': 1277}