The Main Event Loop - manages all available sources of events.
Threads - thread abstraction; including threads, different mutexes, conditions and thread private data.
Thread Pools - pools of threads to execute work concurrently.
Asynchronous Queues - asynchronous communication between threads.
Dynamic Loading of Modules - portable method for dynamically loading 'plug-ins'.
Memory Allocation - general memory-handling.
IO Channels - portable support for using files, pipes and sockets.
Error Reporting - a system for reporting errors.
Message Output and Debugging Functions - functions to output messages and help debug applications.
Message Logging - versatile support for logging messages with different levels of importance.