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