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