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