CHANGELOG.md in plezi-0.12.21 vs CHANGELOG.md in plezi-0.12.22

- old
+ new

@@ -1,9 +1,28 @@ #Change Log *** +Change log v.0.12.22 + +**Fix**: fix for issue #17 where unicode characters might cause `erb` rendering to fail. Credit to @davidjuin0519 (Juin Chiu) for reporting the issue and helping resolve it. + +* **Deprecation notice**: + + v.0.12.22 will probably be the last one for a pure Ruby implementation. Future versions might be limited to Ruby MRI due to C extensions being used. + + Plezi's server, Iodine, was re-written in C, allowing for a smaller memory footprint, more speed and tens of thousands of concurrent connections (using `kqueue` and `epoll`, instead of Ruby's `select` which is limited to 1024 connections). + + Plezi 0.13.x will be using Iodine's C version (0.2.x) by default. + + Since Iodine 0.2.x is Rack complient, Plezi will be able to work with other Rack servers except when using websockets (which will require Iodine due to it's unique websocket support). + + This means that Plezi will be limited to systems that can run the new version of Iodine (Ruby MRI and Unix based systems, such as Linux and Mac OSX). + + +*** + Change log v.0.12.21 **Update**: Auto-Dispatch: * method whitlisting process was updates. Method arity is now reviewed, so that only methods that accept one or more parameters are recognized as websocket auto-dispatch methods (allowing for Http only methods without throwing exceptions). @@ -166,19 +185,19 @@ **Feature**: (requires Redis) Identity API is here (read more on the [Websockets guide](./websockets.md)) * Websocket Identity API allows you to link a websocket connection with a unique "identity" (i.e., `user.id` or even `session.id`). - This is called "registering", as the identity "registers" and is henceforth recognized. + This is called "registering", as the identity "registers" and is henceforth recognized. * Notifications sent to the identidy will persist until the identity's "lifetime" expires. The default "lifetime" is 7 days, meaning an "Identity" message queue will survive for 7 days since the last time the Identity was "registered". This lifetime can be set for each identity during registration. * This allows you to send notifications that will "wait" until a user or visitor reconnects and registers the new connection under their Identity. -* This is an alternative to persistant storage, where either visitors messages that aren't read within a certain timespan +* This is an alternative to persistant storage, where either visitors messages that aren't read within a certain timespan **Fix**: the Placebo API was fixed to correspond with the changes in Iodine's API. **Fix**: fixed an issue where Placebo's on_close would through an exception. @@ -210,11 +229,11 @@ Change log v.0.12.0 - API changes (throwing out dead code and many more changes) **Feature** The `Controller.failed_unicast(target, method, arguments_array)` callback is here, allowing you to write a class level callback that will be called if `unicast` fails to find it's target (i.e. if the Websocket connection was already closed or the hosting server shutdown). -\* the lack of this callback being called does NOT imply that the unicast was processed without errors, it's only called if the target itself wasn't found (the connection already recognized as closed). Errors can occure within the method originally called by `unicast` when the target was found but the connection was dropped while processing was underway. The `failed_unicast` callback, together with error handling in the original method (i.e. `response << "message"` returning `nil`) should cover any reasonable scenario. +\* the lack of this callback being called does NOT imply that the unicast was processed without errors, it's only called if the target itself wasn't found (the connection already recognized as closed). Errors can occure within the method originally called by `unicast` when the target was found but the connection was dropped while processing was underway. The `failed_unicast` callback, together with error handling in the original method (i.e. `response << "message"` returning `nil`) should cover any reasonable scenario. **Minor**: updated asset pipeline performance; API for the `Plezi.route` methods now auto-creates an empty listening service (no assets, no templates, no public folder...) if one is missing. **Fix**: The '/*' is automatically appended to the Re-Write routes, so now writing re-write routes is easier and more intuitive. @@ -246,17 +265,17 @@ Change log v.0.11.0 **Update**: Requires GRHttp server and GReactor version 0.1.0 or above, adjusted to the updated API. -**Update**: Better pinging and timout support courtesy of the updated GRHttp server. +**Update**: Better pinging and timout support courtesy of the updated GRHttp server. **Update**: The default number of threads is now 30. It seems that once we move beyond 1 thread (which is also supported), the added threads are adding more security against blocking code without effecting performance as much. It is expected that advanced users will consider moving away from multi-threading to muli-processing while avoiding blocking code. All these options are supported by Plezi, GRHttp and GReactor. **Fix**: Fixed an issue where requests for folders within the assets folder (folder indexing) would fail with an internal error message (error 500) instead of a not found message (error 404). -**Fix**: fixed an issue that caused the static file service to fail when using the preferred `:public` vs. the older `:root` option used to set the public folder's path. +**Fix**: fixed an issue that caused the static file service to fail when using the preferred `:public` vs. the older `:root` option used to set the public folder's path. **Minor**: minor adjustments and improvements, such as: auto-setting the `content-type` header when using `render`. *** @@ -270,11 +289,11 @@ *** Change log v.0.10.16 -**Fix**: Requires a newer version of the GRHttp server, which fixs an issue with Firefox's websocket implementation. +**Fix**: Requires a newer version of the GRHttp server, which fixs an issue with Firefox's websocket implementation. **New Feature**: Persistent and synchronized Session data(!) using Redis (if supplied) with a fallback to temporary memory storage. Session lifetime is 5 days. *** @@ -827,11 +846,11 @@ **feature**: very basic Rack support is back (brought back mainly for testing)... BUT: Rack code and Plezi code are NOT fully compatible. for example: Rack's parameters aren't always fully decoded. Also, Rack's file upload contains tmporary files, where Plezi's request object contains the binary data in a binary String object. -Also, Rack does NOT support native WebSocket Controllers (you will need middle ware for that). +Also, Rack does NOT support native WebSocket Controllers (you will need middle ware for that). *** Change log v.0.6.4 @@ -899,11 +918,11 @@ *** Change log v.0.4.3 -**notice!:** v.0.5.0 might break any code using the `listen :vhost => "foo.bar.com"` format. hosts and aliases will be restructured. +**notice!:** v.0.5.0 might break any code using the `listen :vhost => "foo.bar.com"` format. hosts and aliases will be restructured. **fix**: an issue with the router was discovered, where non-RESTful Controller methods weren't called for POST, PUT or DELETE http requests. this issue is now fixed, so that non-RESTful methods will be attempted and will exclude ID's with the same value from being created... ... in other words, it is now easier to create non-RESTful apps, should there be a need to do so. @@ -911,11 +930,11 @@ Change log v.0.4.2 **error-detection**: Plezi will check that the same port isn't used for to services and will return a warning. a `listen` call with `RackServer` will return an existing router object if a service is already assigned to the requested port. -**notice!:** v.0.5.0 will break any code using the `listen :vhost => "foo.bar.com"` format. hosts and aliases will be restructured. +**notice!:** v.0.5.0 will break any code using the `listen :vhost => "foo.bar.com"` format. hosts and aliases will be restructured. **fix**: 404 error handler should now be immune to path rewrites (displays originally requested path). **fix/template**: fixed for Heroku - Plezi will not write the pid file if under Heroku Dyno (Heroku apps crash when trying to write data to files). @@ -1072,6 +1091,6 @@ *** Change log v.0.2.0 -First release that actually works well enough to do something with. \ No newline at end of file +First release that actually works well enough to do something with.