Another large addition I've made was to allow you to spawn an entity's handler into its own scripted thread. This is hugely powerful as it allows you to instill it with a 'brain' that's much more powerful than the 'on_think' event. When using an event-based callback system you have to be careful not to block anything. If you engage in a lengthy operation, for example a loop, you could potentially lock the game up. However, GMScript has a powerful feature in the form of cooperative threads (like Lua's coroutines) which allows you get around this. If you spawn a new 'thread' (different to OS threads, they exist only in the VM) you can use the block, signal and yield functions to run long operations. In the terms of the entities, you launch a new thread which is associated to the entity (passed as 'this'). From here, you can effectively treat it as a separate program - you can tell it to block until a certain signal is reached and then continue operation as normal.
I'm going to investigate how well this plays with the existing codebase to ensure that either method could be used or both used together. If so, this would bring extra power to the system :)