On Sunday, 31 May 2020 at 16:57:06 UTC, Steven Schveighoffer
wrote:
I can't imagine much of druntime working at all without TLS.
Indeed, it is a requirement these days.
I believe that's where these roots are being stored.
-Steve
I would really like if druntime could remove its TLS variables as
much as possible. TLS is really a complicated solution underneath
and druntime makes it even more complicated. It requires a hook
in thread creation since the raw TLS specification only applies
simple variables that can be initialized using memcpy/memset. Any
thread that is created outside the druntime will fail if D
supports "complex" TLS variables.
TLS variables are also slower that normal variables since it
often requires a system call in order to obtain the variable.
druntime should use stack variables much it can and/or shared
variables.
If you ever encounter a TLS variable which is global variable in
D, try to see if you can solve it with a stack or shared variable.