Bracket structs in macros to avoid side effects in
operator precedence. e.g:
&foo->bar->baz != (&foo->bar)->baz
Renamed fdcat <-> fdncat, fcat <-> fncat
Implemented StringBuffer_vsprintf.
Fixed StringBuffer_vsprintf implementation.
Refactored string header:
* sort macros
* replaced 'catn' with 'cat'
Moved StringBuffer method definitions/macros to separate header.
Refactored string library.
String should be initialized '\0' terminated.
Always terminate string in StringBuffer with '\0'.
Renamed LIST_EACH macro parameters.
Protect parser macros against invalid expansion.
Fixed body parser test.
Cleanup message test.
Added test for empty StringBuffer.
Implemented StringBuffer_from_string and StringBuffer_from_printf.
Added 'compiler' flag to project.mk to switch between gcc/clang.
Debug connection handling. Rebind socket quickly.
Create message parser from existing buffer.
Implemented StringBuffer_log macro and
StringBuffer_fdxload for non-blocking read .
Implemented message serialization.
Fixed message body parsing.
Implemented client socket connect (Socket_use).
Implemented macro for libev backend selection (KQUEUE on osx, SELECT else)
Set socket backlog to 512 (by default)
Renamed socket variables to sock to not shadow the socket function.
Improve echo client.
Implemented StringBuffer_write/fwrite and StringBuffer_equals macros.