2.00 2014-11-01 [BACKWARDS INCOMPATIBILITIES] - The no_refs constructor parameter is now deprecated, and has been replace by a new unsafe_ref_capture parameter that defaults to false, meaning no references are captured by default. Capturing references by default caused too many issues that couldn't be worked around, including running DESTROY blocks multiple times on captured objects in the worst case. - Removed support for the long-deprecated no_object_refs constructor parameter (deprecated in 2002!). 1.34 2014-06-26 - Fixed use of // operator (my use, not Graham's) in previous release. 1.33 2014-06-26 - Added a skip_frames option. This causes the stack trace to skip an arbitrary number of frames. Patch by Graham Knopp. PR #5. 1.32 2014-05-05 - Added a filter_frames_early option to filter frames before arguments are stringified. Added by Dagfinn Ilmari Mannsåker. PR #4. 1.31 2014-01-16 - No code changes, just doc updates, including documenting the as_string() method in Devel::StackTrace::Frame. Requested by Skef. RT #91575. 1.30 2012-11-19 - There was an eval which did not first localize $@ and $SIG{__DIE__}. This broke Plack::Middleware::StackTrace (and possibly other tihngs). 1.29 2012-11-16 - The Devel::StackTrace->frames() method is now read-write. This allows you to do more complex filtering of frames than is easily possible with the frame_filter argument to the constructor. Patch by David Cantrell. 1.28 2012-11-16 - Allow arguments to a trace's as_string method, specifically max_arg_length Patch by Ricardo Signes. - Added a no_args option to the constructor in 1.26 but forgot to mention it in Changes. Requested by Scott J. Miller. RT #71482. 1.27 2011-01-16 - Skip some tests on 5.13.8+ that are no longer relevant because of a change in the Perl core. Reported by Andreas Koenig. RT #64828. 1.26 2010-10-15 - The as_string method did not localize $@ and $SIG{__DIE__} before doing an eval. Reported and tested by Marc Mims. RT #61072. 1.25 2010-09-06 - Devel::StackTraceFrame was not actually subclassing Devel::StackTrace::Frame. Patch by Tatsuhiko Miyagawa. 1.24 2010-09-03 - Version 1.23 was missing a $VERSION assignment. Reported by Sergei Vyshenski. - Moved the frame object to its own file, and renamed it Devel::StackTrace::Frame. The old package name, Devel::StackTraceFrame, is now a subclass of the new package, to provide a backwards compatibility shim. 1.23 2010-08-27 - Added message and indent constructor parameters. Based on a patch by James Laver. RT #59830. 1.22 2009-07-15 - Apparently, overload::StrVal on older Perls (5.8.5, but not 5.8.8) tried to call a stringification method if it existed. So now, Devel::StackTrace just uses overload::AddrRef instead, which should always be safe. Reported by Michael Stevens. Fixes RT #47900. 1.21 2009-07-01 - Overloaded objects which didn't provide a stringification method cause Devel::StackTrace to die when respect_overload was true. Reported by Laurent Dami. RT #39533. - Added a frame_filter option which allows for fine-grained control over what frames are included in a trace. Based on (but expanded) from a patch proposed by Florian Ragwitz. RT #47415. 1.20 2008-10-25 - The change in 1.15 to object creation broke the no_refs feature, causing references to be stored until the trace's frame objects were created. * Exception::Class objects are always stringified by calling overload::StrVal(). 1.1902 2008-07-16 - This release just contains another test fix. - The new tests for bad utf-8 apparently fail with any Perl before 5.8.8. Reported by Lee Heagney. RT #37702. 1.1901 2008-06-13 - This release just contains a test fix. - The new tests for bad utf-8 fail with Perl 5.8.x where x <= 6. Apparently, utf-8 was just more broken back then. Reported by Andreas Koenig's smokebots. 1.19 2008-06-13 - Dropped support for Perl 5.005. - If a function was in stack trace had been called with invalid utf-8 bytes, this could cause stringifying a stack trace to blow up when it tried to stringify that argument. We now catch those (and other) errors and simply put "(bad utf-8)" or "?" in the stringified argument list. Reported by Alex Vandiver. 1.18 2008-03-31 - Fix a test failure on Win32. No changes to the non-test code. 1.17 2008-03-30 - Added a max_arg_length parameter, which if set causes Devel::StackTrace to truncate long strings when printing out a frame. RT #33519. Patch by Ian Burrell. 1.16 2008-02-02 - A test fix for bleadperl. The value of wantarray from caller() needs to be treated as a boolean, as opposed to expecting 0 (vs undef). RT #32583. Patch by Jerry Hedden. 1.15 2007-04-28 - Changed how objects are created in order to greatly speed up the constructor. Instead of processing all the stack trace data when the object is first created, this is delayed until it is needed. This was done in order to help speed up Exception::Class. There are cases where code may be throwing many exceptions but never examining the stack traces. Here is a representative benchmark of object construction for the old code versus the new code: Rate old new old 1764/s -- -76% new 7353/s 317% -- 1.14 2007-03-16 - Added a few micro-optimizations from Ruslan Zakirov, who is hoping this will ultimately help speed up RT. 1.13 2006-04-01 - Add another fix for filename handling in the tests. Tests were giving false failures on Win32 because the tests needed to use File::Spec->canonpath(), just like Devel::StackTrace does internally. 1.12 2005-09-30 - Newer versions of Perl use Unix-style filenames when reporting the filename in caller(), which breaks Exception::Class tests on other platforms, and is just kind of funky. This module now calls File::Spec->canonpath() to clean up the filename in each frame. Reported by Garret Goebel. 1.11 2004-04-12 - No code changes, just switching to including a Makefile.PL that uses ExtUtils::MakeMaker instead of one that sneakily uses Module::Build. Requested by Perrin Harkins. 1.10 2004-03-10 - Silence a warning from the test code if Exception::Class isn't installed. Reported by Stefano Ruberti. - Localize $@ to avoid overwriting a previously set $@ while creating a Devel::StackTrace object. This caused a test failure in the Exception::Class tests when run with Perl 5.6.1, but not with 5.8.3. I don't really know how to test for it outside of Exception::Class. Reported by Jesse Erlbaum. 1.09 2004-02-26 - The overload workaround blows up if a DBI handle is anywhere in the stack, because of a bad interaction between overload::Overloaded and DBI's custom dispatching. This release works around that. 1.08 2004-02-23 - Some tests failed on Win32 because they were hardcoded to expect a file name with forward slashes. Reported by Steve Hay. 1.07 2004-02-21 - This release includes a change to the overload handling that is necessary for cooperation with Exception::Class. 1.06 2004-02-21 - Devel::StackTrace now uses overload::StrVal() to get the underlying string value of an overloaded object when creating a stack frame for display. This can be turned off by setting respect_overload to a true value. Suggested by Matt Sisk. 1.05 2004-02-17 - Devel::StackTrace incorrectly reported that arguments were being passed to eval blocks (which isn't possible). Reported by Mark Dedlow. 1.04 2003-09-25 - The special handling of Exception::Class::Base objects was broken. This was exposed by the fact that Exception::Class 1.15 now uses Devel::StackTrace in a slightly different way than it did previously. 1.03 2003-01-22 - Special handling of Exception::Class::Base objects when stringifying references. This avoids infinite recursion between the two classes. 1.02 2002-09-19 - Forgot to add Test::More to PREREQ_PM for previous releases. 1.01 2002-09-18 - Change the "no object refs" feature to be a plain old "no refs" feature. As was pointed out to me by Jean-Phillippe Bouchard, a plain reference (to an array, for example), can easily hold references to objects internally. And since I'm not going to bother descending through nested data structures weeding out objects, this is an easier way to handle the problem. Thanks to Jean-Phillippe Bouchard for a patch for this as well. The "no_object_refs" parameter is deprecated, and now does the same thing as the "no_refs" parameter. 1.00 2010-10-15 - Add an option to not store references to objects in stack frames. This can be important if you're expecting DESTROY to be called but a Devel::StackTraceFrame object is still holding a reference to your object(s). Based on discussion with Tatsuhiko Miyagawa. 0.9 2001-11-24 - Doc tweaks. 0.85 2000-09-02 - doc bug fix that made it seem like args method was only available under Perl 5.6.0 - converted objects from pseudo-hashes to regular hashes. 0.8 2000-09-02 - Should work under Perl 5.6.0+. - Added hints & bitmask methods for use under Perl 5.6.0. 0.75 2000-06-29 - Added frames method (and docs for it). - Added 'use 5.005' which I should have put in there earlier. - DOCS: explanation of 'top' and 'bottom' as they refer to the stack. 0.7 2000-06-27 - First release (I think)