This is not an exhaustive list of TODO items.
* Write a bunch of tests for the exception API
* Remove :lexical tests in t/* and convert them to using
autodie. The :lexical option is no longer officially supported in
Fatal. These tests may be allowable in an t/internal.t file.
* (More?) tests for user defined subs!
* Define roles properly.
* Trawl through perlfunc to find which things autodie may apply to.
* Generate a good way to allow subroutines to register themselves
with roles and message handlers, possibly defining their own
exception handler to use.
* Provide an autodie mixin which at least provides expected autodie
behaviours, even if someone wants to use their own exception class.
* Provide a nicer way to override message handlers.
* Finalise the exception interface.
* Write a huge amount of documentation.
* Write a huge amount of tests.
* Test the many varied forms of sysopen.
* Test fcntl.
* !!! We need a proper way to override exceptions from system!
* Make sure that all the internal subroutines in Fatal continue to
work using their old wacky interfaces.
== 5.8 / The One True Autodie ==
* Support 're-instating' original subs when we've used autodie
on user subs, or when we've used 'no autodie ...' to turn
off a sub until the end of a scope.
* We do this now! Or we should. More tests are needed.
* Consider what happens when import is called at run-time!
(Both in 5.10 and 5.8, but especially 5.8)
== Wishlist ==
* Reduce the number of lexical guards we need in our array.
We should be able to combine these, or have a single guard
that does the right thing.
* Think about padwalker integration. This can give us really
pretty errors!
* Catch require/do and remove any autodying subs upon entry.
At the end of file, replace them. This is a better solution
to using leak-guards, which require more time and space at
run-time.