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