Changelog History
Page 11
-
v0.2.2 Changes
⚡️ Update The static file service now supports
ETag
caching, sending a 304 (not changed) response for valid ETags.⚡️ Update: A performance warning now shows if the CPUs are significantly under-utilized (less than half are used) of if too many are utilized (more than double the amount of CPUs), warning against under-utilization or excessive context switching (respectively).
-
v0.2.1 Changes
🔔 Notice: The Rack Websocket Draft does not support the
each
anddefer
methods. Although I tried to maintain these as part of the draft, the community preferred to leave the implementation of these to the client (rather then the server). If collisions occur, these methods might be removed in the future.⚡️ Update: Websockets now support the
has_pending?
method andon_ready
callback, as suggested by the Rack Websocket Draft.⚡️ Update: deprecated the Websocket method
uuid
in favor ofconn_id
, as suggested by the Rack Websocket Draft.🛠 Fix: fixed an issue were the server would crash when attempting to send a long enough websocket message.
-
v0.2.0 Changes
This version is a total rewrite. The API is totally changed, nothing stayed.
💎 Iodine is now written in C, as a C extension for Ruby. The little, if any, ruby code written is just the fluff and feathers.
-
v0.1.21 Changes
Optimization: Minor optimizations. i.e. - creates 1 less Time object per request (The logging still creates a Time object unless disabled using
Iodine.logger = nil
).🔒 Security: HTTP/1 now reviews the Body's size as it grows (similar to HTTP/2), mitigating any potential attacks related to the size of the data sent.
🔊 Logs: Log the number of threads utilized when starting up the server.
-
v0.1.20 Changes
⚡️ Update/Fix: Updated the
x-forwarded-for
header recognition, to accommodate an Array formatting sometimes used (["ip1", "ip2", ...]
).⚡️ Update: native support for the
Forwarded
header HTTP.API Changes:
Iodine::HTTP.max_http_buffer
was replaced withIodine::HTTP.max_body_size
, for a better understanding of the method's result.
-
v0.1.19 Changes
⚡️ Update: added the
go_away
method to the HTTP/1 protocol, for seamless connection closeing across HTTP/2, HTTP/1 and Websockets.
-
v0.1.18 Changes
⚡️ Update: The request now has the shortcut method
Request#host_name
for accessing the host's name (without the port part of the string).
-
v0.1.17 Changes
Credit: thanks you @frozenfoxx for going through the readme and fixing my broken grammar.
🛠 Fix: fixed an issue where multiple Pings might get sent when pinging takes time. Now pings are exclusive (run within their own Mutex).
🛠 Fix: HTTP/2 is back... sorry about breaking it in the 0.1.16 version. When I updated the write buffer I forgot to write the status of the response, causing a protocol error related with the headers. It's now working again.
⚡️ Update: by default and for security reasons, session id's created through a secure connection (SSL) will NOT be available on a non secure connection (SSL/TLS). However, while upgrading to the encrypted connection, the non_encrypted session storage is now available for review using the
Response#session_old
method.- Remember that sessions are never really safe, no matter how much we guard them. Session hijacking is far too easy. This is why Iodine stores the session data locally and not within the session cookie. This is also why you should review any authentication before performing sensitive tasks based on session stored authentication data.
-
v0.1.16 Changes
🐎 Performance: HTTP/1 and HTTP/2 connections now share and recycle their write buffer when while reading the response body and writing it to the IO. This (hopefully) prevents excess
malloc
calls by the interpreter.
-
v0.1.15 Changes
⚡️ Update: IO reactor will now update IO status even when tasks are pending. IO will still be read only when there are no more tasks to handle, but this allows chained tasks to relate to the updated IO status. i.e. this should improve Websocket availability for broadcasting (delay from connection to availability might occur until IO is registered).
⚡️ Update: Websockets now support the
on_ping
callback, which will be called whenever a ping was sent without error.