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