This is not an exhaustive list of TODO items.

* chmod is not currently in our default list of things to make
  autodying.  It should be, but probably needs its own special
  handler, since it can return true even when some permissions
  have not been changed.

* Almost everything that applies to chmod() applies to kill().

* Ditto for utime().

* Can we overload readline()?  Will that change <>?

* Ditto for readpipe().

* What do setpgrp(), setpriority() and telldir() return?

* tell() requires special handling, it returns -1 on failure.

* Is it an error for wait() or waitpid() to return -1?  Currently
  we don't check wait() or waitpid() at all.

* Is there any point trying to examine the return from sleep()?

* I don't think seekdir() returns anything.  It certainly doesn't
  in Linux, but double-check in Perl.

* autodie doesn't seem to give consistent error messages if it fails
  to compile replacement code.  In particular, it doesn't seem to
  halt the running program.  This deserves more investigation, and
  seems to be centered around the "Carp::confess("$@") if $@" line
  in Fatal.pm

* use Fatal qw(system) now works!  Test to make sure it works sensibly
  with Fatal semantics, rather than accidently slipping in autodie
  semantics.  What does it mean for Fatal semantics to exist here?

* Write a bunch of tests for the exception API

* (More?) tests for user defined subs!

* 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.

* Write more documentation.

* Write more 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.

* Test open(my $fh, '|-') || exec().

* 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.
