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