Removed static_assert_nomsg, since static_assert's message argument is
optional now. In C2X mode this uses the native _Static_assert
functionality, otherwise it falls back to a macro-based overload.
Additionally, rewrote the assert macro so it correctly marks the failing
branch as a dead end.
Removed the use_gnu_ext option as well as fallback paths for compilers
that don't support GNU extensions. To my knowledge, none of those
compilers support C11 to a sufficient extent to compile Taisei anyway,
and those fallbacks are very poorly tested.
Pedantic warnings are now disabled, and extensions that are common to
reasonably recent versions of GCC and clang are permitted to be relied
on (list of allowed extensions TBA).
* Implement asynchronous logging
Put all log messages into a queue. A background thread will format and
dispatch the messages to loggers in a first-in-first-out fashion. This
is mostly useful for windows/wine, or in cases *very* spammy logging.
This adds some malloc overhead, however.
Can be disabled with TAISEI_LOG_ASYNC=0
* log: unfuck memory management
* log: add TAISEI_LOG_ASYNC_FAST_SHUTDOWN env variable
If true, don't wait for the logging queue to process every message
before shutting down.
* strbuf: fix off-by-one error
* log: sync queue before crashing on assertion failure
* docs/ENVIRON: update logging docs