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