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