multiply defined symbols
Currently, the header contains symbols like
thread_id, which need to be defined exactly once in a linked executable. If the header is included in more than one translation unit, these symbols become multiply defined, and the executable won't link.
I have a fix for this, but since it is part of a larger rework, a merge request will take a few more days.