- Don't check. Programs will crash if a thread-local variable is passed outside the thread (C, C++)
- Naive interpreter. Everything works, slowly, because the worst case code is used for everything. (CPython)
- Really clever just-in-time recompilation when what seemed to be thread-local suddenly gets accessed from another thread. (PyPy, Java?)
- Compile time checking to prevent this. (Rust)
- No threads (classic Javascript)
- Explicit shared areas into which only certain types can be placed (ECMAscript 2018)
- Don't check. Programs will crash if a thread-local variable is passed outside the thread (C, C++)
- Naive interpreter. Everything works, slowly, because the worst case code is used for everything. (CPython)
- Really clever just-in-time recompilation when what seemed to be thread-local suddenly gets accessed from another thread. (PyPy, Java?)
- Compile time checking to prevent this. (Rust)
- No threads (classic Javascript)
- Explicit shared areas into which only certain types can be placed (ECMAscript 2018)