In D, if a type is not marked as shared, then it is by definition thread-local, and the compiler is free to assume that it's thread-local.
I find this to be rather vague. If the compiler exploit this to the maximum wouldn't that lead to lots of bugs?