Hi,
You can make the string buffers thread safe by using TLS (Thread Local Storage) that allocates memory that is unique for every thread (so you don't have to implement your own system).
See the function TlsAlloc, TlsSetValue, TlsGetValue and TlsFree in the Win32 API documentation.
By the way PureBasic looks nice, I'm coding my own language, maybe we'll compete some day (or maybe not, my language going to be a bit more advanced, using type inference and polymorphic functions, if I ever decide to code it)
The PureBasic compiler is not the best I've seen, but it is better than the average, at least it generates native code. You could use some more optimization, look into Single Static Assignment form, Code Flow Graphs and Data Flow Graphs, Three Address Code, and register allocation (Linear Scan Register Allocation, Second-chance binpacking, Graph-coloring and coalescing register allocators).
Get the "Dragon Book" aka "Compilers: Principles, Techniques, and Tools" if you don't have it already.
PureBasic outputted some silly code like "add ebx, 0" and "mov eax, [stuff] mov eax, [morestuff]", use a peephole optimizer

(of course, an optimizer is not the most important part of the language but it isn't *that* hard to write one if you have spare time))
-Jaen Saul