drop Package::Stash dependency Package::Stash refuses to work with package names that are valid, and can break on earlier perls. Rather than working around this, just work with the symbol tree manually. Using Package::Stash doesn't make the code significantly cleaner or easier to understand. Additionally, Package::Stash brings in a larger dependency tree than is reasonable for the work it does.
Switch to EU::HC (with an inc::latest-like approach) Implement semi-elaborate Makefile.PL boilerplate for EU::HC use. While at this point EU::HC seems rather stable, it still hasn't settled enough for complete comfort. This allow loading of "more-recent-than INC", in order to decrease amount of needed release churn to work around newly-found problems.
Remove incorrect SKIP for 5.8.1 The reason this test failed is srictly the construct of the test itself, and not part of namespace::clean's functionality. reqiure() in list-assign context combined with an @INC coderef hook would result in visible stack corruption as per http://www.nntp.perl.org/group/perl.perl5.porters/2003/10/msg83192.html
Allow packages to be cleaned multiple times Originally the functionality was implmented via Filter::Util::Call, but when it was removed in [1] the "one per scope" logic remained. Given the reliance on B::Hooks::EndOfScope none of this is longer required. [1] https://metacpan.org/diff/file?target=PHAYLON%2Fnamespace-clean-0.07%2Flib%2Fnamespace%2Fclean.pm&source=PHAYLON%2Fnamespace-clean-0.06%2Flib%2Fnamespace%2Fclean.pm
Restrict debugger workaround to when DB::sub will be used The issues with the debugger only arise when DB::sub will be called. Since the workaround requires XS modules, avoid it unless actually needed. This avoids XS prereqs when using modules like Devel::Confess that use debugger features but don't require the workaround.