Currently, it's not possible to call "(unload-feature 'eshell)" after using Eshell. You'll just get an error that some of Eshell's extension modules depend on eshell.elc. This is a relatively minor issue, but I'm hoping to make some improvements to how extension modules get loaded, so this is a prelude to that. In addition to making it *possible* to unload Eshell, I also fixed an issue where the unload hooks weren't named correctly. They were of the form 'eshell-hist-unload-hook', but the file's name is em-hist.el. I moved these to 'em-hist-unload-function' and similar ('-function' because the '-hook' version is obsolete, as I understand it).