Login
Note VERSION and release date in change log.
[gknop/Perl-Critic.git] / Changes
1 [1.118] Released on 2012-06-02
2
3     Policy Changes:
4     * CodeLayout::RequireTidyCode: Revise to work with incompatible
5       changes in Perl::Tidy 20120619. RT #77977.
6     * TestingAndDebugging::ProhibitNoWarnings: Correct the parse of the
7       'no warnings' statement, so that 'no warnings "qw"' is recognized
8       as supressing just 'qw' warnings. RT #74647.
9
10     Other Changes:
11     * Make all unescaped literal "{" characters in regexps into
12       character classes. These are deprecated, and became noisy with
13       Perl 5.17.0.  RT #77510.
14
15 [1.117] Released on 2011-12-21
16
17     HAPPY HOLIDAYS!
18
19     New Policies:
20     * Variables::ProhibitAugmentedAssignmentInDeclaration reports
21       constructs like 'my $x += 1'. Contributed by Mike O'Regan
22
23     Policy Changes:
24     * BuiltinFunctions::ProhibitLvalueSubstr: Add explicit 'use version'.
25       RT #68498.
26     * CodeLayout::ProhibitHardTabs: Add 'pbp' to the default_themes list.
27       RT #71093.
28     * ControlStructures::ProhibitMutatingListFunctions now understands that
29       tr///r (introduced in 5.13.7) does not change its operand.
30     * ControlStructures::ProhibitMutatingListFunctions now understands that
31       '//=', '<<=', and '>>=' are assignment operators. RT #70901.
32     * ErrorHandling::RequireCheckingReturnValueOfEval now allows things
33       like grep { eval $_ }. RT #69489.
34     * Modules::RequireExplicitPackage now has configuraion option
35       allow_import_of, to allow the import of specified modules before
36       the package statement. RT #72660.
37     * RegularExpressions::ProhibitEnumeratedClasses no longer thinks
38       that [A-Za-z_] matches \w. RT #69322.
39     * RegularExpressions::ProhibitUnusedCaptures now skips the first
40       block of an 'if' or 'elsif' if the regular expression is bound to
41       its operand with the '!~' operator. RT #69867.
42     * RegularExpressions::ProhibitUnusedCaptures now looks into lists
43       and blocks in the replacement portion of the regular expression if
44       /e is asserted. RT #72086.
45     * RegularExpressions::RequireDotMatchAnything,
46       RegularExpressions::RequireExtendedFormatting and
47       RegularExpressions::RequireLineBoundaryMatching now honor defaults
48       set with 'use re "/modifiers"'. RT #72151.
49     * Subroutines::ProhibitManyArgs now recognizes '+' as a prototype
50       character.
51     * Variables::ProhibitPunctuationVars now recognizes bracketed
52       variables embedded in interpolated strings (e.g. "${$}"). For the
53       purpose of the 'allow' configuration, these are considered
54       equivalent to the unbracketed form. RT #72910.
55     Other Changes:
56     * Corrected POD in Perl::Critic::PPI::Utils. RT #68898.
57     * Perl::Critic::Violation source() method now returns the line
58       containing the violation (not the first line) when the statement
59       containing the violation spans multiple lines.
60
61 [1.116] Released on 2011-05-15
62
63     Policy Changes:
64     * BuiltInFunctions::ProhibitLvalueSubstr does not report violations
65       if the document contains an explicit 'use n.nnn;' where the
66       version is before 5.005.  RT #59112
67     * Documentation::RequirePodSections no longer blows up on code
68       having POD but no =head1. This problem was introduced with RT
69       #59268. RT #67231
70     * RegularExpressions::ProhibitUnusedCapture should more reliably
71       find things like s/(a)/${1}2/.  RT #67273.
72     * ValuesAndExpressions::ProhibitMagicNumbers and
73       Module::RequireVersionVar now treat versions passed as the second
74       argument of a 'package' statement the same as versions declared as
75       'our $VERSION ...'.  RT #67159
76     * Variables::RequireLexicalLoopIterators does not report violations
77       if the document contains an explicit 'use n.nnn;' where the
78       version is before 5.004.  RT #67760
79
80 [1.115] Released on 2011-03-31
81
82     Minor bits:
83     * Fatal error in RegularExpressions::ProhibitUnusedCapture here
84       document check.  RT #67116.
85     * Internal POD error in Documentation::RequirePodLinksIncludeText.  Patch
86       by Salvatore Bonaccorso.  RT #67012
87
88 [1.114] Released on 2011-03-26
89
90     Policy Changes:
91     * Documentation::RequirePodLinksIncludeText now handles nested POD
92       formatting. RT #65569
93     * Clarified relation of severity numbers to names in Perl::Critic
94       POD. RT #66017
95     * Removed caveats from Variables::RequireLocalizedPunctuationVars,
96       no longer necessary with PPI 1.208. RT #65514
97     * Have InputOutput::RequireBriefOpen attempt to expand scope as
98       necessary to deal with the case where the open() and the
99       corresponding close() are not in the same scope. RT #64437
100     * RegularExpressions::ProhibitUnusedCapture now looks inside
101       double-quotish things. RT #38942.
102     * RegularExpressions::ProhibitUnusedCapture now takes logical
103       alternation into account, so that (e.g.)
104           if ( /(a)/ || /(b)/ ) {
105               say $1;
106           }
107       is not a violation. RT #38942.
108     * ValuesAndExpressions::ProhibitCommaSeparatedStatements now
109       recognizes 'return { foo => 1, bar => 2 }' as containing a hash
110       constructor, not a block. This was fixed by PPI 1.215. RT #61301.
111     * ValuesAndExpressions::ProhibitCommaSeparatedStatements now
112       recognizes 'bless { foo => 1, bar => 2 }' as containing a hash
113       constructor, not a block. This was fixed by PPI 1.215. RT #64132.
114
115 [1.113] Released on 2011-02-14
116
117     New Policies:
118     * InputOutput::RequireEncodingWithUTF8Layer recommends
119       ':encoding(utf8)' over ':utf8' in open() and binmode(). It is severity 5
120       because of the bad things that can happen if invalid UTF8 gets loose in
121       your code.
122     * Modules::ProhibitConditionalUseStatements prohibits
123       'use module' inside a conditional, since the statement is executed
124       unconditionally at compile time.  Thanks to Peter Guzis for submitting
125       the policy and tests in RT #59065.
126
127     Policy Changes:
128     * CodeLayout::RequireConsistentNewlines produces multiple undefined
129       value errors when a violation is found. RT #65663
130     * ControlStructures::ProhibitMutatingListFunctions allows s///r,
131       which was introduced in 5.13.2.
132     * ControlStructures::ProhibitPostfixControls now looks for "when".  It is
133       treated in the same way as "if".
134     * Documentation::RequirePodSections now honors '## no critic'
135       annotation anywhere before the '__END__', '__DATA__', or first
136       '=head1', whichever comes first.  The line number of the offending
137       '=head1 NAME' was added to the violation description.  RT #59268.
138     * RegularExpressions::ProhibitUnusedCapture now takes account of the
139       use of $- and $+ (and their English equivalents under 'use
140       English') provided the subscripts are literal integers.
141     * RegularExpressions::ProhibitUnusedCapture now takes account of the
142       use of capture variables in the replacement portion of
143       s/.../.../e.
144     * Subroutines::ProhibitUnusedPrivateSubroutines now looks inside
145       regular expressions.
146     * ValuesAndExpressions::ProhibitMagicNumbers now supports Const::Fast.
147     * ValuesAndExpressions::ProhibitMagicNumbers now has a
148       constant_creator_subroutines parameter to allow the user to
149       configure the names of subroutines that create constants. RT #62562.
150     * ValuesAndExpressions::ProhibitMismatchedOperators didn't handle file
151       test operators properly.  Patch by H.Merijn Brand.  RT #58751
152     * Variables::ProhibitUnusedVariables now looks inside regular
153       expressions.
154     * ValuesAndExpressions::RequireInterpolationOfMetachars now detects
155       and complains about "\b" and "\l" as documented in perlop, and
156       "\1" through "\7", which are not documented there, but were found
157       in toke.c.
158
159     New Developer Features:
160     * uses_module(), namespaces(), and subdocuments_for_namespace() methods on
161       Perl::Critic::Document.
162     * Perl::Critic::Document->new() now accepts a -filename-override argument
163       for setting the filename when the source code comes from something
164       other than an actual file.
165
166     Other Changes:
167     * Test::Perl::Critic::Policy no longer exports by default.
168     * Build phase now requires Test::Deep.
169     * Added example using Try::Tiny to documentation of
170       ErrorHandling::RequireCheckingReturnValueOfEval. Suggested by Andy
171       Lester on the developers mailing list.
172     * In order to get more consistent behavior across all installations of
173       Perl::Critic, IPC::Open2 (which actually is part of core), PPIx::Regexp,
174       Perl::Tidy, Pod::Spell, and Text::ParseWords are no longer optional
175       prerequisites.
176     * Now depends upon PPIx::Utilities v1.1.0.
177
178     Bug Fixes:
179     * Build.PL/Makefile.PL didn't specify a minimum version of version.pm, but
180       TestingAndDebugging::RequireUseStrict did.  RT #58952
181     * Perl::Critic::Annotation needs to look inside the __END__ statement to
182       find the true end of the document, otherwise POD policies may give false
183       positives.  RT #59176
184     * BuiltinFunctions::ProhibitStringyEval no longer dies on eval
185       "#...".  RT #60179
186     * RegularExpressions::ProhibitUnusedCapture now takes account of the
187       %LAST_PAREN_MATCH as well as %+ if English has been loaded.  RT #60002
188     * Subroutines::ProhibitManyArgs now interprets prototype groups (e.g.
189       \[$@%]) as representing a single argument.
190     * Require Exporter version 5.63 (versus version 0) to get sane handling of
191       export tags.  RT# 61071
192     * Prevent Subroutines::ProhibitUnusedPrivateSubroutines from failing
193       on &_subroutine().  RT #61311
194     * Subroutines::ProhibitAmpersandSigils now allows references of the
195       form \( &sub1, &sub2 ).  RT #49609
196
197 [1.112_002] Released on 2011-02-09
198 [1.112_001] Released on 2010-12-14
199
200     Changes summarized into 1.113 above.  For exact details, see Changes on
201     BackPAN.
202
203 [1.111] Released on 2010-12-14
204
205     Bug Fixes:
206     * TestingAndDebugging::ProhibitNoStrict and ProhibitNoWarnings no longer
207       rely on the behavior of all() when the list is empty due to change in
208       List::MoreUtils 0.28.  RT #63816
209
210 [1.110_001] Released on 2010-11-30
211
212     Changes summarized into 1.113 above.  For exact details, see Changes on
213     BackPAN.  (Yes, all of this stuff was not in 1.111.)
214
215 [1.109] Released on 2010-08-29
216
217     Bug Fixes:
218     * ValuesAndExpressions::RequireInterpolationOfMetachars fix due to changes
219       in Email::Address 1.890.  Note that this may find problems in code that
220       it didn't before, e.g. q<'@foo'>.
221
222 [1.108] Released on 2010-06-22
223
224     This is the "Give Shawn Moore what we promised him a year ago and hurry up
225     and get this out before Brad Oaks gives his YAPC::NA talk" release.
226
227     New Policies:
228     * Documentation::RequirePodLinksIncludeText
229     * Subroutines::ProhibitUnusedPrivateSubroutines
230
231     New Features:
232     * There is a new global configuration item, 'program-extensions', which
233       configures Perl::Critic's idea of which file name extensions represent
234       programs.  The desired extensions are specified as a space-separated list,
235       with leading '.' on each if that is desired.  Files whose names end in
236       '.PL' will always be considered programs.  This can be overridden by
237       command option --programs-extensions, which can be specified multiple
238       times.
239     * There is now a perlcritic --allow-unsafe switch.  Without this switch,
240       Perl::Critic will silently refuse to load any Policy that is marked
241       unsafe.  Unsafe Policies are usually ones that may compile or execute
242       untrusted code (see Perl::Critic::DynamicPolicy for an example); Policy
243       authors can mark their policies as unsafe by overriding the is_safe()
244       method.
245     * The framework that we use to test Perl::Critic Policies has been
246       packaged into a convenient module that you can use to test your own
247       Policies.  See Test::Perl::Critic::Policy and Perl::Critic::TestUtils
248       for details.
249
250     Policy Changes
251     * BuiltInFunctions::ProhibitLvalueSubstr no longer complains when there
252       is a low-precedence operator between the substr() and the assignment
253       operator.
254     * CodeLayout::ProhibitParensWithBuiltins now allows 'state ($foo)'.  RT
255       #52029
256     * ErrorHandling::RequireCarping now has an
257       allow_in_main_if_not_in_subroutine option to allow "die" directly in
258       the default namespace.
259     * InputOutput::RequireBriefOpen now recognizes CORE::open(),
260       CORE::close(), CORE::GLOBAL::open(), and CORE::GLOBAL::close().  RT
261       #52391
262     * Modules::ProhibitEvilModules now complains by default about the modules
263       deprecated by the Perl 5 Porters in 5.12.
264     * Modules::RequireVersionVar documentation updated to make clear that "my
265       $VERSION" does not work as a module version declaration.  RT #56667
266     * The RegularExpressions::* policies have been converted from using
267       Regexp::Parser to using PPIx::Regexp for their heavy lifting.
268     * RegularExpressions::ProhibitCaptureWithoutTest now allows capture
269       variables inside when() {}.  RT #36081.
270     * RegularExpressions::ProhibitUnusedCapture now checks for unused named
271       captures.
272     * Subroutines::ProhibitManyArgs revised to count only characters in the
273       prototype that represent arguments.  RT #56627
274     * Subroutines::ProhibitNestedSubs no longer complains about scheduled
275       blocks (BEGIN, etc.) inside subroutines and vice versa.
276     * Subroutines::RequireFinalReturn should now understand a final given/when
277       statement, and declare an error if there is no 'default' block or if any
278       branch does not return.
279     * TestingAndDebugging::RequireUseStrict now accepts 'use 5.011' or greater
280       as equivalent to 'use strict'.
281     * ValuesAndExpressions::ProhibitMismatchedOperators false positive with
282       "'foo' x 15 . 'bar'".  RT #54524
283     * Variables::ProhibitPunctuationVars gave false positives on qr// regexp's
284       ending in '$'.  RT #55604
285
286     Bug Fixes:
287     * The "## no critic" annotations now respect #line directives.
288     * Annotations on statements spanning more than one line (e.g.
289             my $foo =
290                 '$bar'; ## no critic (RequireInterpolationOfMetachars)
291       ) are now handled as single-line annotations, not block annotations.
292     * All instances of L<Foo> in the POD have been changed to L<Foo|Foo>.
293       L</bar> and L<Foo/bar> were allowed to stand.  RT #37485
294     * Spaces are now allowed immediately inside the enclosing parentheses in
295       "## no critic ( Foo )".  RT #52038
296     * With the introduction of PPIx::Regexp, Perl::Critic no longer dies
297       when it encounters a Perl 5.010 regexp.  RT #49442.
298     * DEVELOPER.pod typo in link to
299       ValuesAndExpressions::ProhibitConstantPragma policy. RT #57818
300     * Spelling errors in documentation.  RT #57375
301     * "die" used instead of "croak".  RT #56619
302     * Fixed regex test that caused test failures on every Perl 5.11
303       (credit Tom Wyant).
304     * t/20_policy_pod_spelling.t now works (or at least no longer fails)
305       in non-English locales (again).  RT #43291 and RT #48986.
306     * Perldoc hae broken link for McCabe score definition.  RT #53219
307     * RT #33935 and #49679 were fixed by upgrading to PPI 1.208
308
309     Other Changes:
310     * Perl::Critic::Utils::is_unchecked_call() updated to include chmod in the
311       set of things covered by autodie (this happened in autodie v2.08).  The
312       primary effect of this is on InputOutput::RequireCheckedSyscalls.
313     * Now depends upon Task::Weaken to ensure that we only install with perls
314       where Scalar::Util::weaken() works.
315     * Email::Address was optional, but is now required.  So everyone
316       gets the optimal behavior from RequireInterpolationOfMetachars.
317     * Some infrastructure has been extracted to the new PPIx-Utilities
318       distro.  It is also a required dependency here.  Over time a good
319       portion of Perl::Critic::Utils* will be migrated to this distribution.
320     * Perl::Critic::Utils::PPI::get_constant_name_element_from_declaring_statement()
321       is deprecated because it doesn't handle multiple constants being
322       declared within a single "use constant" statement.  Use
323       PPIx::Utilities::Statement::get_constant_name_elements_from_declaring_statement()
324       instead.
325     * Removed all uses of Perl::Critic::Utils::PPIRegep.  Since the
326       PPIx::Regexp update, Perl::Critic only used get_match_string() and
327       friends, which were superseded by the corresponding PPI methods.
328       Perl::Critic now depends on PPI-1.208 or newer.
329     * Moved Perl::Critic::Utils::PPIRegexp to the Perl-Critic-Deprecated.
330     * The PolicySummary.pod file is now generated when the distribution
331       is created, rather than when you install it.  This ensures the file
332       will be available on http://search.cpan.org.  Thanks to Bear Longyear
333       for bringing this to our attention.
334
335 [1.107_001] Released on 2010-06-20
336
337     Changes summarized into 1.108 above.  For exact details, see Changes on
338     BackPAN.
339
340 [1.106] Released on 2010-05-10
341
342     Bug Fixes:
343     * NamingConventions::Capitalization fix for PPI 1.212.  RT #57348
344
345 [1.105_03] Released on 2010-03-21
346 [1.105_02] Released on 2010-01-23
347 [1.105_01] Released on 2010-01-16
348
349     Changes summarized into 1.108 above.  For exact details, see Changes on
350     BackPAN.
351
352 [1.105] Released on 2009-09-07
353
354     Bug Fixes:
355     * Variables::ProhibitPunctuationVars would complain about "%-" appearing
356       anywhere in a string.  RT #49016
357
358     Policy Changes:
359     * InputOutput::RequireCheckedSyscalls now complains about unchecked "say"
360       by default.  RT #37487
361
362 [1.104] Released on 2009-08-23
363
364     This release is dedicated to Tom Wyant in appreciation of the amount of
365     effort he put into the enhancements and bug fixes in this release, for
366     having the patience to wait for the amount of time that it took to get
367     them out, and for overall awesomeness.  Thank you, Tom.
368
369     New Policies:
370       Objects::ProhibitIndirectSyntax
371       ValuesAndExpressions::ProhibitComplexVersion
372       ValuesAndExpressions::RequireConstantVersion
373
374     New Optional Requirement:
375     * Email::Address, if you want
376       ValuesAndExpressions::ProhibitInterpolationOfLiterals to properly ignore
377       email addresses.
378
379     New Features:
380     * Perlcritic will list the names of files with violations if given the
381       --files-with-violations option, or the names of files without
382       violations if given the --files-without-violations options. These
383       have synonyms -l and -L respectively.
384     * Perlcritic has a new --list-enabled option, which lists the Policies
385       that will be enforced, given the current configuration.  This is
386       useful if you've written a complex command-line or modified your
387       .perlcriticrc file and you want to see which Policies *would*
388       be used with the current configuration, if you were actually going
389       to critque a file with it.
390     * Perl::Critic::Violation now takes #line directives into account in the
391       %F, %f, and %l formats.  You can get the old values via the new %G, %g,
392       and %L formats.
393
394     Policy Changes:
395     * CodeLayout::ProhibitParensWithBuiltins was complaining in certain cases
396       where parentheses are required due to operator precedence.  RT #46862.
397     * ControlStructures::ProhibitMutatingListFunctions no longer complains
398       about uses of tr/// that don't modify the operand.  Reported by EDAVIS,
399       RT #44515.
400     * Miscellanea::RequireRcsKeywords now accepts "qw$Keyword: ...$".  RT
401       #45196.
402     * Modules::RequireFilenameMatchesPackage now respects logical filenames
403       defined by the "#line" directives.  This allows the Policy to work
404       properly with IDEs and code generators.
405     * NamingConventions::Capitalization now allows fully qualified subroutine
406       declarations ( e.g. "sub Foo::Bar::baz {...}" ).  However, the
407       non-package part of the subroutine name must still conform to whatever
408       capitalization rule you have chosen.
409     * RegularExpressions::ProhibitCaptureWithoutTest no longer complains if
410       the regex is followed by an "or die" or similar.  Reported by EDAVIS,
411       RT #36081.
412     * RegularExpressions::ProhibitComplexRegexes no longer counts variable
413       substitutions in the length.   Reported by EDAVIS, RT #36098.
414     * RegularExpressions::ProhibitUnusedCapture now considers the body of
415       while loops and not just their condition.  Reported by EDAVIS, RT
416       #38942.
417     * ValuesAndExpressions::ProhibitVersionStrings was getting confused by
418       comments.  Reported by Kevin Ryde,  RT #44986.
419     * ValuesAndExpressions::RequireInterpolationOfMetachars now allows sigils
420       in the arguments to "use vars".  Contributed by Kevin Ryde, RT #47318.
421     * ValuesAndExpressions::RequireInterpolationOfMetachars now properly
422       ignores email addesses, if you have Email::Address installed.  Inspired
423       by the Kevin Ryde contribution in RT #47318.
424     * Variables::ProhibitPunctuationVars gained the ability to look inside
425       interpolated strings.  Doing this correctly is challenging and things
426       may not work out right; how the policy does this can be controlled via
427       the new "string_mode" option.  Contributed by Edgar Whipple
428       <perlmonk at misterwhipple dot com>.
429     * Variables::ProhibitPunctuationVars now ignores $] by default since there
430       is no English.pm equivalent.
431
432     Other Bug Fixes:
433     * Perl::Critic::Utils::parse_arg_list() was slurping up the "or die ..."
434       portion of "open my $foo, 'somefile' or die ...", causing
435       InputOutput::ProhibitTwoArgOpen to not complain about this example.
436       Reported by Alexandr Ciornii,  RT #44554.
437
438     Minor Changes
439     * The line count emitted by the --statistics option is further broken down
440       by line content.
441
442     Minor Documentation Fixes:
443     * ValuesAndExpressions::ProhibitInterpolationOfLiterals.  Reported by
444       Debian in http://bugs.debian.org/542814,  RT #48936
445
446     Build Fixes:
447     * There wasn't a specific version given for the List::MoreUtils dependency
448       and we're using features that weren't avialable until 0.19.  So, we now
449       require version 0.19.  Noticed by John J. Trammell,  RT #48917.
450     * Some tests were tied to the specific "true" and "false" values that some
451       functions were returning.  Reported by Michael Schwern,  RT #43910.
452
453     Other News:
454     * Komodo version 5.1.1 now has built-in support for Perl-Critic,
455       if you have the Perl::Critic and criticism modules installed.
456       Both should be available through the ActiveState Perl Package
457       Manager ppm(1).
458
459 [1.103] Released on 2009-08-03
460
461     Fix configure_requires prerequisite on Module::Build 0.34_02.
462
463 [1.102] Released on 2009-08-03
464
465     Bug fixes:
466     * Works with PPI 1.205.  Yay for 5.10 support!
467     * Variables::RequireLexicalLoopIterators didn't work correctly on foreach
468       loops with labels.
469
470 [1.101_003] Released on 2009-07-22
471 [1.101_002] Released on 2009-07-21
472 [1.101_001] Released on 2009-07-21
473
474     Changes summarized into 1.102 above.  For exact details, see Changes on
475     BackPAN.
476
477 [1.100] Released on 2009-07-17
478
479     This is a POD fix release to deal with issues identified by Test::POD
480     1.40.  There is no functional difference between this release and 1.098.
481     This is the last release of Perl::Critic that will be compatible with PPI
482     1.203.  PPI's parsing of for(each)? loops is changing in its next release
483     in an incompatible manner and there will be a release in the near future
484     to make Perl::Critic compatible with that change.
485
486 [1.099_002] Released on 2009-06-27
487 [1.099_001] Released on 2009-06-25
488
489     Experimental releases.  For exact details, see Changes on BackPAN.
490
491 [1.098] Released on 2009-03-07
492
493     Some Exciting News:
494     The Perl Development Kit (PDK 8.0) from ActiveState now includes a
495     very slick graphical interface to Perl-Critic.  I highly recommend
496     that you check it out.  Here's a link to screenshots and docs:
497
498     http://docs.activestate.com/pdk/8.0/PerlCritic_gui.html
499
500     New Features:
501     * Violation coloring is now configurable via command line or profile. The
502       profile entries are color-severity-highest, -high, -medium, -low, or
503       -lowest. Numbers are accepted in lieu of named severities (e.g.
504       'color-severity-5' for 'color-severity-highest'), and 'colour' is
505       accepted in lieu of 'color'.
506     * Handling of unrecognized policy configuration items is now controlled by
507       the profile_strictness. The default is to warn about them. The previous
508       default was that they were fatal.
509     * -p is now a synonym for --profile.
510     * The --verbose option for perlcritic now supports a %C format that will
511       displays the class of PPI::Element that caused the violation.
512
513     Policy Changes:
514     * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
515       didn't include "pbp" in its default themes even though it is derived
516       from the book.  Now it does.  :]
517     * ErrorHandling::RequireCarping now allows a here document as the last
518       element if the "allow_messages_ending_with_newlines" option is true.
519     * Fix Subroutines::ProhibitAmpersandSigils so it allows "defined(&x)" as
520       well as "defined &x".  Patch from Kevin Ryde, RT #38855.
521     * Subroutines::ProtectPrivateSubs now has an "allow" option to specify
522       subroutines which are exempt from this policy.  RT #38678.
523       Additionally, a "private_name_regex" option has been added that allows
524       you to specify what a private subrouting name looks like.
525     * Subroutines::RequireArgUnpacking now has an "allow_subscripts" option
526       to allow array slices and elements.  RT #34009.
527     * Subroutines::RequireArgUnpacking now has an "allow_delegation_to" option
528       to allow the usual delegation idiom. Delegation to 'SUPER::' and
529       'NEXT::' are allowed by default.  RT #33839.
530     * Subroutines::RequireArgUnpacking no longer generates a false positive
531       for '$$_[]', which is an obfuscated way of saying '$_->[]'.  RT #37713.
532     * ValuesAndExpressions::ProhibitMagicNumbers now has an
533       allow_to_the_right_of_a_fat_comma option, which defaults to true.  Note
534       that it currently only works /directly/ to the right of a fat comma.
535     * Variables::ProhibitMatchVars had its default themes changed to "core
536       performance pbp", instead of "core bugs pbp" because, while the match
537       variables make regular expressions slow, it doesn't cause them to not
538       work correctly.
539     * Variables::ProhibitPackageVars has had FindBin and Log::Log4perl added
540       to the default exemptions.
541     * Variables::ProhibitReusedNames now has an "allow" option to specify
542       names that can be reused.  It defaults to enabling $self and $class.  RT
543       #42767.
544     * Variables::RequireLocalizedPunctuationVars has a customizable set of
545       exemptions via the "allow" option.
546
547     New Developer Features:
548     * The guts of perlcritic have been moved to Perl::Critic::Command.  You
549       can invoke Perl::Critic::Command::run() to get the equivalent of running
550       the command.  (Note, however, this interface WILL change, so don't count
551       on the current one.)
552     * Modules have had a "INTERFACE SUPPORT" section added which states
553       whether the Perl::Critic developers consider the particular module is
554       public or not.  Any removal of functionality from a public module will
555       go through a deprecation cycle.  Non-public modules may have their
556       interfaces changed without notice.
557     * P::C::Policy now has an is_enabled() method.
558     * P::C::Violation now has an element_class() method.
559
560     Bug Fixes:
561     * CodeLayout::ProhibitTrailingWhitespace didn't notice cases where PPI
562       would produce instances of PPI::Token::Whitespace that contained
563       multiple lines.
564     * Subroutines::ProtectPrivateSubs no longer regards the exportable POSIX
565       subroutines whose names begin with underscore as private.  RT #38678.
566     * Subroutines::RequireArgUnpacking mishandled a complicated sitation with
567       $_ being an array reference.  RT #39601.
568     * Variables::RequireLocalizedPunctuationVars now applies to subscripted
569       names.  RT #29384.
570
571     Internals:
572     * The guts of Build.PL and Makefile.PL have been rearranged.
573
574 [1.097_002] Released on 2009-03-01
575 [1.097_001] Released on 2009-03-01
576
577     Changes summarized into 1.098 above.  For exact details, see Changes on
578     BackPAN.
579
580 [1.096] Released on 2009-02-01
581
582     New Policies:
583     * ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
584
585     Policy Changes:
586     * Documentation::PodSpelling now has a stop_words_file option.
587     * Modules::ProhibitEvilModules now has a modules_file option.
588
589     Bug Fixes:
590     * ErrorHandling::RequireCarping will now allow a literal newline
591       as well as "\n".  Fixed by Kyle Hasselbacher, RT #25046
592     * Fix InputOutput::ProhibitTwoArgOpen so it allows '-|' or '|-' as the
593       second of two arguments.  Patches from Kyle Hasselbacher and Leland
594       Johnson, RT #42384.
595     * InputOutput::RequireBracedFileHandleWithPrint applies to printf as well
596       as print.  Fixed by Kyle Hasselbacher, RT #42537.
597     * TestingAndDebugging::RequireUseStrict and
598       TestingAndDebugging::RequireUseWarnings are no longer fooled by a
599       block-scoped pragma.  RT #42310.
600     * ValuesAndExpressions::RequireInterpolationOfMetachars allows for escaped
601       backslashes.  Fixed by Tom Wyant, RT #38530.
602     * Fix for problem in P::C::Document in dealing with underscores in
603       expressions like "use 5.009_001".  Patch by Kevin Ryde, RT #36570 and
604       #42089.
605     * Fix in extras/perlcritic.el for a radio button.  Patch by Kevin Ryde, RT
606       #42190.
607     * Fix distclean target in Makefile.PL.  Patch by Richard Soderberg,
608       RT #42088.
609     * Fix temporary files not being cleaned up after tests.  Patch by Kyle
610       Hasselbacher, RT #41443.
611     * Deal with changes in Pod::Parser v1.36 in test in t/05_utils_pod.t.
612
613     Documentation improvements contributed by Mark Grimes in response to RT
614     #41942.
615
616 [1.095_001] Released on 2009-01-18
617
618     Changes summarized into 1.096 above.  For exact details, see Changes on
619     BackPAN.
620
621 [1.094001] Released on 2009-01-01
622
623     Bug Fixes:
624     * Tests would fail on systems without Regexp::Parser installed.
625
626 [1.094] Released on 2009-01-01
627
628     Incompatible Changes:
629     * The way that "## no critic" markers was refactored.  As
630       a result, we discovered that the syntax for the markers was pretty
631       vague.  If you didn't do it just right, it would disable all policies,
632       and not just the specific ones that you wanted.  So we've tightened this
633       up a bit.  If you followed the examples that have been in the docs for
634       the last couple years, then you should be fine.  But if you've been
635       using certain other variations in your "## no critic" markers, then you
636       might suddenly find yourself violating the new
637       ProhibtUnrestrictedNoCritic policy.  To fix this, just make sure your
638       Policy names appear in parentheses:
639
640         ## no critic Foo, Bar, Baz     # wrong!
641         ## no critic Foo Bar Baz       # wrong!
642
643
644         ## no critic (Foo, Bar, Baz)   # ok!
645         ## no critic qw(Foo Bar Baz)   # also ok!
646
647     * The deprecated $FORMAT variables for Perl::Critic::Policy and
648       Perl::Critic::Violation no longer exist.  Use the corresponding
649       get_format() and set_format() functions instead.
650
651     New Policies:
652     * Miscellanea::ProhibitUnrestrictedNoCritic
653     * Miscellanea::ProhibitUselessNoCritic
654     * NamingConventions::Capitalization
655     * Subroutines::ProhibitReturnSort
656     * Variables::ProhibitReusedNames
657
658     Removed Policies:
659     * NamingConventions::ProhibitMixedCaseSubs and
660       NamingConventions::ProhibitMixedCaseVars have been moved to a separate
661       Perl-Critic-Deprecated distribution.  The
662       NamingConventions::Capitalization policy does everything they do, plus
663       more.
664
665     Policy Changes:
666     * BuiltinFunctions::ProhibitStringyEval now has an allow_includes option
667       that makes it behave (mostly) like Ricardo SIGNES'
668       Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire.
669     * InputOutput::RequireCheckedClose, InputOutput::RequireCheckedOpen, and
670       InputOutput::RequireCheckedSyscalls now all support autodie.
671       Unfortunately, autodie is currently treated like a module and not a
672       pragma, which means that the lexical scoping is not taken into account.
673     * InputOutput::RequireCheckedSyscalls now has an exclude_functions
674       parameter.
675     * Modules::ProhibitEvilModules now allows you to specify what the
676       description of a use of a bad module should be, to, say, suggest that
677       people use autodie instead of Fatal.
678     * Subroutine::ProhibitExcessComplexity violation descriptions now include
679       the name of the subroutine, thanks to Andreas Koenig, RT #40070.
680     * TestingAndDebugging::RequireUseStrict and
681       TestingAndDebugging::RequireUseWarnings now have equivalent_modules
682       parameters that allow you to designate other modules as being equivalent
683       to the strict and warnings pragmata.  This one is for all you Moose fans
684       out there.  :]
685
686     Bug Fixes:
687     * ControlStructures::ProhibitUnreachableCode would treat package
688       statements as unreachable.  Fixed by Kevin Ryde.  RT #41734
689     * Fix warning from InputOutput::ProhibitOneArgSelect when select was
690       called with no arguments.  RT #41926
691     * Miscellanea::RequireRcsKeywords couldn't find keywords after __END__
692       that didn't look like part of POD.
693     * Modules::RequireFilenameMatchesPackage would incorrectly complain about
694       programs.  Yet more greatness contributed by Schwern.  RT #39024.
695     * If a perlcriticrc file referred to a policy that wasn't installed and
696       the profile-strictness option was set to "fatal",
697       Perl::Critic::PolicyFactory fell over instead of reporting the
698       problematic policy name.
699
700     Miscellanea:
701     * Perl::Critic::Violation will automatically strip trailing periods
702       from your Policy description and explanation strings.  This ensures that
703       the punctuation is consistent with the format specified by the user via
704       the -verbose formatting options.
705
706     New Developer Features:
707     * Perl::Critic::Policy::prepare_to_scan_document() is now checked and a
708       Policy can disable itself for just a single document, which can speed
709       things up.
710
711 [1.093_03] Released on 2008-12-11
712 [1.093_02] Released on 2008-10-30
713 [1.093_01] Released on 2008-09-07
714
715     Changes summarized into 1.094 above.  For exact details, see Changes in
716     1.093_003 on BackPAN.
717
718 [1.092] Released on 2008-09-02
719
720     Bug Fixes:
721     * Fixed POD errors that were causing build failures.  Sorry
722       about that.
723
724 [1.091] Released on 2008-09-01
725
726     New Policies:
727     * RegularExpressions::RequireDotMatchAnything
728
729     New Features:
730     * perlcritic now supports a -pager option, so you can more easily
731       send the output to your favorite pager.  You can set this option
732       on the command-line or in your .perlcriticrc file.  See the
733       perlcritic perldoc for more details.  Credit to Michael Schwern.
734     * The output from "perlcritic -doc PATTERN" will be automatically
735       sent to your pager if you have set the -pager option.
736
737     Policy Changes:
738     * CodeLayout::ProhibitQuotedWordLists no longer applies if the list
739       contains any non-words, by default.  A non-word is anything that does
740       not match /[\w-]+/.  You can restore the former behavior by setting the
741       "strict" option.  RT #37886.
742     * CodeLayout::ProhibitQuotedWordLists also now applies to the import
743       arguments of a C<use> statement.  RT #24467.
744     * ErrorHandling::RequireCheckingReturnValueOfEval now recognizes ternary
745       left-sides as valid checks.
746     * RegularExpressions::RequireExtendedFormatting gains a
747       minimum_regex_length_to_complain_about option.  Also, regexes that
748       contain only word and whitespace characters are now exempt from this
749       policy, by default; you can make it complain about them by turning on
750       the new strict option.  Contributed by Michael Schwern.  RT #38531.
751     * TestingAndDebugging::ProhibitNoWarnings now supports a
752       allow_with_category_restriction option, thanks to Michael Schwern.
753       RT #38514.
754     * CodeLayout::ProhibitHardTabs now allows leading tabs in qw() word lists
755       and regexes with the /x modifier.  You can still configure this
756       policy to forbid all hard tabs, if you like.  RT #32440
757
758     Bug Fixes:
759     * perlcritic should now work under PAR.  RT #38380.
760     * URL for our repository in META.yml now works for anonymous
761       checkout.  The password is "" (empty).  RT #38628.
762     * color for high-severity violations is now magenta because
763       it is more redable than yellow on white backgrounds.  RT #38511.
764
765 [1.090] Released on 2008-07-22
766
767     Bug Fixes:
768     * Test was incorrectly failing when Regexp::Parser wasn't installed.
769
770 [1.089] Released on 2008-07-21
771
772     Minor Enhancements:
773     * -s is now a synonym for --single-policy.
774
775     Policy Changes:
776     * Subroutines::ProhibitBuiltinHomonyms now also prohibits subroutines
777       with the same name as a Perl keyword (e.g. if, foreach, while).
778       Inspired by RT #37632.
779     * Subroutines::ProtectPrivateSubs now allows expressions like
780       "shift->_some_private_method();".  Note that this *only* applies
781       to the "shift" function -- a private method call on the right of any
782       other bareword still causes a violation.  RT #34713.
783     * Subroutines::RequireFinalReturn now includes exec in the set of things
784       that mark a successful return.  RT #37672
785     * ValuesAndExpressions::ProhibitInterpolationOfLiterals now takes a
786       allow_if_string_contains_single_quote option.  Contributed by Ed
787       Avis <ed@membled.com>.  RT #36125.
788     * ValuesAndExpressions::RequireInterpolationOfMetachars now supports a
789       rcs_keywords option to allow for the common case where those require
790       dollar signs.
791
792     Bug Fixes:
793     * BuiltinFunctions::ProhibitSleepViaSelect would complain if there were
794       three undefs as arguments to select(), but one of them was the timeout.
795       RT #37416.
796     * Reduced false positives in
797       RegularExpressions::ProhibitSingleCharAlternation.  Thanks to
798       Andy Lester and Elliot Shank test cases.
799     * RegularExpressions::ProhibitUnusedCapture would complain if there were
800       multiple captures used in a substitution, e.g. s/(.)(.)/$2$1/.
801     * Subroutines::ProhibitAmpersandSigils no longer complains about
802       "sort &foo(...)".
803     * Makefile.PL, Build.PL and other ".PL" scripts which typically do not
804       have a shebang are no longer mistaken as modules.  This prevents
805       spurious warnings from Modules::RequireEndWithOne.  RT #20481.
806
807     Internals:
808     * Tests are now self compliant.
809
810 [1.088] Released on 2008-07-04
811
812     New Policies
813     * ErrorHandling::RequireCheckingReturnValueOfEval
814
815     Policy Changes:
816     * ValuesAndExpressions::ProhibitLeadingZeros now accepts octal numbers
817       for the Unix permissions argument to chmod, dbmopen, mkdir, sysopen, or
818       umask, by default.  Use the "strict" option to get the old behavior.
819       RT #31977.
820     * Due to the consensus at YAPC::NA 2008,
821       Variables::ProhibitUnusedVariables default severity has been raised to
822       medium/3.
823
824     Minor Changes:
825     * The perlcritic "--Version" option is now "--version" in order to act
826       like the rest of the world.
827
828 [1.087] Released on 2008-06-21
829
830     Policy Changes:
831     * CodeLayout::ProhibitParensWithBuiltins no longer complains about
832       sort(foo(@x)).
833     * TestingAndDebugging::RequireUseWarnings will not complain about files
834       that contain a "use 5.005" statement or similar for perls prior to 5.6.
835       Lesson of the day: computer conferences where you can meet in the real
836       world can clarify conversations greatly.  Good to finally meet you Adam.
837     * InputOutput::ProhibitTwoArgOpen similarly will not complain if there's
838       a "use/require 5.005" statement in the file.  RT #34385.
839
840     Bug fixes:
841     * Perl::Critic can now critique a file named "0".  However, PPI will give
842       a parse error until the next version comes out.  Fixes RT #36127.
843     * Moved detection of the lack of any enabled Policies from P::C::Config
844       to Perl::Critic.  This was causing the perlcritic.t in Parrot to fail.
845       Note, however, there are plans afoot to change how Perl::Critic is
846       configured and things that depend upon that may break.  Please contact
847       users@perlcritic.tigris.org and tell us how you're using P::C::Config
848       directly so that we can take your needs into account.
849
850 [1.086] Released on 2008-06-12
851
852     Policy Changes:
853     * NamingConventions::ProhibitAmbiguousNames now specifies the name that
854       it had problems with in its violation descriptions.
855
856     Bug fixes:
857     * The color option wasn't being correctly set from a .perlcriticrc.
858       RT #36569.
859
860     Minor changes:
861     * --colour is now a synonym for --color.
862
863 [1.085] Released on 2008-06-07
864
865     New Policies:
866     * Documentation::RequirePackageMatchesPodName
867
868     Policy Changes:
869     * Variables::ProhibitUnusedVariables detects a few more cases.  It's
870       still very limited, though.
871
872     Bug fixes:
873     * ControlStructures::ProhibitUnreachableCode didn't notice "until" was an
874       conditional expression.
875
876     Minor documentation updates.
877
878 [1.084] Released on 2008-05-24
879
880     New Features:
881     * perlcritic now supports a --list-themes option.
882     * You can specify the maximum number of violations you want per Policy
883       per document.  Developers can give a default value for this for a
884       Policy by overriding default_maximum_violations_per_document().
885       See RequireUseStrict and ProhibitMagicNumbers for examples.
886
887     Policy Moved:
888     * The ValuesAndExpressions::ProhibitMagicNumbers policy has been moved
889       from Perl::Critic::More into the primary Perl::Critic distribution.
890
891     New Policies:
892     * Variables::ProhibitUnusedVariables (very dumb, limited initial
893       implementation.)
894     * ControlStructures::ProhibitLabelsWithSpecialBlockNames
895       Contributed by Mike O'Regan.  Kickin' ass, Mike.
896
897     Policy Changes:
898     * ControlStructures::ProhibitUnreachableCode now handles the perl 5.10
899       "//" and "err" operators.  RT #36080
900     * InputOutput::RequireBriefOpen now ignores opens of STDIN, STDOUT,
901       and STDERR.  You're generally trying to make long-lasting global
902       effects when manipulating these.  (RT #35774)
903     * RegularExpressions::ProhibitUnusualDelimiters now supports an
904       "allow_all_brackets" option.
905     * RegularExpressions::RequireBracesForMultiline now supports an
906       "allow_all_brackets" option.
907     * TestingAndDebugging::RequireUseStrict now accepts "use Moose::Role"
908       as equivalent to "use strict".  (RT #34838)
909     * TestingAndDebugging::RequireUseWarnings now accepts "use Moose::Role"
910       as equivalent to "use warnings".  (RT #34838)
911     * ValuesAndExpressions::ProhibitMagicNumbers now accepts constant
912       subroutines.
913     * Variables::ProhibitMatchVars no longer detects "use English;".
914       This problem is detected in a more clear way by
915       Modules::RequireNoMatchVarsWithUseEnglish.
916     * Variables::ProhibitPerl4PackageNames no longer complains about
917       $'/$POSTMATCH.  RT #36059
918     * Variables::RequireLocalizedPunctuationVars now allows the use of "my".
919       RT #33937
920
921     Bug Fixes:
922     * No longer falls over if a single file has a parse error.
923
924     New Developer Features:
925     * If a document specifies a minimum perl version, e.g. "use 5.008003",
926       P::C::Document::highest_explicit_perl_version() will tell you what it
927       is.
928     * The parameter to P::C::Policy::initialize_if_enabled is now a
929       P::C::PolicyConfig object instead of a hash reference.
930
931     Minor Changes:
932     * LOTS of documentation updates.
933     * A few more statistics are emitted by perlcritic with the --statistics
934       option.
935     * perlcritic --profile-proto now includes policy abstracts in its
936       output.
937
938     Prerequisites:
939     * Now depends upon PPI 1.203.
940     * New dependency upon version.
941
942 [1.083_006] Released on 2008-05-20
943 [1.083_005] Released on 2008-05-19
944 [1.083_004] Released on 2008-05-18
945 [1.083_003] Released on 2008-05-17
946 [1.083_002] Released on 2008-05-17
947 [1.083_001] Released on 2008-04-13
948
949     Changes summarized into 1.084 above.  For exact details, see Changes in
950     1.083_006 on BackPAN.
951
952 [1.082] Released on 2008-03-08
953
954     New Features:
955     * A new metadata system for defining policy parameters/options has been
956       added.  This makes the life of policy authors easier because
957       configuration validation and parsing can be taken care of
958       automatically, in most cases.  This allows greater integration with
959       IDEs and allows the perlcritic "--profile-proto" option to produce
960       better output.
961
962       Note: This change does NOT REQUIRE ANY CHANGES to policies outside of
963       this distribution; they should continue to work as is.  However, use
964       of this facility can reduce the size of your code and provide the
965       means for tools to discover more about your policy.  If this change
966       does break any of your policies, please let us know.
967
968       To learn how to take advantage of this facility, read
969       Perl::Critic::DEVELOPER and look at the source of any of the
970       configurable policies included in this distribution.
971
972       There is a discussion of the design considerations for this facility in
973       the source repository under doc/PolicyParameter_Notes.pod.
974
975     * Added support for "criticism-fatal" option in your perlcriticrc
976       file.  This will be used by the criticism pragma to cause execution
977       to abort if the file contains any violations.
978
979     New Policy:
980     * Module::RequireNoMatchVarsWithUseEnglish
981
982     Policy Changes:
983     * Added an allow_last_statement_to_be_comma_separated_in_map_and_grep
984       option to ValuesAndExpressions::ProhibitCommaSeparatedStatements.
985       Partial response to http://rt.cpan.org/Public/Bug/Display.html?id=27654.
986     * ControlStructures::ProhibitPostfixControls gains the ability to have
987       the flow control statements allowed to be modified.  This in response
988       to RT #29540.
989     * TestingAndDebugging::RequireUseStrict now accepts "use Moose" as
990       equivalent to "use strict".
991     * TestingAndDebugging::RequireUseWarnings now accepts "use Moose" as
992       equivalent to "use warnings".
993
994     Bug Fixes:
995     * RT #31281 perlcritic doesn't recognize "#!/bin/env perl" shebang
996     * Replace usage of Unicode property escapes with POSIX character classes
997       order to restore 5.6 compatability.
998     * RT #30388 ValuesAndExpressions::ProhibitVersionStrings complained
999       about numbered directories in "use lib".
1000     * Fixed handling of badly behaved spelling programs in PodSpelling.
1001
1002 [1.081_006] Released on 2008-03-02
1003 [1.081_005] Released on 2007-12-29
1004 [1.081_004] Released on 2007-12-20
1005 [1.081_003] Released on 2007-12-16
1006 [1.081_002] Released on 2007-12-16
1007 [1.081_001] Released on 2007-12-15
1008
1009     Changes summarized into 1.082 above.  For exact details, see Changes in
1010     1.081_006 on BackPAN.
1011
1012 [1.080] Released on 2007-11-11
1013
1014     New Features:
1015     * Allow a "## no critic" statement after a shebang on line 1 of a
1016       file.  This allows users to block violations that apply to
1017       whole files and still allow shebangs.
1018
1019     New Policies: (funded by a Perl Foundation grant)
1020     * InputOutput::ProhibitExplicitStdin
1021     * RegularExpressions::ProhibitFixedStringMatches
1022     * RegularExpressions::RequireBracesForMultiline
1023     * RegularExpressions::ProhibitUnusualDelimiters
1024     * RegularExpressions::ProhibitUnusedCapture
1025     * RegularExpressions::ProhibitComplexRegexes
1026     * RegularExpressions::ProhibitSingleCharAlternation
1027     * RegularExpressions::ProhibitEscapedMetacharacters
1028     * RegularExpressions::ProhibitEnumeratedClasses
1029     * InputOutput::RequireBriefOpen
1030     * InputOutput::RequireCheckedSyscalls
1031
1032     Other New Policies
1033     * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
1034
1035     Policy Changes:
1036     * Variables::ProhibitConditionalDeclarations now permits you to local-ize
1037       variables in conditional declarations.  This makes sense, since
1038       C<local> is actually a variable modifier, rather than a declaration.
1039       Thanks to David Golden for reporting this.
1040
1041     New Developer Features:
1042     * Perl::Critic::Utils::PPIRegexp encapsulates interaction with
1043       the PPI Regexp token classes.  Those classes have very sparse
1044       APIs, so this package hides away the ugly fiddling with PPI
1045       internals.
1046     * Added a new optional_modules parameter for the .run syntax.
1047
1048     Bug fixes:
1049     * PPI::Structure::List can now contain multiple children,
1050       so P::C::Utils::parse_arg_list() needs to handle it.
1051
1052       This was done in the process of fixing
1053       http://rt.cpan.org/Ticket/Display.html?id=24924, which was a problem
1054       with TestingAndDebugging::RequireTestLabels.
1055
1056     * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls wasn't resetting
1057       chain length when it ran into the end of a sub-expression.
1058
1059       http://rt.cpan.org/Public/Bug/Display.html?id=30040
1060
1061     * ValuesAndExpressions::ProhibitCommaSeparatedStatements was reporting
1062       false positives when builtins which accept both no and multiple
1063       arguments were involved.
1064
1065       http://rt.cpan.org/Public/Bug/Display.html?id=27654
1066
1067     Internals:
1068     * Removed all use of Carp in favor of exceptions.
1069
1070     Prerequisites:
1071     * Now requires PPI 1.201.  A number of workarounds for PPI bugs have been
1072       removed.
1073     * New dependency upon Exception::Class.
1074
1075     Installation:
1076     * Use Devel::CheckOS to see whether Perl::Critic is being installed on
1077       a Solaris system and warn about tar(1) chopping file names off if it
1078       is.
1079
1080 [1.079_003]  Released on 2007-10-22
1081 [1.079_002]  Released on 2007-10-21
1082 [1.079_001]  Released on 2007-10-09
1083
1084     Changes summarized into 1.080 above.  For exact details, see Changes in
1085     1.079_003 on BackPAN.
1086
1087 [1.078]  Released on 2007-09-19
1088
1089     Restore Perl::Critic::TestUtils::should_skip_author_tests() and
1090     get_author_test_skip_message().  Some Perl::Critic add-on distributions
1091     are using them.
1092
1093 [1.077]  Released on 2007-09-15
1094
1095     Note: if you don't have any problems installing Perl::Critic 1.076, there
1096     is no need to upgrade to this version.  There are no functionality
1097     changes.  This release only contains changes related to installation that
1098     a few people were experiencing.
1099
1100     Minor changes:
1101     * Removed build-time use of Readonly, again, due to problems some people
1102       were having when trying to compile the code by hand, rather than using
1103       CPAN(PLUS)?.
1104     * Don't run author tests if there's a .svn directory present because
1105       users who grabbed the code from the source repository were executing
1106       them and getting failures.
1107     * Don't generate optional, module-hiding test wrappers if author tests
1108       are not enabled.
1109
1110
1111 [1.076]  Released on 2007-09-07
1112
1113     It appears from reports on the 1.075_001 release that the subroutine
1114     sigils were indeed the problem.  Release to the general populace.
1115
1116
1117 [1.075_001]  Released on 2007-09-06
1118
1119     Bug Fixes:
1120     Undo the changes in 1.073 and 1.074.  Instead, stop using the subroutine
1121     sigil in import and export lists.  It is suspected that the problem lies
1122     with Exporter stripping off ampersands.
1123
1124 [1.074]  Released on 2007-09-04
1125
1126     Bug Fixes:
1127     Repeat the Makefile.PL change on
1128     t/generate_without_optional_dependencies_wrappers.PL.
1129     I love CPAN Testers.
1130
1131 [1.073]  Released on 2007-09-04
1132
1133     Bug Fixes:
1134     Work around problems with the combination of Exporter & Readonly in
1135     Makefile.PL on some machines.
1136
1137 [1.072]  Released on 2007-09-03
1138
1139     Bug Fixes:
1140     * The Makefile generated by Makefile.PL was not syntactically correct
1141       according to some versions of Solaris.  Thanks to Diab Jerius
1142       (DJERIUS) for discovery and testing.
1143     * Fixed mis-definition of "quiet" value for the "--profile-strictness"
1144       option.
1145     * Enhanced testing with the absence of optional modules.
1146
1147 [1.071]  Released on 2007-08-24
1148
1149     The "Brown Paper Bag" Release
1150
1151     Bug Fixes:
1152     * Tests would not pass in environments that did not have all optional
1153       dependencies installed.
1154
1155 [1.07]  Released on 2007-08-21
1156
1157     New Policies: (funded by a Perl Foundation grant)
1158     * BuiltinFunctions::ProhibitBooleanGrep
1159     * BuiltinFunctions::ProhibitComplexMappings
1160     * Documentation::PodSpelling
1161     * InputOutput::ProhibitJoinedReadline
1162     * Subroutines::ProhibitManyArgs
1163     * Subroutines::RequireArgUnpacking
1164     * ValuesAndExpressions::ProhibitImplicitNewlines
1165     * Variables::RequireLocalizedPunctuationVars
1166
1167     Other New Policies
1168     * Subroutines::ProhibitNestedSubs
1169
1170     New Features:
1171     * The "perlcritic --profile-proto" output now includes the "add_themes"
1172       parameter for each policy.
1173     * The perlcritic "--strict-profile" option has been replaced with a
1174       "--profile-strictness" option.  This new option takes values of "warn"
1175       (the default), "fatal", and "quiet", which controls what happens with
1176       ignorable problems in a .perlcriticrc file.
1177
1178     New Developer Features:
1179     * Perl::Critic::Policy now has an overridable initialize_if_enabled()
1180       method which allows a Policy to perform expensive initialization after
1181       it has been determined whether the user has it enabled or not.  Also,
1182       this method allows a Policy to say that it should be disabled
1183       regardless of what the user says.
1184
1185       Actually, use of this method is now encouraged over using a
1186       constructor.
1187
1188     Other Stuff:
1189     * Now requires the Readonly module in order to be more self-compliant.
1190
1191 [1.061]  Released on 2007-07-24
1192
1193     Bug Fixes:
1194     * Fix P::C::Theme-- Exporter in Perl 5.6 does not export import(), so you
1195       must subclass it.  *sigh*
1196     * Fix P::C::Config::_validate_and_save_theme()-- eval of an empty string
1197       does not reset $@/$EVAL_ERROR in Perl 5.6.
1198
1199     Big thanks to Anirvan Chatterjee for identifying and helping debug these
1200     issues.
1201
1202 [1.06]  Released on 2007-06-27
1203
1204     New Features:
1205     * perlcritic now emits errors for all the problems it can find for the
1206       global options in the command-line parameters and .perlcriticrc file,
1207       rather than bailing on the first one it encounters.
1208
1209     * perlcritic now has a "--strict-profile" option which will make warnings
1210       about problems in a profile fatal.
1211
1212     * perlcritic now has a "--statistics-only" option which suppresses the
1213       display of individual violations and only shows the additional output
1214       produced by the "--statistics" option.
1215
1216     Feature requests:
1217     * A value for "color" can now be specified in a .perlcriticrc.
1218       http://rt.cpan.org/Ticket/Display.html?id=24877
1219
1220     New Policies:
1221     * ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
1222       As suggested in http://rt.cpan.org/Ticket/Display.html?id=23290.
1223     * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
1224     * Modules::ProhibitExcessMainComplexity
1225       As suggested in http://rt.cpan.org/Ticket/Display.html?id=24699
1226
1227     Minor changes:
1228     * The perlcritic "--profile-proto" option now emits the short names for
1229       policies, rather than the full ones.
1230
1231     * The "-profileproto" and "-singlepolicy" options have been renamed to
1232       "-profile-proto" and "-single-policy" in order to make the growing
1233       number of command-line options comprehensible.  The change of
1234       "singlepolicy" also affects your F<.perlcriticrc> file.
1235
1236 [1.053]  Released on 2007-06-02
1237
1238     *DEVELOPMENT RELEASE*
1239
1240     Bug Fixes:
1241     Fixed bug in 15_statustics.t test script, which caused the build
1242     to fail on machines that don't have Perl::Tidy installed.
1243
1244 [1.052]  Released on 2007-06-01
1245
1246     *DEVELOPMENT RELEASE*
1247
1248     New Features:
1249     * perlcritic now emits a summary about the scanned code when enabled by
1250       the "-statistics" option.
1251
1252     Policy Enhancements:
1253     * InputOutput::ProhibitBacktickOperators can now be configured to only
1254       check in void contexts.
1255
1256     Bug Fixes:
1257     * 27073: False positive in RequireUpperCaseHeredocTerminator
1258     * 27065: CodeLayout::ProhibitTrailingWhitespace breaks under Perl 5.6.1
1259     * 26462: ControlStructures::ProhibitCascadingIfElse pod typo
1260     * ValuesAndExpressions::ProhibitCommaSeparatedStatements was complaining
1261       about multiple values in the list to be iterated over by a foreach loop.
1262     * Corrected PBP page numbers for some policies (Quinn Weaver).
1263
1264 [1.051]  Released on 2007-04-12
1265
1266     *DEVELOPMENT RELEASE*
1267
1268     No new policies.
1269     No particular bug fixes.
1270
1271     Internals:
1272     * Added several new utility functions to support the StricterSubs distro.
1273       Also, some of the existing functions in Perl-Critic-Utils have
1274       changed in ways that might break your custom policies.
1275
1276     Miscellanea:
1277     * Updated Emacs plugin (Courtesy Josh ben Jore).
1278       See extras/perlcritic.el for details.
1279     * Added copy of BBEdit plugin (Courtesy of Josh Clark).
1280       See extras/perl_critic_for_bbedit-1_0.zip for details
1281
1282 [1.05]  Released on 2007-03-19
1283
1284     Bug Fixes:
1285     * 25557: t/20_policy_prohibittrailingwhitespace.t fails on Perl 5.8.0
1286
1287 [1.04]  Released on 2007-03-18
1288
1289     Bug Fixes:
1290     * 25008: Subroutines::RequireFinalReturn should allow "throw"
1291     * 25085: False Positive - Heredoc terminator must be quoted
1292     * 18423: VERSION check does not notice Readonly::Scalar version
1293     * 25449: Proposal of $VERSION declaration (DUPLICATE)
1294
1295     New Policies:
1296     * CodeLayout::ProhibitTrailingWhitespace
1297     * ValuesAndExpressions::ProhibitCommaSeparatedStatements
1298     * Variables::ProhibitPerl4PackageNames
1299
1300     Policy Enhancements:
1301     * Subroutines::RequireFinalReturn can now be configured to recognize
1302       your custom functions that behave like "die" or "exit".
1303     * Documentation::RequirePodSections can be configured to match
1304       Module::Starter:PBP or to really match the PBP book.
1305
1306 [1.03]  Released on 2007-02-13
1307
1308     Bug Fixes:
1309     * Fixed a few more problems with the %f, %F, and %r format escapes.
1310     * I forgot to put Conway's perlcriticrc file in the MANIFEST. Sorry.
1311
1312     Interface Changes:
1313     * Perl::Critic::Utils automatically exports everything.  However,
1314       this is deprecated.  In the future, you must request your exports.
1315
1316     Policy Changes:
1317     * Duplicate violations of RequireExcplicitPackage are now squelched,
1318       in the same way as RequireUseStrict and RequireUseWarnings.
1319
1320 [1.02]  Released on 2007-02-11
1321
1322     Bug Fixes:
1323     * "undef" incorrectly triggered ProhibitMutatingListFunctions.
1324     * 24876: %f and %F escapes not working in custom "verbose" format strings.
1325     * 24875: Documentation bug in TestingAndDebugging::ProhibitNoStrict
1326
1327     New Policies:
1328     * InputOutput::RequireCheckedOpen
1329     * InputOutput::RequireCheckedClose
1330
1331     Other Cool Stuff:
1332     * Added Conway's own suggested Perl::Critic configuration as
1333       examples/perlcriticrc-conway.
1334
1335     * See the examples/ directory for some neat demonstrations of using
1336       the Perl::Critic API. Contributed by Elliot Shank.
1337
1338     Interface Changes:
1339     * Perl::Critic::Utils no longer exports anything by default.  Policies
1340       outside the distribution will need to specify what exactly they need
1341       from this module.  There are a number of tags that can be used in
1342       addition to individual imports.
1343
1344 [1.01]  Released on 2007-01-24
1345
1346     PRODUCTION RELEASE:  You may now consider the public Perl::Critic
1347     API as "stable."  Future minor releases will focus on bug fixes,
1348     new policies, and internal refactoring.
1349
1350     Bug Fixes:
1351     * Fixed memory leak.  This was reported by the Parrot team at
1352       http://rt.perl.org/rt3/Ticket/Display.html?id=41230
1353
1354 [0.23]  Released on 2007-01-19
1355
1356     Bug Fixes:
1357     * 23994: Test 56 in t/05_utils.t of Perl::Critic v0.22 fails
1358     * 24005: test 95 in t/13_bundled_policies fails in 0.22
1359
1360
1361     Groovy New Features:
1362     * Added '%F' to the Violation format specifications.  This will
1363       give you just the name of file where the violation occurred
1364       (i.e. without the path).
1365
1366     * Improved validation of .perlcriticrc file.  An invalid
1367       default setting will now cause a fatal exception. A
1368       strange-looking policy name will cause a warning.
1369
1370
1371     Interface Changes:
1372     * The syntax for theme expressions has changed.  Instead of using
1373       mathematical operators qw(+ * -) you must now use the logical
1374       operators qw(|| && !).  See the Perl::Critic docs for more info.
1375
1376     * The @GLOBALS and @BUILTINS variables are no longer exported by
1377       Perl::Critic::Utils.  Use the is_perl_global() and is_perl_builtin()
1378       functions instead.
1379
1380     * Perl::Critic::Policy::policy_parameters() has bee renamed to
1381       Perl::Critic::Policy::supported_paramters().  This was an
1382       undocumented feature anyway, so it shouldn't affect anyone.
1383
1384
1385     Other Internal Changes:
1386     * Perl::Critic now requires B::Keywords v1.05 or newer.
1387
1388     * A few internal classes have been refactored.  As a result,
1389       Set::Scalar is no longer a required dependency.
1390
1391
1392 [0.22]  Released on 2006-12-15
1393
1394     New Features:
1395     * Introduced named severity levels: gentle, stern, harsh, cruel, brutal
1396       You can use these named levels instead of the numeric ones.
1397       For example: "perlcritic --severity=cruel MyModule.pm"
1398       Or just:     "perlcritic --cruel MyModule.pm"
1399
1400     * For perlcritic, the "-List" option has been renamed to
1401       "-profileproto".  The output now includes the names of the
1402       parameters that each Policy supports, if any.
1403
1404     * Improved validation of Policy parameters in your F<.perlcriticrc>
1405       Any invalid parameter now causes a fatal exception.
1406
1407     Major Changes:
1408     * Reassigned themes for most policies.  Now there are fewer
1409       themes and they are organized around programming concepts
1410       instead of severity levels.  If you have assigned your own
1411       themes to any Policies, they should still work as expected.
1412
1413     Policy Changes:
1414     * ErrorHandling::RequireCarping will not complain if it can figure
1415       out that the die or warn message will always end in a newline
1416       ("\n").  The idea is that, if you put the newline there, you
1417       don't indend for there to be any file/line/stack information
1418       emitted, in which case you really don't want carp/croak.
1419
1420       You can restore the old strict behavior by giving the policy
1421       a false value for "allow_messages_ending_with_newlines" in your
1422       configuration.
1423
1424     Misc Changes:
1425
1426     Added single-letter uppercase alternatives for some perlcritic options.
1427
1428 [0.21_01] Released on 2006-12-03
1429
1430     New Policies:
1431     * TestingAndDebugging::ProhibitProlongedStrictureOverride
1432     * ControlStructures::ProhibitMutatingListFunctions
1433
1434     New Features:
1435     * Say "perlcritic -List" to get an expanded listing of all Policies.
1436       The format is suitable for use as your .perlcriticrc file.
1437     * Say "perlcritic -doc PATTERN" to get the documentation for all
1438       Policies that match m/PATTERN/imx.  This is a little easier than
1439       typing in the full name of the Policy module with "perldoc".
1440     * Say "perlcritic --singlepolicy PATTERN" to use one and only one
1441       policy.
1442     * Can now specify exceptions to Variables::ProhibitPackageVars,
1443       for packages like File::Find that only interface through
1444       package variables.
1445
1446     Bug Fixes:
1447     * 21713 false positive for parens used with substr and unpack.
1448     * 22890 allow Rcs keywords in POD.
1449
1450     Internals:
1451     * Testing system overhauled.  Details on the Policy/subtest
1452       framework is in t/run.t.
1453     * Added Perl::Critic::Utils::words_from_string.  This is safer
1454       than plain old C<split /\s+/>.
1455
1456 [0.21]  Released on 2006-11-05
1457
1458     New Policies:
1459     * BuiltinFunctions::ProhibitReverseSortBlock
1460     * BuiltinFunctions::ProhibitVoidGrep
1461     * BuiltinFunctions::ProhibitVoidMap
1462     * CodeLayout::RequireConsistentNewlines
1463     * Modules::RequireFilenameMatchesPackage
1464     * TestingAndDebugging::RequireTestLabels
1465     * ValuesAndExpressions::ProhibitMismatchedOperators
1466
1467     New Features:
1468     * Introduced policy "themes."  Themes are arbitrary names that can
1469       be used to identify a group of related Policies.  You can select
1470       your favorite policies by combining themes in a mathematic expression
1471       such as "pbp * (danger + risky)".  See POD for details.
1472     * perlcritic output is colorized if you have Term::ANSIColor.  This
1473       only works on non-Win32 platforms.  Use -nocolor switch to disable.
1474     * Say "perlcritic -count" to get just the the total number of
1475       violations per file.  Use this feature to quickly identify hot-spots.
1476     * Use the -only switch to choose only from policies mentioned in your
1477       .perlcriticrc file.  This is useful if you usually only want to
1478       work with a small subset of the policies.
1479     * Default values for most of the perlcritic and Perl::Critic options
1480       can now be defined in your .perlcriticrc file.  See POD for details.
1481
1482     Bug Fixes:
1483     * 21236: wrong page number for "printing to filehandles"
1484     * 21916: File handle ... wrong page reference in PBP [DUPE]
1485     * 21714: false positive for capture var used in ternary condition
1486     * 21718: No skip for File::Slurp in includes.t
1487     * ProhibitBarewordFilehandles doesn't complain if you open
1488       STDIN, STDOUT or STDERR.
1489     * Parrot 40564: Subroutines::RequireFinalReturn should allow die,
1490       exit, etc.
1491     * Each "for" and "foreach" loop now adds one point to the McCabe
1492       complexity score.
1493
1494     Other Stuff:
1495     * The internals of Perl::Critic have been significantly refactored,
1496       but should still be compatible with existing third-party Policies.
1497     * Added author-only tests to the release, but disabled by default
1498     * New Perl::Critic::Utils::shebang_line() method
1499     * Support for filename-based policies
1500     * Additional prerequisite: Set::Scalar
1501     * Now requires PPI version 1.118
1502
1503 [0.20]  Released on 2006-09-10
1504
1505     Perl::Critic now requires PPI version 1.117, which fixes
1506     several bugs that were introduced in version 1.116.
1507
1508     Bug Fixes:
1509     * 21079: grep clears @SITE_POLICIES
1510     * 21352: Test failures with PPI 1.117
1511     * 11365: sub DESTROY detected as a builtin homonym
1512
1513 [0.19]  Released on 2006-08-20
1514
1515     New Policies:
1516     * BuiltinFunctions::ProhibitStringySplit
1517     * ControlStructures::ProhibitDeepNests
1518     * RegularExpressions::ProhibitCaptureWithoutTest
1519     * Variables::RequireLexicalLoopIterator
1520
1521     New Features:
1522     * "perlcritic -quiet" suppresses the "source OK" message.
1523     * Variables::ProhibitPunctuationVars is now configurable.
1524
1525     Bug Fixes:
1526     * 20965: "Hard tabs used at" shouldn't check __DATA__
1527     * 21070: ProhibitNoisyQuotes hates overload
1528     * Punctuation variables are now exempt from ProhibitLocalVars
1529
1530     Other Stuff:
1531     * Test coverage is now over 95%
1532
1533 [0.18_01]  Released on 2006-08-06
1534
1535     New Policies:
1536     * Variables::RequireNegativeIndices
1537     * InputOutput::ProhibitInteractiveTest
1538     * ErrorHandling::RequireCarping
1539
1540     Bug Fixes:
1541     * RequireTidyCode tests fail if user has custom .perltidyrc file
1542     * 20612: RequirePerlTidy was ignoring HEREDOCs
1543     * 20659: __END__ statement considered "unreachable"
1544     * Fix for PPI::XS (no C<use overload '""'> support)
1545     * Support for 'goto' in ProhibitAmpersandSigils and
1546       Subroutines::RequireFinalReturn
1547
1548     Performance Enhancements:
1549     * Introduced Perl::Critic::Document class.  This is a facade for
1550       PPI::Document which internally caches search results.  This
1551       reduces the running time by about 35%.  The facade should be
1552       invisible, unless you are doing something really sneaky.
1553     * Extraction of the 'diagnostics' information is postponed
1554       until it is really needed.  Speedup has not been measured.
1555     * Calls to helper-subs have been reordered for maximum efficiency.
1556
1557     Other Cool Stuff:
1558     * Includes updated version of perlcritic mode for emacs.  See
1559       "extras/perlcritic.el" for details.
1560
1561 [0.18]  Released on 2006-07-16
1562
1563     Bug Fixes:
1564     * 14855: Home discovery is dangerously naive.
1565     * 20060: Incorrect page numbers in ProhibitLeadingZeros
1566       and RequireNumberSeparator policies.
1567     * 20068: .perlrc file - inconsistent documentation
1568     * 20254: "use vars qw(@EXPORT_OK)" not recognized
1569     * 20463: No-case heredoc terminator incorrectly detected as lower case.
1570     * ProhibitOneArgBless doesn't understand "bless {} => $class;"
1571     * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
1572     * ProhibitLeadingZeros was falsely hits '.0456'
1573
1574     Enhancements:
1575     * If File::HomeDir is available, we use it to locate the
1576       .perlcriticrc file.  This should help make Perl::Critic
1577       more portable to Win32 platforms.  If File::HomeDir is
1578       not installed, we resort to looking at the usual
1579       environment variables.
1580
1581     Other Stuff:
1582     * Added "perlcritic.el", which is a super-cool emacs minor-mode
1583       that runs perl-critic on the current buffer and returns the
1584       results in a sexy hot-linked "compiler" window.  You can run
1585       it on demand, or have it run automatically every time you
1586       save the buffer.  You can find this in the extras/ directory.
1587       Thanks to Josh ben Jore for contributing this.
1588
1589     * Moved "Perl::Critic::TestUtils" into the installed build.  This
1590       module is only used for unit-testing Perl::Critic, but we
1591       are putting it in the installation so folks who want to
1592       extend Perl::Critic can make use of it.
1593
1594 [0.17]  Released on 2006-06-13
1595
1596     Bug Fixes:
1597     * 19836: Perl-Critic0.16 fails tests during install.  This was
1598       caused by a bug in version 3.01 of Module::Pluggable.  See
1599       http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
1600     * Fixed bug in no-critic pragma parser.
1601
1602     New Policies:
1603     * ValuesAndExpressions::ProhibitEscapedCharacters
1604     * BuiltinFunctions::RequireSimpleSortBlock
1605
1606     Enhancements:
1607     * Perl::Critic can export critique() as a static function.  This
1608       may appeal to folks who dislike the object-oriented interface.
1609
1610 [0.16]  Released on 2006-05-14
1611
1612     Enhancements:
1613     * Perl::Critic->critique() now accepts a PPI::Document as the
1614       argument.  This feature creates an additional dependency on
1615       Scalar::Util, but that shouldn't be a problem because it is
1616       included with List::Util, which we already use.
1617
1618     Miscellanea:
1619     * Increased PPI dependency from v1.110 to v1.112
1620
1621 [0.15_03] Released on 2006-05-07
1622
1623     Bug Fixes:
1624     * The "## no critic" feature is now implemented without eval-ing
1625       the code.  This keeps Perl::Critic pure and safe :)
1626     * 19082: Page number for AUTOLOAD is incorrect
1627
1628     New Policies:
1629     * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
1630     * Modules::ProhibitAutomaticExportation
1631     * ValuesAndExpressions::ProhibitVersionStrings
1632
1633 [0.15_02] Released on 2006-04-26
1634
1635     Bug Fixes:
1636     * Reimplemented the '##no critic' pragmas to have effect on the
1637       line where the violation is reported, not on the line where
1638       the candidate element lives.  This is because some policies
1639       may report violations that are nowhere near the element that
1640       is being evaluated.
1641     * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
1642       all emit violations for _every_ statement that violates the
1643       Policy.  This closes a loophole that allowed you to circumvent
1644       the Policy by using '## no critic' on just the first statement
1645       that violated the policy.
1646     * Fixed the workaround for the magic shebang that is inserted
1647       by EU::MM and M::B.  This had stopped working around version 13.
1648     * Fixed -noprofile option on 'perlcritic'.  This also had stopped
1649       working at some point.
1650
1651 [0.15_01] Released on 2006-04-16
1652
1653     Enhancements:
1654     * Added diagnostic messages if the .perlcriticrc contains entries
1655       for Policy modules that don't seem to exist.
1656     * Now you can specify which policies to disable with the
1657       "## no critic" pseudo-pragmas.  This feature is still
1658       experimental.  See docs for details.
1659     * perlcritic's directory searching now skips backup files, such
1660       as *.swp, *.bak and *~.  It also ignores version control system
1661       directories, and the blib directory in module build directories.
1662
1663     Bug Fixes:
1664     * 18386: Bad example in POD for Documentation::RequirePodSections
1665     * 18670: Test failure if Perl::Tidy is not installed
1666     * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
1667     * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
1668       which are commonly used with Getopt::Long.
1669
1670     New Policies:
1671     * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
1672     * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
1673
1674     Miscellanea:
1675     * All spurrious options for `perlcritic` are now fatal.
1676     * Changed several of the -verbose formats to be more readable.
1677     * Explicit -severity option now overrides -[12345] shortcuts instead
1678       of being the other way around.
1679
1680
1681
1682 [0.15] Released on 2006-03-26
1683
1684     Bug Fixes:
1685     * 17964: Insists my code is not tidy (may not be fixed for all cases)
1686
1687 [0.14_02] Released on 2006-03-19
1688
1689     Bug Fixes:
1690     * 15653: False positive in OneArgSelect (fixed for real this time)
1691
1692     New Policies:
1693     * ClassHierarchies::ProhibitAutoloading
1694     * Documentation::RequirePodSections
1695     * InputOutput::RequireBracedFileHandleWithPrint
1696     * ValuesAndExpressions::ProhibitMixedBooleanOperators
1697     * Variables::RequireInitializationForLocalVars
1698
1699 [0.14_01] Released on 2006-03-05
1700
1701     Bug Fixes:
1702     * 14731: False positive: Builtin function called with parens
1703     * 17554: False positive in CodeLayout::RequireTrailingCommas
1704
1705     New Policies:
1706     * ClassHierarchies::ProhibitExplicitISA
1707     * InputOutput::ProhibitReadlineInForLoop
1708     * Miscellanea::ProhibitFormats
1709     * Miscellanea::ProhibitTies
1710     * Variables::ProhibitConditionalDeclarations
1711
1712 [0.14] Released on 2006-01-29
1713
1714     More documentation edits.
1715
1716     New Policies:
1717     * Documentation::RequirePodAtEnd
1718     * Subroutines::ProtectPrivateSubs
1719     * Variables::ProhibitMatchVars
1720     * Variables::ProtectPrivateVars
1721
1722     Bug Fixes:
1723     * 15295: "## no critic" pragmas too aggresive on compound statements.
1724     * t/01_config.t failed in the presence of third-party policies
1725
1726 [0.13_05] Not released
1727
1728     More documentation edits.
1729
1730     Implemented workaround for failing pod_coverage tests.
1731
1732     Bug Fixes:
1733     * 16906:  tr/// created false-postives with RegularExpression polices.
1734
1735 [0.13_04] Released on 2005-12-31
1736
1737     Moved DEVELOPER.pod file into the Perl/Critic dir.
1738
1739     More documentation edits.
1740
1741 [0.13_03] Released on 20051230
1742
1743     perlcritic now prints 'source OK' if it doesn't find any
1744     violations.  This gives folks a warm fuzzy feeling.
1745
1746     Tweaked some test cases that were failing on my Solaris
1747     environment at work.
1748
1749 [0.13_02] Released on 2005-12-29
1750
1751     Fixed Config to recognize fully-qualified module names in the
1752     .perlcriticrc file.
1753
1754     Various documentation edits.
1755
1756 [0.13_01] Released on 2005-12-28
1757
1758     Replaced 'priority' concept with 'severity'.  Now each Policy module
1759     has a predefined severity level ranging from 1 to 5.  By default,
1760     perlcritic only reports the most severe violations.  You can adjust
1761     the severity threshold at the command line, and you can change
1762     the severity for any Policy using the config file.
1763
1764     Chris implemented the applies_to() mechanism, which allows each Policy
1765     class to declare the types of PPI elements that it wants to examine.
1766     When traversing the document, Perl::Critic invokes the Policy only
1767     for elements that are of the correct type.  This improves performance
1768     by about 33%.
1769
1770     Perl::Critic now uses a Plugin architecture to automatically
1771     discover Policy modules.  So if you have custom Policies, all you
1772     have to do is install them in the Perl::Critic::Policy namespace --
1773     no need to add anything to your .perlcriticrc file.  If you write
1774     policies in a different namespace, you can configure that too.  See
1775     the Perl::Critic::Config docs for details.
1776
1777     New Policies:
1778     * Modules::RequireEndWithOne
1779     * NamingConventions::ProhibitAmbiguousNames
1780     * References::ProhibitDoubleSigils
1781     * Subroutines::RequireFinalReturn
1782     * Subroutines::ProhibitAmpersandSigils
1783     * Subroutines::ProhibitExcessComplexity
1784     * TestingAndDebugging::ProhibitNoStrict
1785     * TestingAndDebugging::ProhibitNoWarnings
1786
1787     Bug Fixes:
1788     * 15101: Plugin architecture improves support for 3rd-party code
1789     * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
1790     * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
1791     * 16288: Empty lists caused a fatal error RequireTrailingCommas
1792     * 15653: Fixed false positive in OneArgSelect.
1793
1794 [0.13] Released on 2005-10-31
1795
1796     Official release of 0.12_03.  No code major changes.
1797
1798 [0.12_03] Not released
1799
1800     Renamed -Policy option to -include.  Added -exclude to give the
1801     opposite effect.
1802
1803     Refactored constructor of Perl::Critic.  Now, most of the work
1804     is delegated to Perl::Critic::Config.  I'm not sure I like how
1805     this turned out, but we'll see how it goes.
1806
1807     Renamed some Policy modules to be a bit more comprehensible.  Note
1808     that you may need to change your .perlcriticrc file accordingly.
1809     I also suggest removing your current Perl::Critic installation
1810     before installing this one.
1811
1812     Name Changes:
1813     * ProhibitUnpackagedCode => RequireExplicitPackage
1814     * RequireQuotedWords     => ProhibitQuotedWordLists
1815
1816     Improved error message when Perl::Critic dies because PPI can't
1817     parsee the input code.
1818
1819     Changed output of -help to be more terse.
1820
1821     Edited POD.
1822
1823 [0.12_02] Not released
1824
1825     Added -Policy option to perlcritic.  The idea is to provide a
1826     compact interface for selecting Policy modules at the command-line.
1827     This feature is experimental and subject to change.
1828
1829     Added a warning message if -verbose value looks strange.  In most
1830     applications, the -verbose option does not require a value, so people
1831     might be puzzled when they write 'perlcritic -verbose my_file.pm' and
1832     nothing seems to happen.
1833
1834     Command-line options to perlcritic are now case-sensitive.  This
1835     makes it easier to abbreviate options that start with the same letters
1836     (e.g. 'Version' and 'verbose')
1837
1838     Fixed the new Policy modules that were misnamed and misplaced in the
1839     previous distribution.
1840
1841 [0.12_01] Not released
1842
1843     Rewrote some of the ControlStructures and BuiltinFunction
1844     policies to be simpler (and probably a little faster).
1845
1846     Edited POD.  Fixed some typos.  Added PREREQUISITES section
1847     to Perl::Critic documentation.
1848
1849     Fixed the -verbose FORMAT option so that you can put metachars
1850     in the FORMAT specification.  If using perlcritic, be careful to
1851     protect them from getting munged by the shell first.
1852
1853     Replaced ProhibitRequireStatements with RequireBarewordIncludes
1854     module. Courtesy of Chris Dolan <cdolan@cpan.org>
1855
1856     Added configuration to ProhibitInterpolationOfLiterals so that
1857     certain flavors of quotes can be exempt.  This is for folks who
1858     have configured their editor to use special syntax highlighting
1859     for certain kinds of strings (SQL, for example).
1860
1861     perlcritic now accepts multiple file arguments, so now you can
1862     critique your entire distribution in one shot.  As a result, the
1863     output-formats have changed slightly.
1864
1865     New Policy modules:
1866     * BuiltinFunctions::ProhibitLvalueSubstr
1867     * BuiltinFunctions::ProhibitSleepViaSelect
1868     * ClassHierarchies::ProhibitOneArgBless
1869     * CodeLayout::RequireTrailingCommas
1870     * CodeLayout::RequireQuotedWordLists
1871     * InputOutput::ProhibitTwoArgOpen
1872     * InputOutput::ProhibitOneArgSelect
1873     * InputOutput::ProhibitBarewordFileHandles
1874     * Miscellanea::RequireRcsKeywords
1875     * Modules::RequireVersionVar
1876     * RegularExpressions::RequireExtendedFormatting
1877     * RegularExpressions::RequireLineBoundaryMatching
1878
1879
1880     Bug fixes:
1881     14923: 'require' is now permitted. See RequireBarewordIncludes.
1882     15022: Fixed false-positives when keywords are used as hash keys.
1883     15023: Fixed spurious Violations by removing magic shebang.
1884     15031: Fixed spelling mistakes (and probably added some new ones).
1885     15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
1886
1887 [0.12] Released 2005-10-10
1888
1889     Redesigned the 'verbose' feature.  Now the output format
1890     can be user-defined using a sprintf-like specification.
1891     perlciritc also has a predefined output format that is
1892     compatible with grep mode in editors like vim and emacs.
1893
1894     'return' is now exempt from ProhibitParensWithBuiltins.  I may
1895     extend this exemption to all unary functions.
1896
1897     Edited POD. Added a super brief description of each policy
1898     in the main Perl::Critic documentation.  Added details about
1899     editor integration.
1900
1901     Additional Prerequisites:
1902     * String::Format
1903
1904 [0.11] Not released
1905
1906     The internal dynamics and API of Perl::Critic have changed
1907     considerably.  The result is a 300% increase in performance.
1908     See the POD in Perl::Critic::Policy for details.
1909
1910     New Features:
1911     * Added -verbose option to put more stuff in the output.  In the
1912       extreme, you can get the POD from Policy attached to each
1913       and every violation.
1914
1915     Additional Prerequisites:
1916     * IO::String
1917     * Pod::PlainText
1918
1919 [0.10] Released 2005-10-05
1920
1921     Fixed stupid bug in newest Policy modules.  They were returning
1922     PPI objects instead of Perl::Critic::Violation objects.  Doh!
1923
1924     Fixed test scripts to prevent failures if the user already has a
1925     .perlcriticrc file.
1926
1927     'ProhibitHardTabs' now allows leading tabs by default.
1928
1929     Put the Changes file in reverse-chronological order, so the most
1930     recent stuff is easy to find at the top of the file
1931
1932 [0.09] Released 2005-10-04
1933
1934     Fixed several bugs:
1935     * 14810: Now you are allowed to create your own 'import' function,
1936              since this is frequently done with fancy modules.
1937     * 14817: Parens, brackets, and braces are now excluded from
1938              'ProhibitNoisyQuotes' since they look better in quotes anyway.
1939     * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
1940     * 14899: Object methods with the same name as a built-in can
1941              be called with parens (ProhibitParensWithBuiltins).
1942     * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
1943              See documentation for explanation.
1944     * 14855: Partially fixed home directory discovery.  Still not
1945              completely portable, but at least doesn't create warnings.
1946
1947     New features:
1948     * 14734: Limit for number separators is now configurable
1949
1950     New Policy modules:
1951     * CodeLayout::ProhibitHardTabs
1952     * ControlStructures::ProhibitUnlessBlocks
1953     * ControlStructures::ProhibitUntilBlocks
1954     * ControlStructures::ProhibitCStyleForLoops
1955
1956     Changed the syntax for the magic comments.  Adam had the
1957     idea of using a pragma-like notation.  I liked it.
1958
1959 [0.08_2] Released 2005-09-27
1960
1961     Fixed problems with Perl::Critic::Config that caused File::Spec
1962     to emit 'uninitialized value' warnings during the build.
1963
1964     Added 1 Policy module contributed by Graham TerMarsch
1965
1966     Switched from File::Spec::Functions to plain File::Spec because
1967     I think its usage is more common.
1968
1969     Removed 'FindBin' from the test files so I can be sure that the
1970     right libraries are getting loaded.  This means I'll have to
1971     use the -l option with C<prove>.
1972
1973     Edited more POD.
1974
1975 [0.08_01] Not released
1976
1977     Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
1978     object method calls that have the same name as a builtin functions.
1979
1980     Introduced magical comments that allow developers to configure
1981     Perl::Critic on-the-fly from within their code.
1982
1983     Added META.yml files and POD tests to the build.  I did this
1984     mostly just to boost the Kwalitee score on CPANTS.
1985
1986     Switched from "Config::Std" to "Config::Tiny" because it doesn't
1987     require those fancy Damian modules that don't seem to work on
1988     some older versions of Perl.
1989
1990 [0.07] Released on 2005-09-21
1991
1992     Fixed bugs in the ProhibitCascadingIfElse policy.
1993
1994     Added ProhibitExplicitReturnUndef policy
1995
1996     Made ProhibitUnpackagedCode configurable so you can exempt scripts,
1997     which typically don't have an explicit 'package' statement.
1998
1999     ProhibitPackageVars policy now exempts vars in ALL_CAPS.  This
2000     is to permit common package variables like @EXPORT and $VERSION.
2001
2002     Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
2003     the so-called string form doesn't really exist.  Now called
2004     "RequireBlockGrep" and "RequireBlockMap"
2005
2006     Corrected documentation on defining Policy names within the
2007     configuration file.  This still isn't very clear and needs
2008     to be rewritten.
2009
2010     Perl::Critic now requires PPI version 1.003, which has a few bug
2011     fixes of its own.
2012
2013     Rewrite some code just to make Perl::Critic more self-compliant.
2014
2015     Added test cases to verify the configuration functionality.  These
2016     are not completely thorough and need more work.
2017
2018 [0.06] Released on 2005-09-17
2019
2020     Now called 'Perl::Critic'.
2021
2022     Added 4 new policy modules.
2023
2024     Fixed bugs in build process.
2025
2026     Added support for Module::Build.
2027
2028 [0.05] Released on 2005-09-17
2029
2030     End of 'Perl::Review' releases.  I have changed the name to
2031     'Perl::Critic' to avoid possible confusion with "The Perl Review"
2032     magazine.
2033
2034 [0.04] Released on 2005-09-14
2035
2036     Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
2037
2038 [0.03] Released on 2005-09-13.
2039
2040     Fixed some POD links.
2041
2042     Removed test cases for missing policy module.
2043
2044 [0.02] Released on 2005-09-13.
2045
2046     Major overhaul based on feedback from Perl community.
2047
2048     Factored coding standards into separate modules (known as
2049     Policies).  The idea here is to allow other developers to easily
2050     contribute additional coding standards.
2051
2052     Reworked Perl::Review into a simple engine for loading and running
2053     Policy modules.
2054
2055     Gave perlreview a command-line interface and configuration file
2056     for selecting which Policy modules to use.
2057
2058 [0.01] Released on 2005-08-16.
2059
2060     Initial version.
2061
2062 ##############################################################################
2063 #      $URL$
2064 #     $Date$
2065 #   $Author$
2066 # $Revision$
2067 ##############################################################################
2068
2069 # ex: set ts=8 sts=4 sw=4 tw=78 ft= expandtab shiftround :