Added test `transmute_copy`: This works on LittleEndian machines. (TODO: Re-work the test to use `memcmp()` on `output` + `expected` instead of testing for equality? Or perform `BSWAP()` on `output` on BigEndian machines.)
Fortune for naka's current commit: Half curse − 半凶
str_t impl: started `str_free()`
TODO: Walk derived string slice"s parent list, and free orphaned top-parent. (`str_free()` for derived string slices is more complex and is currently unimplemented, requiring list walking functions and full-offset computation during the walk.)
Fortune for naka's current commit: Future blessing − 末吉
TODO: Find out why _display_get_fmt_n()` is so broken...
TODO: Make `_display_get_fmt()` a function alias instead of macro definition
Fixed `deprecated` macro conflicts with attribute usage. (renamed to `_deprecated`)
Fortune for naka's current commit: Half blessing − 半吉
TRACE() is no longer a no-op in release builds. This may be expensive since each call to `_t_fprintf()` does an atomic read. TODO: Migrate true debug-only messages to `dprintf()` instead of `TRACE()`; maybe find a way to make `_t_fprintf()` more efficient.
Fortune for naka's current commit: Future blessing − 末吉
Added main TODOs in main(), regarding setting up threadpool, dispatches, consolidation, process return value on match fails, etc.
Fortune for naka's current commit: Small blessing − 小吉
Add TODO() for unimplemented functions
Add unimplemented function prototype `v_in(v,r1,r2)`. If comparing versions via range is needed in the future, we can implement this. It is trivially implemented to comparing bswap"d raws (big endian comparisons), so we could make an endian-aware raw comparison for this, or we could compare components. Too much boilerplate for now, and i don"t think such a function would be useful, so leaving it dead.
Fortune for naka's current commit: Curse − 凶
Fix bug involving _mixin producing conflicting symbols: now using `gnu_inilne` (macro"d to `force_inline`), instead of `always_inline`
Fortune for naka's current commit: Blessing − 吉
TODO: Move them out of header and into seperate TU "version.c"
version_t holds version components. `v_rawtoc()`, `v_ctoraw()` to create from/convert to the format used by `VERSION()` macro and friends. Punning this union between the raw (u32, used by the macros) and the componant struct (`v_comp`) is possible on little endian machines but discouraged.
Fortune for naka's current commit: Half blessing − 半吉
the macro uses GCC builtins to guarantee generation of `bswap*` instructions.
Integer types are supported from u/i16 to u/i128
Fix bug in VERSION macro expansion with internal `#undef`"d macros.
Fortune for naka's current commit: Half blessing − 半吉