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