Revision history for autodie
1.993 (Devel)
* DOCUMENTATION: The :dbm tag is now correctly documented
in autodie/CATEGORIES. Thanks to Darren Duncan for spotting
this. (RT #39172)
* DOCUMENTATION: The README file has been updated to reflect
current minimum Perl versions (5.8.0) and current resources.
* DOCUMENTATION: The closedir() function is properly
documented as being included in the :filesys tag.
* DOCUMENTATION: Feedback section added to the autodie
documentation. If you find the module useful, consider
saying so on cpanratings.perl.org, or dropping me a note.
* BUILD: Upgrade to Module::Intstall 0.77
1.992 Sun Sep 7 15:51:32 AUSEST 2008
* BUGFIX: unlink(), rename(), chdir() and closedir() functions
are now included in the :filesys tag.
* BUGFIX: binmode() is now checked for failure as part of
the :file tag.
* BUGFIX: Using an unopened filehandle in an autodying
built-in no longer triggers a spurious warning.
* BUGFIX: RT #38845, corrected a missing space in the error
produced by autodie when called with the ':void' switch.
Many thanks to Matt Kraai for the patch!
* FEATURE: The dbmopen() and dbmclose() functions are now
supported in their own :dbm tag. This is part of :io
(and hence :default).
* FEATURE: The dbmopen() built-in has its own formatter,
which ensures errors always display the mask in octal,
not decimal.
* DOCUMENTATION: The :filesys tag is properly documented.
* DOCUMENTATION: Added link to Perl tip on autodie.
* TEST: RT #38845, t/internal.t updated to detect malformed error
messages involving the mixing of ':void' and autodie.
1.991 Fri Aug 22 23:57:24 AUSEST 2008
* BUGFIX: RT #38614, stringified autodie::exceptions objects
now always end with a newline. Thanks to Offer Kaye for the
report.
* BUGFIX: Makefile.PL is no longer executable.
* BUGFIX: 'chdir' added to defaults, and the :filesys group.
* BUGFIX: RT #38598, the errno attribute on autodie::exception
objects is now correctly set.
* BUGFIX: RT #38066, exceptions from system() now report
the correct line number.
* TEST: Internal tests changes to ease integration with core.
* TEST: Checks added for empty 'errno' string in basic_exceptions.t
* TEST: Errors should end with a newline.
* TEST: fork tests should no longer mysteriously fail
on Solaris.
* TEST: backcompat.t should no longer give strange failures on
old versions of 5.8.3 or earlier.
* TEST: system.t ensures the correct file is reported.
* BUILD: Upgrade to Module::Install 0.75
1.99 Mon Jul 21 02:25:23 PDT 2008
* RELEASE CODENAME: "jarich", in thanks for her giving
up pretty much a whole week of her life to do nothing
but help me work on my talks for OSCON.
* BUGFIX: autodie will now check open() for returning
undef, not merely false, as open() can legimiately
return zero for open(my $fh, '-|') || exec(...) style
calls.
* TEST: Added t/lethal.t, a test for basic subclassing.
* TEST: Added t/usersub.t, a test for correct handling
of user subroutines.
* DOCUMENTATION: Noted in autodie.pm that user subs can
only be made Fatal/autodying if they've been declared
first.
* FEATURE: Conflicts between 'no autodie' and 'use Fatal'
re-enabled.
* FEATURE: Added sysopen() and fcntl() to :file, and
exec() and system to :system. exec() doesn't yet work
due to its prototype;
* FEATURE: Vanilla 'use autodie' now implies
'use autodie qw(:default)'. This excludes system(),
which depends upon an optional module, and exec(),
which breaks its exotic form.
* TEST: Internal tests moved from Fatal.t to
internal.t
* FEATURE: Added support for fileno.
* FEATURE: Addded support for exec (although this
breaks the exotic form while autodie is in scope).
* BUGFIX: 'no autodie' now plays nicely with user subs.
* DOCUMENTATION: Added a brief mention of the category
system that autodie provides.
1.11_01 Fri Jul 4 12:53:11 AEST 2008
* RELEASE CODENAME: "Aristotle", in thanks for the many
long and detailed discussions about the autodie interface
and how it should interact with Fatal. Aristotle was
instrumental in ensuring autodie has the clean and
simple interface that it does now.
* FEATURE: 5.8 now has the ability to differentiate between calls
that return false to indicate failure, and those that
only return undef to indicate failure. CORE::send and
CORE::recv are examples of these.
* FEATURE: You can now 'use autodie qw(fork)' to make sure your
forks are successful (they must return defined).
* TEST: t/todo.t removed. We have passing tests (recv.t)
for the reminder I had stuffed into here.
* TEST: t/fork.t added, for testing autodying fork.
* INTERNAL: The internal subroutine _remove_lexical_subs has been
renamed to a much less misleading name of _install_subs,
since that's what it actually does now.
* BUGFIX: Found and fixed a nasty bug where autodie's internal
subroutine cache was being too agressive. This could result in
handles from the incorrect package being used. Scalar filehandles
have never been affected by this bug.
* BUGFIX: Autodying subroutines will no longer leak into other
files if they are used/required/done in the same lexical scope.
* BUILD: Fatal and autodie now install themselves with a
INSTALLDIRS=perl target, meaning they will now correctly
override (and possibly overwrite) your installed Fatal.pm
on 'make install'.
* DOCUMENTATION: Documented the 'used only once' bug when
using Fatal/autodie with package filehandles. This has
always existed in Fatal, and as far as I know it incurable
(but harmless).
* FEATURE: autodie and its exceptions can now be subclassed!
* TEST: Added t/crickey.t as an example of using fair dinkum
subclasses of autodie. Mate, I reckon it's time for a beer.
* INTERNAL: Moved exception architecture from inside-out
objects (which need lots of extra work under 5.8) to
regular hashes (which don't need extra work).
* INTERNAL: Inlined relevant portions of Scope::Guard, meaning
autodie can be installed with no dependencies. (It still
recommends IPC::System::Simple.)
1.10_07 Sun Jun 29 15:54:26 AEST 2008
* RELEASE CODENAME: "ikegami", in thanks for solving the problem
of getting lexical replacement of subroutines working for real
under Perl 5.8. As this works better than my 5.10 implemenation,
it forms the foundation for this release.
* Removed inappropriate diagnostics about :lexical from Fatal.pm
* Moved can't mix lexical and void diagnostics to autodie.pm
* Added some basic tests for sysopen()
* Removed the 5.10 only way of tracking lexical hints with
%^H. Our code now exclusively uses the more portable
5.8 code that employs Scope::Guard (and has less side-effects).
* Exotic system is no longer clobbered under 5.10 outside of
autodie's scope.
* autodie::exception::match is better exercised in the 5.8
test suite.
* Re-enabled 'use autodie' vanilla tests.
* t/backcompat.t no longer fails under Devel::Cover
* Repeating function names in arguments to autodie no
longer causes those functions to become 'stuck' in
autodying mode.
* Wrong-version of Fatal.pm support added, along with basic
hints on how to get it working.
* Expanded documentation on autodie, particularly for
exception handling under Perl 5.8.
* Less warnings from t/exceptions.t when running under 5.10.
* All releases now really depend upon Scope::Guard, not just 5.8.
1.10_06 Sun Jun 22 21:50:39 AEST 2008
* RELEASE CODENAME: "Chocolateboy", in thanks for his wonderful
insights, and for letting me sound off way too many ideas
about how things may be done.
* Fixed speeling errors in context.t, thanks to Stennie.
* Fixed minor pod errors and omissions.
* Fixed bug in recv.t which resulted in an incorrect number
of skipped tests on systems using socketpair emulation.
* Fixed a bug that would cause unwanted interactions between
autodie and autobox. Thanks to chocolateboy. (5.8)
* Wrote a (failing) test case demonstrating that the
autodie pragma could leak across files. Many thanks to
chocolateboy for bringing this to my attention.
* t/system.t checks to see if exotic system has been injured
in the same package as 'use qutodie qw(system)'
* Calling filename reliably reported in 5.8 error messages
and error objects.
* User subs can be made autodying under 5.8, but they leak
over the entire package (which is very bad!)
* Context-checking tests split into package-scope tests and
lexical scope tests.
* Lexical user-subs are disabled under Perl 5.8. They were
leaking everywhere and not being lexical at all. Attempting
to use a lexical user-sub under 5.8 now causes an error.
* Bugs found in interaction between autodie and Fatal in
5.8. When used together, we can't reliably replace a
Fatalised sub with an autodying one, and then switch it
back again at the end of block.
* Bugs described above fixed, thanks to ikegami!
* Overhauled _remove_lexical_subs, based on ikegami's
input. This routine would now be better named
"_install_lexical_subs", since it can now both
install and remove.
* Surpressed some warnings under 5.8 about uninitialised
hints hashes.
* Added support for backwards compatible Fatal calls in
5.8. These are currently a little *too* backwards compatible,
possessing the same bugs as the old Fatal (clobbering
context).
* Improved caching of pre-generated subroutines. We now
cache the compiled subroutine, rather than the uncompiled
code.
* Added more tests to ensure Fatal throws backcompat
strings, whereas autodie throws exception objects.
* Support for lexical user-subs enabled, tested, and working
in 5.8!
* Added resources to Makefile.PL / META.yml
1.10_05 Sun Jun 15 15:46:38 AEST 2008
* Kludgy support for Perl 5.8 using Scope::Guard and dark
and terrible magicks taken from namespace::clean.
* Rudimentary caching of generated code, to avoid having
to regenerate the same code every single time Fatal/autodie
is used on the same function.
* Nuking subroutines at end of lexical scope moved into
own subroutine.
* Perl 5.8 support working! Backcompat mode not yet
supported, nor is autodie with user defined subs.
The 5.8 support that is there is rather kludgy, and
still needs a lot of work.
* Perl 5.8 code no longer gets executed under 5.10 when
executing write_invocation().
* lex58.t tells the user that we'll get warnings under
Win32, and these are to be ignored. This is due to
a Perl behaviour where it always calls the shell under
Win32, even when multi-arg system is used.
* lex58.t no longer fails to compile on Perl 5.10 which
is still clobbering exotic open. Perl 5.8 does not
clobber the exotic form.
* Backcompat tests are all marked as TODO under perl 5.8
* Makefile.PL moved back to saying autodie works under 5.8
* Context/user-sub tests skipped under 5.8, which does
not yet support autodying of user subs.
* lex58 tests now skipped if IPC::System::Simple not installed.
* Squished a spurious warning from lex58.t
1.10_04 Sat Jun 14 15:02:17 AEST 2008
* Made all $VERSION numbers more friendly to static code
analysis tools (including CPAN).
* Added a test to make sure all version numbers are incremented
in lock-step.
* Started 5.8 support
* Removed dependencies on 5.10 'use feature'.
* Removed dependencies on 5.10 fieldhashes.
* a::e::match no longer uses smart-match or //
* %^H init doesn't use // anymore.
* 5.8 won't try to use // in fatalised subs (kludge)
* recv.t corrected to use a custom socket (closed for writing)
and to ignore SIGPIPEs.
1.10_03 Fri Jun 13 11:04:17 AEST 2008
* Updated backwards compatibility tests to work on
non-Enligh systems.
1.10_02 Fri Jun 13 10:55:00 AEST 2008
* Tweaked boilerplate test to remove windows-only paths.
1.10_01 Thu Jun 12 17:19:13 AEST 2008
* First beta release of module.
1.09 UNRELEASED
* Many changes not documented here.
* Fatal is now fully backwaards compatible again.
* system() can be fatalised/autodying if IPC::System::Simple
is installed.
* Rationlisation of autodie::exception API.
* autodie::exception->function() now always returns the
full function name as best we can find it, and not
what may be getting replaced (eg, CORE::open instead of
main::open).
1.08 Sat Mar 29 10:54:20 AEDT 2008
Dual-lifed module internally from work I was doing on p5p.