Evented::API::Engine is an evented API engine for Perl applications.
Modules are Perl packages which can be easily loaded, unloaded, and reloaded. API Engine automatically tracks the changes made by each module and reverts them upon unload, leaving no trace. With API Engine used properly, it is even possible to reload your entire program without restarting it.
Modules themselves can determine the necessity of additional code which may be dynamically added and removed through the use of submodules.
API Engine automatically resolves dependencies of both modules and normal Perl packages. It loads and unloads dependencies in the proper order. It is also possible to specify that a submodule is automatically loaded and unloaded in conjunction with some top-level module.
API Engine is Evented in that it tracks all Evented::Object callbacks attached from within modules and automatically removes them upon unloading. This allows you to employ events excessively without constantly worrying about their eventual disposal.