ME 5.1 has undergone some major changes in codebase, since version 4.2
modules::run() is now dedicated to returning view partials only, and it will return buffered output (a view) from a controller. The syntax for using modules::run is a URI style segmented string and unlimited variables. ie: modules::run(‘module/controller/method’, $var_1, ...$var_n).
To call a module controller from within a controller you can use $this->load->module() or modules::load() and PHP5 method chaining is available for any object loaded by ME. ie: $this->load->library(‘validation’)->run().
The PHP5 spl_autoload feature allows you to freely extend your controllers, models and libraries from application/libraries base classes without the need to specifically include or require them.
The library loader has also been updated to accommodate some CI 1.7 features: ie Library aliases are accepted in the same fashion as model aliases, and loading config files from the module config directory as library parameters (re: Form_validation.php) have beed added.
Setting: $config[‘enable_profiler’] = TRUE, in application/config.php , allows you to activate CI profiler from config your file.
$config = $this->load->config(‘config_file’), Returns the loaded config array to your variable.
$CI is added as a default class variable to libraries loaded by ME. ($CI =& get_instance() is not required), Simply use $this->CI->whatever() in your library.
Models and libraries can also be loaded from subdirectories in their respective application directories.
The code is fairly well documented, so if I missed something new, my apologies.