Just to clarify: if the scripting engine was on a separate thread from the UI/socket layer, your life as a scripter would be about 100x more difficult. Such a change could not be entirely encapsulated within mIRC's internal code, it would require changes to scripts to lock and synchronize the UI/socket/script layers. Many commands and events rely on the fact that mIRC responds to the server, or otherwise performs an action, immediately before sending/receiving any more data to the underlying socket, since it is all single threaded. Scripting a simple ON TEXT theming script would now create a race condition whereby the unscripted join event could fire *after* an on text event from a user, causing you to see things like the following, if you were not careful in synchronizing the threads:

Code:
<USER> hey guys
* USER joins #channel


mIRC could not do this synchronization automatically, otherwise it would collapse the overall behaviour back into a "single threaded" one, effectively defeating the purpose of separating the script and UI/socket threads. If you're asking for mIRC to relieve its responsibility of synchronizing the script/UI/socket layers, you're really asking to take on that responsibility yourself. Someone has to do it.


- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"