Each module has it's own scope of script functions, global variables, and classes. These are normally not shared between modules, even though multiple modules may be built from the same source scripts. However modules may interact with each others through function binding.
As the scripts are compiled into bytecode AngelScript also provides a virtual machine, also known as a script context, for executing the bytecode. The application can have any number of script context at the same time, though most applications will probably only need one. The contexts support suspending the execution and then resuming it, so the application can easily implement features such as concurrent scripts and co-routines. The script context also provides an interface for extracting run-time information, useful for debugging scripts.
The script language is based on the well known syntax of C++ and more modern languages such as Java, C#, and D. Anyone with some knowledge of those languages, or other script languages with similar syntax, such as Javascript and ActionScript, should feel right at home with AngelScript. Contrary to most script languages, AngelScript is a strongly typed language, which permits faster execution of the code and smoother interaction with the host application as there will be less need for runtime evaluation of the true type of values.
The memory management in AngelScript is based on reference counting with an incremental garbage collector for detecting and freeing objects with circular references. This provides for a controlled environment without application freezes as the garbage collector steps in to free up memory.