facil.io v0.4.0 Release Notes

    • Rewrite from core. The code is more concise with less duplications.

    • Different API.

    • The server is now a global state machine instead of an object.

    • ๐Ÿ‘ Better integration with libsock.

    • ๐Ÿ– Handles libsock's UUID instead of direct file descriptors, preventing file descriptor collisions and preventing long running tasks from writing to the wrong client (i.e., if file descriptor 6 got disconnected and someone else connected and receive file descriptor 6 to identify the socket).

    • Better concurrency protection and protocol cleanup on_close. Now, deferred tasks (server_task / server_each), the on_data callback and even the on_close callback all run within a connection's "lock" (busy flag), limiting concurrency for a single connection to the on_ready and ping callbacks. No it is safe to free the protocol's memory during an on_close callback, as it is (almost) guarantied that no running tasks are using that memory (this assumes that ping and on_ready don't use any data placed protocol's memory).