0.116 2026-06-11 T. R. Wyant Remove references to the RT bug tracking system. Replace wyant@cpan.org with harryfmudd@comcast.net. Repackage licenses so that GitHub can find them (maybe). Thanks to Mikko Koivunalho (specifically his blog post https://blogs.perl.org/users/mikko_koivunalho/2025/11/github-and-the-perl-license.html for the how-to. No functional changes. 0.115 2025-01-15 T. R. Wyant Re-implement signatures in terms of PPI::Structure::Signature. This requires PPI 1.281 or above. Allow static method calls in allow_if_computed_by. 0.114 2022-03-09 T. R. Wyant Clarify POD for prohibit_returned_lexicals to make clear (I hope) that it applies to 'state' varables as well as 'my' variables, but does NOT detect or handle implicit returns. allow_state_in_expression now accepts post-increment and -decrement. Thanks to Olaf Alders for finding this. 0.113 2022-02-27 T. R. Wyant Try to collect variable uses from signatures. Thanks to Olaf Alders for pointing out this issue. 0.112 2021-10-04 T. R. Wyant Tweak 'provides' and 'no_index' metadata. 0.111 2021-07-03 T. R. Wyant Correct generation of 'provides' metadata. Thanks to Favio Poletti for blogging https://github.polettix.it/ETOOBUSY/2021/06/15/the-real-pause-workaround/, and ultimately to Joel Berger for the pointer to https://metacpan.org/pod/CPAN::Meta::Spec#no_index Optionally check variable in catch(). This is controlled by the check_catch configuration item, which is off by default. 0.110 2021-03-28 T. R. Wyant Get prerequisites up to snuff, and add xt/author/prereq.t to ensure they stay that way. Add rt.cpan.org back to bug reporting methods. Long live RT! 0.109 2021-01-15 T. R. Wyant Add Travis CI testing. Use GitHub as bug tracker. R.I.P. rt.cpan.org. 0.108 2020-09-18 T. R. Wyant Add POD section AVOIDING UNUSED VARIABLES. Thanks to Ben Martin for the suggestion. 0.107 2020-05-07 T. R. Wyant Make documented build dependencies nearer to reality. 0.106 2020-04-08 T. R. Wyant Dig out variables declared inside strings e.g. "foo@{[ my $bar ]}" Find variables declared in passing. That is, things like Readonly::Scalar my $answer => 42; which do not get parsed by PPI as a PPI::Statement::Variable. Pick up $y in '( my $x, my $y )'. The previous code picked up only the variables declared before the first comma in the PPI::Statement::Variable. Refactor handling of derived PPI documents. Refactor the recording of symbol declarations and uses. 0.105 2020-02-18 T. R. Wyant examples/unused-vars is now driven by options on the command line, not by a configuration file. No longer recommend Readonly::XS. Thanks to Jay Kahrman for pointing out that this was no longer appropriate. 0.104 2019-12-23 T. R. Wyant Add Boolean configuration item allow_state_in_expression, which allows an otherwise-unused state variable if the policy thinks the computed value is also used in an expression. This item is false by default. 0.103 2019-08-17 T. R. Wyant Test POD links. 0.102 2017-12-19 T. R. Wyant Fix for() list and my(): The iterator variable (if any) for a for() or foreach() is not in-scope as seen from the list. This is an issue for code like for my $x ( @{ $x } ) {...} The variable specified by my() is not in-scope as seen from the right-hand side of an assignment (if any). This is an issue for my $x = $x Thanks to Heinz Knutzen for finding these. 0.101 2017-11-20 T. R. Wyant Remove 'mailto' bugtracker metadata Its presence appears to tell RT not to allow filings. 0.100 2016-07-06 T. R. Wyant Refactor the logic that discovers which variables are interpolated into double-quotish strings into PPIx::QuoteLike. This does not include regular expressions, which are already handled by PPIx::Regexp. Survive variable declarations that declare nothing. These can appear if (e.g.) PPI mis-parses an attribute list, and that attribute list contains something like 'Arg(state)'. 0.006 2016-04-20 T. R. Wyant Allow 'return ( my $x = 0 )' This construction can be used to return a temporary value from an lvalue subroutine. The case 'return my $x = 0' is equivalent, but was not recognized as defining a variable. Now both are recognized and accepted by default. If you want to reject these, there is a new Boolean configuration item, prohibit_returned_lexicals. 0.005 2016-01-22 T. R. Wyant Improve performance on really, really long strings This was done by rewriting the regular expression that finds interpolations to minimize backtracking. 0.004 2016-01-08 T. R. Wyant Add GitHub repository to module metadata. 0.003 2014-12-12 T. R. Wyant Fix author test for the presence of recommended modules. 0.002 2013-10-08 T. R. Wyant Required Perl::Critic version 1.119, since its scope computation is adequate for our needs. Got rid of our own scope computation code. Converted Changes file to CPAN::Changes::Spec format. 0.001 2013-06-23 T. R. Wyant Initial production release.