Login
Always put parens on method calls.
[gknop/Perl-Critic.git] / Changes
1 [1.xxx] Released on 2008-xx-xx
2
3     Policy Changes:
4     * InputOutput::RequireCheckedSyscalls now has an exclude_functions
5       parameter.
6
7     New Policies:
8     * Miscellanea::ProhibitUselessNoCritic
9     * Subroutines::ProhibitReturnSort
10     
11     Miscellanea:
12     Perl::Critic::Violation will automatically strip trailing periods 
13     from your Policy description and explanation strings.  This
14     ensures that the punctuation is consistent with the format
15     specified by the user via the -verbose formatting options.
16     
17 [1.093_02] Released on 2008-10-30
18
19     Being released right now simply so that I can put out a version of
20     Perl::Critic::Moose.
21
22     Incompatible change:
23     * The deprecated $FORMAT variables for Perl::Critic::Policy and
24       Perl::Critic::Violation no longer exist.  Use the corresponding
25       get_format() and set_format() functions instead.
26     * Also, the way that "## no critic" markers was refactored.  As
27       a result, we discovered that the syntax for the markers was
28       pretty vague.  If you didn't do it just right, it would
29       disable all policies, and not just the specific ones that
30       you wanted.  So we've tightened this up a bit.  If you
31       followed the examples that have been in the docs for the
32       last couple years, then you should be fine.  But if you've
33       been using certain other variations in your "## no critic"
34       markers, then you might suddenly find yourself violating
35       the new ProhibtUnrestrictedNoCritic policy.  To fix this,
36       just make sure your Policy names appear in parentheses:
37
38         ## no critic Foo, Bar, Baz     # wrong!
39         ## no critic Foo Bar Baz       # wrong!
40
41
42         ## no critic (Foo, Bar, Baz)   # ok!
43         ## no critic qw(Foo Bar Baz)   # also ok!
44
45     New Developer Features:
46     * Perl::Critic::Policy::is_document_exempt() has been renamed to
47       prepare_to_scan_document() and the sense of the return value has been
48       reversed in order to make it indicative of being more generally useful.
49
50     Policy Changes:
51     * InputOutput::RequireCheckedClose, InputOutput::RequireCheckedOpen, and
52       InputOutput::RequireCheckedSyscalls now all support autodie.
53       Unfortunately, autodie is currently treated like a module and not a
54       pragma, which means that the lexical scoping is not taken into account.
55     * Modules::ProhibitEvilModules now allows you to specify what the
56       description of a use of a bad module should be, to, say, suggest that
57       people use autodie instead of Fatal.
58     * Subroutine::ProhibitExcessComplexity violation descriptions now include
59       the name of the subroutine, thanks to Andreas Koenig, RT #40070.
60
61     New Policies:
62     * NamingConventions::Capitalization
63     * Miscellanea::ProhibitUnrestrictedNoCritic
64     * Variables::ProhibitReusedNames
65
66 [1.093_01] Released on 2008-09-07
67
68     New Developer Features:
69     * Perl::Critic::Policy::is_document_exempt() is checked prior to scanning
70       and thus can speed things up.
71
72     Bug Fixes:
73     * Miscellanea::RequireRcsKeywords couldn't find keywords after __END__
74       that didn't look like part of POD.
75     * Modules::RequireFilenameMatchesPackage would incorrectly complain about
76       programs.  Yet more greatness contributed by Schwern.  RT #39024.
77
78 [1.092] Released on 2008-09-02
79
80     Bug Fixes:
81     * Fixed POD errors that were causing build failures.  Sorry
82       about that.
83
84 [1.091] Released on 2008-09-01
85
86     New Policies:
87     * RegularExpressions::RequireDotMatchAnything
88
89     New Features:
90     * perlcritic now supports a -pager option, so you can more easily
91       send the output to your favorite pager.  You can set this option
92       on the command-line or in your .perlcriticrc file.  See the
93       perlcritic perldoc for more details.  Credit to Michael Schwern.
94     * The output from "perlcritic -doc PATTERN" will be automatically
95       sent to your pager if you have set the -pager option.
96
97     Policy Changes:
98     * CodeLayout::ProhibitQuotedWordLists no longer applies if the list
99       contains any non-words, by default.  A non-word is anything that does
100       not match /[\w-]+/.  You can restore the former behavior by setting the
101       "strict" option.  RT #37886.
102     * CodeLayout::ProhibitQuotedWordLists also now applies to the import
103       arguments of a C<use> statement.  RT #24467.
104     * ErrorHandling::RequireCheckingReturnValueOfEval now recognizes ternary
105       left-sides as valid checks.
106     * RegularExpressions::RequireExtendedFormatting gains a
107       minimum_regex_length_to_complain_about option.  Also, regexes that
108       contain only word and whitespace characters are now exempt from this
109       policy, by default; you can make it complain about them by turning on
110       the new strict option.  Contributed by Michael Schwern.  RT #38531.
111     * TestingAndDebugging::ProhibitNoWarnings now supports a
112       allow_with_category_restriction option, thanks to Michael Schwern.
113       RT #38514.
114     * CodeLayout::ProhibitHardTabs now allows leading tabs in qw() word lists
115       and regexes with the /x modifier.  You can still configure this
116       policy to forbid all hard tabs, if you like.  RT #32440
117
118     Bug Fixes:
119     * perlcritic should now work under PAR.  RT #38380.
120     * URL for our repository in META.yml now works for anonymous
121       checkout.  The password is "" (empty).  RT #38628.
122     * color for high-severity violations is now magenta because
123       it is more redable than yellow on white backgrounds.  RT #38511.
124
125 [1.090] Released on 2008-07-22
126
127     Bug Fixes:
128     * Test was incorrectly failing when Regexp::Parser wasn't installed.
129
130 [1.089] Released on 2008-07-21
131
132     Minor Enhancements:
133     * -s is now a synonym for --single-policy.
134
135     Policy Changes:
136     * Subroutines::ProhibitBuiltinHomonyms now also prohibits subroutines
137       with the same name as a Perl keyword (e.g. if, foreach, while).
138       Inspired by RT #37632.
139     * Subroutines::ProtectPrivateSubs now allows expressions like
140       "shift->_some_private_method();".  Note that this *only* applies
141       to the "shift" function -- a private method call on the right of any
142       other bareword still causes a violation.  RT #34713.
143     * Subroutines::RequireFinalReturn now includes exec in the set of things
144       that mark a successful return.  RT #37672
145     * ValuesAndExpressions::ProhibitInterpolationOfLiterals now takes a
146       allow_if_string_contains_single_quote option.  Contributed by Ed
147       Avis <ed@membled.com>.  RT #36125.
148     * ValuesAndExpressions::RequireInterpolationOfMetachars now supports a
149       rcs_keywords option to allow for the common case where those require
150       dollar signs.
151
152     Bug Fixes:
153     * BuiltinFunctions::ProhibitSleepViaSelect would complain if there were
154       three undefs as arguments to select(), but one of them was the timeout.
155       RT #37416.
156     * Reduced false positives in
157       RegularExpressions::ProhibitSingleCharAlternation.  Thanks to
158       Andy Lester and Elliot Shank test cases.
159     * RegularExpressions::ProhibitUnusedCapture would complain if there were
160       multiple captures used in a substitution, e.g. s/(.)(.)/$2$1/.
161     * Subroutines::ProhibitAmpersandSigils no longer complains about
162       "sort &foo(...)".
163     * Makefile.PL, Build.PL and other ".PL" scripts which typically do not
164       have a shebang are no longer mistaken as modules.  This prevents
165       spurious warnings from Modules::RequireEndWithOne.  RT #20481.
166
167     Internals:
168     * Tests are now self compliant.
169
170 [1.088] Released on 2008-07-04
171
172     New Policies
173     * ErrorHandling::RequireCheckingReturnValueOfEval
174
175     Policy Changes:
176     * ValuesAndExpressions::ProhibitLeadingZeros now accepts octal numbers
177       for the Unix permissions argument to chmod, dbmopen, mkdir, sysopen, or
178       umask, by default.  Use the "strict" option to get the old behavior.
179       RT #31977.
180     * Due to the consensus at YAPC::NA 2008,
181       Variables::ProhibitUnusedVariables default severity has been raised to
182       medium/3.
183
184     Minor Changes:
185     * The perlcritic "--Version" option is now "--version" in order to act
186       like the rest of the world.
187
188 [1.087] Released on 2008-06-21
189
190     Policy Changes:
191     * CodeLayout::ProhibitParensWithBuiltins no longer complains about
192       sort(foo(@x)).
193     * TestingAndDebugging::RequireUseWarnings will not complain about files
194       that contain a "use 5.005" statement or similar for perls prior to 5.6.
195       Lesson of the day: computer conferences where you can meet in the real
196       world can clarify conversations greatly.  Good to finally meet you Adam.
197     * InputOutput::ProhibitTwoArgOpen similarly will not complain if there's
198       a "use/require 5.005" statement in the file.  RT #34385.
199
200     Bug fixes:
201     * Perl::Critic can now critique a file named "0".  However, PPI will give
202       a parse error until the next version comes out.  Fixes RT #36127.
203     * Moved detection of the lack of any enabled Policies from P::C::Config
204       to Perl::Critic.  This was causing the perlcritic.t in Parrot to fail.
205       Note, however, there are plans afoot to change how Perl::Critic is
206       configured and things that depend upon that may break.  Please contact
207       users@perlcritic.tigris.org and tell us how you're using P::C::Config
208       directly so that we can take your needs into account.
209
210 [1.086] Released on 2008-06-12
211
212     Policy Changes:
213     * NamingConventions::ProhibitAmbiguousNames now specifies the name that
214       it had problems with in its violation descriptions.
215
216     Bug fixes:
217     * The color option wasn't being correctly set from a .perlcriticrc.
218       RT #36569.
219
220     Minor changes:
221     * --colour is now a synonym for --color.
222
223 [1.085] Released on 2008-06-07
224
225     New Policies:
226     * Documentation::RequirePackageMatchesPodName
227
228     Policy Changes:
229     * Variables::ProhibitUnusedVariables detects a few more cases.  It's
230       still very limited, though.
231
232     Bug fixes:
233     * ControlStructures::ProhibitUnreachableCode didn't notice "until" was an
234       conditional expression.
235
236     Minor documentation updates.
237
238 [1.084] Released on 2008-05-24
239
240     New Features:
241     * perlcritic now supports a --list-themes option.
242     * You can specify the maximum number of violations you want per Policy
243       per document.  Developers can give a default value for this for a
244       Policy by overriding default_maximum_violations_per_document().
245       See RequireUseStrict and ProhibitMagicNumbers for examples.
246
247     Policy Moved:
248     * The ValuesAndExpressions::ProhibitMagicNumbers policy has been moved
249       from Perl::Critic::More into the primary Perl::Critic distribution.
250
251     New Policies:
252     * Variables::ProhibitUnusedVariables (very dumb, limited initial
253       implementation.)
254     * ControlStructures::ProhibitLabelsWithSpecialBlockNames
255       Contributed by Mike O'Regan.  Kickin' ass, Mike.
256
257     Policy Changes:
258     * ControlStructures::ProhibitUnreachableCode now handles the perl 5.10
259       "//" and "err" operators.  RT #36080
260     * InputOutput::RequireBriefOpen now ignores opens of STDIN, STDOUT,
261       and STDERR.  You're generally trying to make long-lasting global
262       effects when manipulating these.  (RT #35774)
263     * RegularExpressions::ProhibitUnusualDelimiters now supports an
264       "allow_all_brackets" option.
265     * RegularExpressions::RequireBracesForMultiline now supports an
266       "allow_all_brackets" option.
267     * TestingAndDebugging::RequireUseStrict now accepts "use Moose::Role"
268       as equivalent to "use strict".  (RT #34838)
269     * TestingAndDebugging::RequireUseWarnings now accepts "use Moose::Role"
270       as equivalent to "use warnings".  (RT #34838)
271     * ValuesAndExpressions::ProhibitMagicNumbers now accepts constant
272       subroutines.
273     * Variables::ProhibitMatchVars no longer detects "use English;".
274       This problem is detected in a more clear way by
275       Modules::RequireNoMatchVarsWithUseEnglish.
276     * Variables::ProhibitPerl4PackageNames no longer complains about
277       $'/$POSTMATCH.  RT #36059
278     * Variables::RequireLocalizedPunctuationVars now allows the use of "my".
279       RT #33937
280
281     Bug Fixes:
282     * No longer falls over if a single file has a parse error.
283
284     New Developer Features:
285     * If a document specifies a minimum perl version, e.g. "use 5.008003",
286       P::C::Document::highest_explicit_perl_version() will tell you what it
287       is.
288     * The parameter to P::C::Policy::initialize_if_enabled is now a
289       P::C::PolicyConfig object instead of a hash reference.
290
291     Minor Changes:
292     * LOTS of documentation updates.
293     * A few more statistics are emitted by perlcritic with the --statistics
294       option.
295     * perlcritic --profile-proto now includes policy abstracts in its
296       output.
297
298     Prerequisites:
299     * Now depends upon PPI 1.203.
300     * New dependency upon version.
301
302 [1.083_006] Released on 2008-05-20
303 [1.083_005] Released on 2008-05-19
304 [1.083_004] Released on 2008-05-18
305 [1.083_003] Released on 2008-05-17
306 [1.083_002] Released on 2008-05-17
307 [1.083_001] Released on 2008-04-13
308
309     Changes summarized into 1.084 above.  For exact details, see Changes in
310     1.083_006 on BackPAN.
311
312 [1.082] Released on 2008-03-08
313
314     New Features:
315     * A new metadata system for defining policy parameters/options has been
316       added.  This makes the life of policy authors easier because
317       configuration validation and parsing can be taken care of
318       automatically, in most cases.  This allows greater integration with
319       IDEs and allows the perlcritic "--profile-proto" option to produce
320       better output.
321
322       Note: This change does NOT REQUIRE ANY CHANGES to policies outside of
323       this distribution; they should continue to work as is.  However, use
324       of this facility can reduce the size of your code and provide the
325       means for tools to discover more about your policy.  If this change
326       does break any of your policies, please let us know.
327
328       To learn how to take advantage of this facility, read
329       Perl::Critic::DEVELOPER and look at the source of any of the
330       configurable policies included in this distribution.
331
332       There is a discussion of the design considerations for this facility in
333       the source repository under doc/PolicyParameter_Notes.pod.
334
335     * Added support for "criticism-fatal" option in your perlcriticrc
336       file.  This will be used by the criticism pragma to cause execution
337       to abort if the file contains any violations.
338
339     New Policy:
340     * Module::RequireNoMatchVarsWithUseEnglish
341
342     Policy Changes:
343     * Added an allow_last_statement_to_be_comma_separated_in_map_and_grep
344       option to ValuesAndExpressions::ProhibitCommaSeparatedStatements.
345       Partial response to http://rt.cpan.org/Public/Bug/Display.html?id=27654.
346     * ControlStructures::ProhibitPostfixControls gains the ability to have
347       the flow control statements allowed to be modified.  This in response
348       to RT #29540.
349     * TestingAndDebugging::RequireUseStrict now accepts "use Moose" as
350       equivalent to "use strict".
351     * TestingAndDebugging::RequireUseWarnings now accepts "use Moose" as
352       equivalent to "use warnings".
353
354     Bug Fixes:
355     * RT #31281 perlcritic doesn't recognize "#!/bin/env perl" shebang
356     * Replace usage of Unicode property escapes with POSIX character classes
357       order to restore 5.6 compatability.
358     * RT #30388 ValuesAndExpressions::ProhibitVersionStrings complained
359       about numbered directories in "use lib".
360     * Fixed handling of badly behaved spelling programs in PodSpelling.
361
362 [1.081_006] Released on 2008-03-02
363 [1.081_005] Released on 2007-12-29
364 [1.081_004] Released on 2007-12-20
365 [1.081_003] Released on 2007-12-16
366 [1.081_002] Released on 2007-12-16
367 [1.081_001] Released on 2007-12-15
368
369     Changes summarized into 1.082 above.  For exact details, see Changes in
370     1.081_006 on BackPAN.
371
372 [1.080] Released on 2007-11-11
373
374     New Features:
375     * Allow a "## no critic" statement after a shebang on line 1 of a
376       file.  This allows users to block violations that apply to
377       whole files and still allow shebangs.
378
379     New Policies: (funded by a Perl Foundation grant)
380     * InputOutput::ProhibitExplicitStdin
381     * RegularExpressions::ProhibitFixedStringMatches
382     * RegularExpressions::RequireBracesForMultiline
383     * RegularExpressions::ProhibitUnusualDelimiters
384     * RegularExpressions::ProhibitUnusedCapture
385     * RegularExpressions::ProhibitComplexRegexes
386     * RegularExpressions::ProhibitSingleCharAlternation
387     * RegularExpressions::ProhibitEscapedMetacharacters
388     * RegularExpressions::ProhibitEnumeratedClasses
389     * InputOutput::RequireBriefOpen
390     * InputOutput::RequireCheckedSyscalls
391
392     Other New Policies
393     * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
394
395     Policy Changes:
396     * Variables::ProhibitConditionalDeclarations now permits you to local-ize
397       variables in conditional declarations.  This makes sense, since
398       C<local> is actually a variable modifier, rather than a declaration.
399       Thanks to David Golden for reporting this.
400
401     New Developer Features:
402     * Perl::Critic::Utils::PPIRegexp encapsulates interaction with
403       the PPI Regexp token classes.  Those classes have very sparse
404       APIs, so this package hides away the ugly fiddling with PPI
405       internals.
406     * Added a new optional_modules parameter for the .run syntax.
407
408     Bug fixes:
409     * PPI::Structure::List can now contain multiple children,
410       so P::C::Utils::parse_arg_list() needs to handle it.
411
412       This was done in the process of fixing
413       http://rt.cpan.org/Ticket/Display.html?id=24924, which was a problem
414       with TestingAndDebugging::RequireTestLabels.
415
416     * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls wasn't resetting
417       chain length when it ran into the end of a sub-expression.
418
419       http://rt.cpan.org/Public/Bug/Display.html?id=30040
420
421     * ValuesAndExpressions::ProhibitCommaSeparatedStatements was reporting
422       false positives when builtins which accept both no and multiple
423       arguments were involved.
424
425       http://rt.cpan.org/Public/Bug/Display.html?id=27654
426
427     Internals:
428     * Removed all use of Carp in favor of exceptions.
429
430     Prerequisites:
431     * Now requires PPI 1.201.  A number of workarounds for PPI bugs have been
432       removed.
433     * New dependency upon Exception::Class.
434
435     Installation:
436     * Use Devel::CheckOS to see whether Perl::Critic is being installed on
437       a Solaris system and warn about tar(1) chopping file names off if it
438       is.
439
440 [1.079_003]  Released on 2007-10-22
441 [1.079_002]  Released on 2007-10-21
442 [1.079_001]  Released on 2007-10-09
443
444     Changes summarized into 1.080 above.  For exact details, see Changes in
445     1.079_003 on BackPAN.
446
447 [1.078]  Released on 2007-09-19
448
449     Restore Perl::Critic::TestUtils::should_skip_author_tests() and
450     get_author_test_skip_message().  Some Perl::Critic add-on distributions
451     are using them.
452
453 [1.077]  Released on 2007-09-15
454
455     Note: if you don't have any problems installing Perl::Critic 1.076, there
456     is no need to upgrade to this version.  There are no functionality
457     changes.  This release only contains changes related to installation that
458     a few people were experiencing.
459
460     Minor changes:
461     * Removed build-time use of Readonly, again, due to problems some people
462       were having when trying to compile the code by hand, rather than using
463       CPAN(PLUS)?.
464     * Don't run author tests if there's a .svn directory present because
465       users who grabbed the code from the source repository were executing
466       them and getting failures.
467     * Don't generate optional, module-hiding test wrappers if author tests
468       are not enabled.
469
470
471 [1.076]  Released on 2007-09-07
472
473     It appears from reports on the 1.075_001 release that the subroutine
474     sigils were indeed the problem.  Release to the general populace.
475
476
477 [1.075_001]  Released on 2007-09-06
478
479     Bug Fixes:
480     Undo the changes in 1.073 and 1.074.  Instead, stop using the subroutine
481     sigil in import and export lists.  It is suspected that the problem lies
482     with Exporter stripping off ampersands.
483
484 [1.074]  Released on 2007-09-04
485
486     Bug Fixes:
487     Repeat the Makefile.PL change on
488     t/generate_without_optional_dependencies_wrappers.PL.
489     I love CPAN Testers.
490
491 [1.073]  Released on 2007-09-04
492
493     Bug Fixes:
494     Work around problems with the combination of Exporter & Readonly in
495     Makefile.PL on some machines.
496
497 [1.072]  Released on 2007-09-03
498
499     Bug Fixes:
500     * The Makefile generated by Makefile.PL was not syntactically correct
501       according to some versions of Solaris.  Thanks to Diab Jerius
502       (DJERIUS) for discovery and testing.
503     * Fixed mis-definition of "quiet" value for the "--profile-strictness"
504       option.
505     * Enhanced testing with the absence of optional modules.
506
507 [1.071]  Released on 2007-08-24
508
509     The "Brown Paper Bag" Release
510
511     Bug Fixes:
512     * Tests would not pass in environments that did not have all optional
513       dependencies installed.
514
515 [1.07]  Released on 2007-08-21
516
517     New Policies: (funded by a Perl Foundation grant)
518     * BuiltinFunctions::ProhibitBooleanGrep
519     * BuiltinFunctions::ProhibitComplexMappings
520     * Documentation::PodSpelling
521     * InputOutput::ProhibitJoinedReadline
522     * Subroutines::ProhibitManyArgs
523     * Subroutines::RequireArgUnpacking
524     * ValuesAndExpressions::ProhibitImplicitNewlines
525     * Variables::RequireLocalizedPunctuationVars
526
527     Other New Policies
528     * Subroutines::ProhibitNestedSubs
529
530     New Features:
531     * The "perlcritic --profile-proto" output now includes the "add_themes"
532       parameter for each policy.
533     * The perlcritic "--strict-profile" option has been replaced with a
534       "--profile-strictness" option.  This new option takes values of "warn"
535       (the default), "fatal", and "quiet", which controls what happens with
536       ignorable problems in a .perlcriticrc file.
537
538     New Developer Features:
539     * Perl::Critic::Policy now has an overridable initialize_if_enabled()
540       method which allows a Policy to perform expensive initialization after
541       it has been determined whether the user has it enabled or not.  Also,
542       this method allows a Policy to say that it should be disabled
543       regardless of what the user says.
544
545       Actually, use of this method is now encouraged over using a
546       constructor.
547
548     Other Stuff:
549     * Now requires the Readonly module in order to be more self-compliant.
550
551 [1.061]  Released on 2007-07-24
552
553     Bug Fixes:
554     * Fix P::C::Theme-- Exporter in Perl 5.6 does not export import(), so you
555       must subclass it.  *sigh*
556     * Fix P::C::Config::_validate_and_save_theme()-- eval of an empty string
557       does not reset $@/$EVAL_ERROR in Perl 5.6.
558
559     Big thanks to Anirvan Chatterjee for identifying and helping debug these
560     issues.
561
562 [1.06]  Released on 2007-06-27
563
564     New Features:
565     * perlcritic now emits errors for all the problems it can find for the
566       global options in the command-line parameters and .perlcriticrc file,
567       rather than bailing on the first one it encounters.
568
569     * perlcritic now has a "--strict-profile" option which will make warnings
570       about problems in a profile fatal.
571
572     * perlcritic now has a "--statistics-only" option which suppresses the
573       display of individual violations and only shows the additional output
574       produced by the "--statistics" option.
575
576     Feature requests:
577     * A value for "color" can now be specified in a .perlcriticrc.
578       http://rt.cpan.org/Ticket/Display.html?id=24877
579
580     New Policies:
581     * ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
582       As suggested in http://rt.cpan.org/Ticket/Display.html?id=23290.
583     * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
584     * Modules::ProhibitExcessMainComplexity
585       As suggested in http://rt.cpan.org/Ticket/Display.html?id=24699
586
587     Minor changes:
588     * The perlcritic "--profile-proto" option now emits the short names for
589       policies, rather than the full ones.
590
591     * The "-profileproto" and "-singlepolicy" options have been renamed to
592       "-profile-proto" and "-single-policy" in order to make the growing
593       number of command-line options comprehensible.  The change of
594       "singlepolicy" also affects your F<.perlcriticrc> file.
595
596 [1.053]  Released on 2007-06-02
597
598     *DEVELOPMENT RELEASE*
599
600     Bug Fixes:
601     Fixed bug in 15_statustics.t test script, which caused the build
602     to fail on machines that don't have Perl::Tidy installed.
603
604 [1.052]  Released on 2007-06-01
605
606     *DEVELOPMENT RELEASE*
607
608     New Features:
609     * perlcritic now emits a summary about the scanned code when enabled by
610       the "-statistics" option.
611
612     Policy Enhancements:
613     * InputOutput::ProhibitBacktickOperators can now be configured to only
614       check in void contexts.
615
616     Bug Fixes:
617     * 27073: False positive in RequireUpperCaseHeredocTerminator
618     * 27065: CodeLayout::ProhibitTrailingWhitespace breaks under Perl 5.6.1
619     * 26462: ControlStructures::ProhibitCascadingIfElse pod typo
620     * ValuesAndExpressions::ProhibitCommaSeparatedStatements was complaining
621       about multiple values in the list to be iterated over by a foreach loop.
622     * Corrected PBP page numbers for some policies (Quinn Weaver).
623
624 [1.051]  Released on 2007-04-12
625
626     *DEVELOPMENT RELEASE*
627
628     No new policies.
629     No particular bug fixes.
630
631     Internals:
632     * Added several new utility functions to support the StricterSubs distro.
633       Also, some of the existing functions in Perl-Critic-Utils have
634       changed in ways that might break your custom policies.
635
636     Miscellanea:
637     * Updated Emacs plugin (Courtesy Josh ben Jore).
638       See extras/perlcritic.el for details.
639     * Added copy of BBEdit plugin (Courtesy of Josh Clark).
640       See extras/perl_critic_for_bbedit-1_0.zip for details
641
642 [1.05]  Released on 2007-03-19
643
644     Bug Fixes:
645     * 25557: t/20_policy_prohibittrailingwhitespace.t fails on Perl 5.8.0
646
647 [1.04]  Released on 2007-03-18
648
649     Bug Fixes:
650     * 25008: Subroutines::RequireFinalReturn should allow "throw"
651     * 25085: False Positive - Heredoc terminator must be quoted
652     * 18423: VERSION check does not notice Readonly::Scalar version
653     * 25449: Proposal of $VERSION declaration (DUPLICATE)
654
655     New Policies:
656     * CodeLayout::ProhibitTrailingWhitespace
657     * ValuesAndExpressions::ProhibitCommaSeparatedStatements
658     * Variables::ProhibitPerl4PackageNames
659
660     Policy Enhancements:
661     * Subroutines::RequireFinalReturn can now be configured to recognize
662       your custom functions that behave like "die" or "exit".
663     * Documentation::RequirePodSections can be configured to match
664       Module::Starter:PBP or to really match the PBP book.
665
666 [1.03]  Released on 2007-02-13
667
668     Bug Fixes:
669     * Fixed a few more problems with the %f, %F, and %r format escapes.
670     * I forgot to put Conway's perlcriticrc file in the MANIFEST. Sorry.
671
672     Interface Changes:
673     * Perl::Critic::Utils automatically exports everything.  However,
674       this is deprecated.  In the future, you must request your exports.
675
676     Policy Changes:
677     * Duplicate violations of RequireExcplicitPackage are now squelched,
678       in the same way as RequireUseStrict and RequireUseWarnings.
679
680 [1.02]  Released on 2007-02-11
681
682     Bug Fixes:
683     * "undef" incorrectly triggered ProhibitMutatingListFunctions.
684     * 24876: %f and %F escapes not working in custom "verbose" format strings.
685     * 24875: Documentation bug in TestingAndDebugging::ProhibitNoStrict
686
687     New Policies:
688     * InputOutput::RequireCheckedOpen
689     * InputOutput::RequireCheckedClose
690
691     Other Cool Stuff:
692     * Added Conway's own suggested Perl::Critic configuration as
693       examples/perlcriticrc-conway.
694
695     * See the examples/ directory for some neat demonstrations of using
696       the Perl::Critic API. Contributed by Elliot Shank.
697
698     Interface Changes:
699     * Perl::Critic::Utils no longer exports anything by default.  Policies
700       outside the distribution will need to specify what exactly they need
701       from this module.  There are a number of tags that can be used in
702       addition to individual imports.
703
704 [1.01]  Released on 2007-01-24
705
706     PRODUCTION RELEASE:  You may now consider the public Perl::Critic
707     API as "stable."  Future minor releases will focus on bug fixes,
708     new policies, and internal refactoring.
709
710     Bug Fixes:
711     * Fixed memory leak.  This was reported by the Parrot team at
712       http://rt.perl.org/rt3/Ticket/Display.html?id=41230
713
714 [0.23]  Released on 2007-01-19
715
716     Bug Fixes:
717     * 23994: Test 56 in t/05_utils.t of Perl::Critic v0.22 fails
718     * 24005: test 95 in t/13_bundled_policies fails in 0.22
719
720
721     Groovy New Features:
722     * Added '%F' to the Violation format specifications.  This will
723       give you just the name of file where the violation occurred
724       (i.e. without the path).
725
726     * Improved validation of .perlcriticrc file.  An invalid
727       default setting will now cause a fatal exception. A
728       strange-looking policy name will cause a warning.
729
730
731     Interface Changes:
732     * The syntax for theme expressions has changed.  Instead of using
733       mathematical operators qw(+ * -) you must now use the logical
734       operators qw(|| && !).  See the Perl::Critic docs for more info.
735
736     * The @GLOBALS and @BUILTINS variables are no longer exported by
737       Perl::Critic::Utils.  Use the is_perl_global() and is_perl_builtin()
738       functions instead.
739
740     * Perl::Critic::Policy::policy_parameters() has bee renamed to
741       Perl::Critic::Policy::supported_paramters().  This was an
742       undocumented feature anyway, so it shouldn't affect anyone.
743
744
745     Other Internal Changes:
746     * Perl::Critic now requires B::Keywords v1.05 or newer.
747
748     * A few internal classes have been refactored.  As a result,
749       Set::Scalar is no longer a required dependency.
750
751
752 [0.22]  Released on 2006-12-15
753
754     New Features:
755     * Introduced named severity levels: gentle, stern, harsh, cruel, brutal
756       You can use these named levels instead of the numeric ones.
757       For example: "perlcritic --severity=cruel MyModule.pm"
758       Or just:     "perlcritic --cruel MyModule.pm"
759
760     * For perlcritic, the "-List" option has been renamed to
761       "-profileproto".  The output now includes the names of the
762       parameters that each Policy supports, if any.
763
764     * Improved validation of Policy parameters in your F<.perlcriticrc>
765       Any invalid parameter now causes a fatal exception.
766
767     Major Changes:
768     * Reassigned themes for most policies.  Now there are fewer
769       themes and they are organized around programming concepts
770       instead of severity levels.  If you have assigned your own
771       themes to any Policies, they should still work as expected.
772
773     Policy Changes:
774     * ErrorHandling::RequireCarping will not complain if it can figure
775       out that the die or warn message will always end in a newline
776       ("\n").  The idea is that, if you put the newline there, you
777       don't indend for there to be any file/line/stack information
778       emitted, in which case you really don't want carp/croak.
779
780       You can restore the old strict behavior by giving the policy
781       a false value for "allow_messages_ending_with_newlines" in your
782       configuration.
783
784     Misc Changes:
785
786     Added single-letter uppercase alternatives for some perlcritic options.
787
788 [0.21_01] Released on 2006-12-03
789
790     New Policies:
791     * TestingAndDebugging::ProhibitProlongedStrictureOverride
792     * ControlStructures::ProhibitMutatingListFunctions
793
794     New Features:
795     * Say "perlcritic -List" to get an expanded listing of all Policies.
796       The format is suitable for use as your .perlcriticrc file.
797     * Say "perlcritic -doc PATTERN" to get the documentation for all
798       Policies that match m/PATTERN/imx.  This is a little easier than
799       typing in the full name of the Policy module with "perldoc".
800     * Say "perlcritic --singlepolicy PATTERN" to use one and only one
801       policy.
802     * Can now specify exceptions to Variables::ProhibitPackageVars,
803       for packages like File::Find that only interface through
804       package variables.
805
806     Bug Fixes:
807     * 21713 false positive for parens used with substr and unpack.
808     * 22890 allow Rcs keywords in POD.
809
810     Internals:
811     * Testing system overhauled.  Details on the Policy/subtest
812       framework is in t/run.t.
813     * Added Perl::Critic::Utils::words_from_string.  This is safer
814       than plain old C<split /\s+/>.
815
816 [0.21]  Released on 2006-11-05
817
818     New Policies:
819     * BuiltinFunctions::ProhibitReverseSortBlock
820     * BuiltinFunctions::ProhibitVoidGrep
821     * BuiltinFunctions::ProhibitVoidMap
822     * CodeLayout::RequireConsistentNewlines
823     * Modules::RequireFilenameMatchesPackage
824     * TestingAndDebugging::RequireTestLabels
825     * ValuesAndExpressions::ProhibitMismatchedOperators
826
827     New Features:
828     * Introduced policy "themes."  Themes are arbitrary names that can
829       be used to identify a group of related Policies.  You can select
830       your favorite policies by combining themes in a mathematic expression
831       such as "pbp * (danger + risky)".  See POD for details.
832     * perlcritic output is colorized if you have Term::ANSIColor.  This
833       only works on non-Win32 platforms.  Use -nocolor switch to disable.
834     * Say "perlcritic -count" to get just the the total number of
835       violations per file.  Use this feature to quickly identify hot-spots.
836     * Use the -only switch to choose only from policies mentioned in your
837       .perlcriticrc file.  This is useful if you usually only want to
838       work with a small subset of the policies.
839     * Default values for most of the perlcritic and Perl::Critic options
840       can now be defined in your .perlcriticrc file.  See POD for details.
841
842     Bug Fixes:
843     * 21236: wrong page number for "printing to filehandles"
844     * 21916: File handle ... wrong page reference in PBP [DUPE]
845     * 21714: false positive for capture var used in ternary condition
846     * 21718: No skip for File::Slurp in includes.t
847     * ProhibitBarewordFilehandles doesn't complain if you open
848       STDIN, STDOUT or STDERR.
849     * Parrot 40564: Subroutines::RequireFinalReturn should allow die,
850       exit, etc.
851     * Each "for" and "foreach" loop now adds one point to the McCabe
852       complexity score.
853
854     Other Stuff:
855     * The internals of Perl::Critic have been significantly refactored,
856       but should still be compatible with existing third-party Policies.
857     * Added author-only tests to the release, but disabled by default
858     * New Perl::Critic::Utils::shebang_line() method
859     * Support for filename-based policies
860     * Additional prerequisite: Set::Scalar
861     * Now requires PPI version 1.118
862
863 [0.20]  Released on 2006-09-10
864
865     Perl::Critic now requires PPI version 1.117, which fixes
866     several bugs that were introduced in version 1.116.
867
868     Bug Fixes:
869     * 21079: grep clears @SITE_POLICIES
870     * 21352: Test failures with PPI 1.117
871     * 11365: sub DESTROY detected as a builtin homonym
872
873 [0.19]  Released on 2006-08-20
874
875     New Policies:
876     * BuiltinFunctions::ProhibitStringySplit
877     * ControlStructures::ProhibitDeepNests
878     * RegularExpressions::ProhibitCaptureWithoutTest
879     * Variables::RequireLexicalLoopIterator
880
881     New Features:
882     * "perlcritic -quiet" suppresses the "source OK" message.
883     * Variables::ProhibitPunctuationVars is now configurable.
884
885     Bug Fixes:
886     * 20965: "Hard tabs used at" shouldn't check __DATA__
887     * 21070: ProhibitNoisyQuotes hates overload
888     * Punctuation variables are now exempt from ProhibitLocalVars
889
890     Other Stuff:
891     * Test coverage is now over 95%
892
893 [0.18_01]  Released on 2006-08-06
894
895     New Policies:
896     * Variables::RequireNegativeIndices
897     * InputOutput::ProhibitInteractiveTest
898     * ErrorHandling::RequireCarping
899
900     Bug Fixes:
901     * RequireTidyCode tests fail if user has custom .perltidyrc file
902     * 20612: RequirePerlTidy was ignoring HEREDOCs
903     * 20659: __END__ statement considered "unreachable"
904     * Fix for PPI::XS (no C<use overload '""'> support)
905     * Support for 'goto' in ProhibitAmpersandSigils and
906       Subroutines::RequireFinalReturn
907
908     Performance Enhancements:
909     * Introduced Perl::Critic::Document class.  This is a facade for
910       PPI::Document which internally caches search results.  This
911       reduces the running time by about 35%.  The facade should be
912       invisible, unless you are doing something really sneaky.
913     * Extraction of the 'diagnostics' information is postponed
914       until it is really needed.  Speedup has not been measured.
915     * Calls to helper-subs have been reordered for maximum efficiency.
916
917     Other Cool Stuff:
918     * Includes updated version of perlcritic mode for emacs.  See
919       "extras/perlcritic.el" for details.
920
921 [0.18]  Released on 2006-07-16
922
923     Bug Fixes:
924     * 14855: Home discovery is dangerously naive.
925     * 20060: Incorrect page numbers in ProhibitLeadingZeros
926       and RequireNumberSeparator policies.
927     * 20068: .perlrc file - inconsistent documentation
928     * 20254: "use vars qw(@EXPORT_OK)" not recognized
929     * 20463: No-case heredoc terminator incorrectly detected as lower case.
930     * ProhibitOneArgBless doesn't understand "bless {} => $class;"
931     * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
932     * ProhibitLeadingZeros was falsely hits '.0456'
933
934     Enhancements:
935     * If File::HomeDir is available, we use it to locate the
936       .perlcriticrc file.  This should help make Perl::Critic
937       more portable to Win32 platforms.  If File::HomeDir is
938       not installed, we resort to looking at the usual
939       environment variables.
940
941     Other Stuff:
942     * Added "perlcritic.el", which is a super-cool emacs minor-mode
943       that runs perl-critic on the current buffer and returns the
944       results in a sexy hot-linked "compiler" window.  You can run
945       it on demand, or have it run automatically every time you
946       save the buffer.  You can find this in the extras/ directory.
947       Thanks to Josh ben Jore for contributing this.
948
949     * Moved "Perl::Critic::TestUtils" into the installed build.  This
950       module is only used for unit-testing Perl::Critic, but we
951       are putting it in the installation so folks who want to
952       extend Perl::Critic can make use of it.
953
954 [0.17]  Released on 2006-06-13
955
956     Bug Fixes:
957     * 19836: Perl-Critic0.16 fails tests during install.  This was
958       caused by a bug in version 3.01 of Module::Pluggable.  See
959       http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
960     * Fixed bug in no-critic pragma parser.
961
962     New Policies:
963     * ValuesAndExpressions::ProhibitEscapedCharacters
964     * BuiltinFunctions::RequireSimpleSortBlock
965
966     Enhancements:
967     * Perl::Critic can export critique() as a static function.  This
968       may appeal to folks who dislike the object-oriented interface.
969
970 [0.16]  Released on 2006-05-14
971
972     Enhancements:
973     * Perl::Critic->critique() now accepts a PPI::Document as the
974       argument.  This feature creates an additional dependency on
975       Scalar::Util, but that shouldn't be a problem because it is
976       included with List::Util, which we already use.
977
978     Miscellanea:
979     * Increased PPI dependency from v1.110 to v1.112
980
981 [0.15_03] Released on 2006-05-07
982
983     Bug Fixes:
984     * The "## no critic" feature is now implemented without eval-ing
985       the code.  This keeps Perl::Critic pure and safe :)
986     * 19082: Page number for AUTOLOAD is incorrect
987
988     New Policies:
989     * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
990     * Modules::ProhibitAutomaticExportation
991     * ValuesAndExpressions::ProhibitVersionStrings
992
993 [0.15_02] Released on 2006-04-26
994
995     Bug Fixes:
996     * Reimplemented the '##no critic' pragmas to have effect on the
997       line where the violation is reported, not on the line where
998       the candidate element lives.  This is because some policies
999       may report violations that are nowhere near the element that
1000       is being evaluated.
1001     * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
1002       all emit violations for _every_ statement that violates the
1003       Policy.  This closes a loophole that allowed you to circumvent
1004       the Policy by using '## no critic' on just the first statement
1005       that violated the policy.
1006     * Fixed the workaround for the magic shebang that is inserted
1007       by EU::MM and M::B.  This had stopped working around version 13.
1008     * Fixed -noprofile option on 'perlcritic'.  This also had stopped
1009       working at some point.
1010
1011 [0.15_01] Released on 2006-04-16
1012
1013     Enhancements:
1014     * Added diagnostic messages if the .perlcriticrc contains entries
1015       for Policy modules that don't seem to exist.
1016     * Now you can specify which policies to disable with the
1017       "## no critic" pseudo-pragmas.  This feature is still
1018       experimental.  See docs for details.
1019     * perlcritic's directory searching now skips backup files, such
1020       as *.swp, *.bak and *~.  It also ignores version control system
1021       directories, and the blib directory in module build directories.
1022
1023     Bug Fixes:
1024     * 18386: Bad example in POD for Documentation::RequirePodSections
1025     * 18670: Test failure if Perl::Tidy is not installed
1026     * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
1027     * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
1028       which are commonly used with Getopt::Long.
1029
1030     New Policies:
1031     * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
1032     * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
1033
1034     Miscellanea:
1035     * All spurrious options for `perlcritic` are now fatal.
1036     * Changed several of the -verbose formats to be more readable.
1037     * Explicit -severity option now overrides -[12345] shortcuts instead
1038       of being the other way around.
1039
1040
1041
1042 [0.15] Released on 2006-03-26
1043
1044     Bug Fixes:
1045     * 17964: Insists my code is not tidy (may not be fixed for all cases)
1046
1047 [0.14_02] Released on 2006-03-19
1048
1049     Bug Fixes:
1050     * 15653: False positive in OneArgSelect (fixed for real this time)
1051
1052     New Policies:
1053     * ClassHierarchies::ProhibitAutoloading
1054     * Documentation::RequirePodSections
1055     * InputOutput::RequireBracedFileHandleWithPrint
1056     * ValuesAndExpressions::ProhibitMixedBooleanOperators
1057     * Variables::RequireInitializationForLocalVars
1058
1059 [0.14_01] Released on 2006-03-05
1060
1061     Bug Fixes:
1062     * 14731: False positive: Builtin function called with parens
1063     * 17554: False positive in CodeLayout::RequireTrailingCommas
1064
1065     New Policies:
1066     * ClassHierarchies::ProhibitExplicitISA
1067     * InputOutput::ProhibitReadlineInForLoop
1068     * Miscellanea::ProhibitFormats
1069     * Miscellanea::ProhibitTies
1070     * Variables::ProhibitConditionalDeclarations
1071
1072 [0.14] Released on 2006-01-29
1073
1074     More documentation edits.
1075
1076     New Policies:
1077     * Documentation::RequirePodAtEnd
1078     * Subroutines::ProtectPrivateSubs
1079     * Variables::ProhibitMatchVars
1080     * Variables::ProtectPrivateVars
1081
1082     Bug Fixes:
1083     * 15295: "## no critic" pragmas too aggresive on compound statements.
1084     * t/01_config.t failed in the presence of third-party policies
1085
1086 [0.13_05] Not released
1087
1088     More documentation edits.
1089
1090     Implemented workaround for failing pod_coverage tests.
1091
1092     Bug Fixes:
1093     * 16906:  tr/// created false-postives with RegularExpression polices.
1094
1095 [0.13_04] Released on 2005-12-31
1096
1097     Moved DEVELOPER.pod file into the Perl/Critic dir.
1098
1099     More documentation edits.
1100
1101 [0.13_03] Released on 20051230
1102
1103     perlcritic now prints 'source OK' if it doesn't find any
1104     violations.  This gives folks a warm fuzzy feeling.
1105
1106     Tweaked some test cases that were failing on my Solaris
1107     environment at work.
1108
1109 [0.13_02] Released on 2005-12-29
1110
1111     Fixed Config to recognize fully-qualified module names in the
1112     .perlcriticrc file.
1113
1114     Various documentation edits.
1115
1116 [0.13_01] Released on 2005-12-28
1117
1118     Replaced 'priority' concept with 'severity'.  Now each Policy module
1119     has a predefined severity level ranging from 1 to 5.  By default,
1120     perlcritic only reports the most severe violations.  You can adjust
1121     the severity threshold at the command line, and you can change
1122     the severity for any Policy using the config file.
1123
1124     Chris implemented the applies_to() mechanism, which allows each Policy
1125     class to declare the types of PPI elements that it wants to examine.
1126     When traversing the document, Perl::Critic invokes the Policy only
1127     for elements that are of the correct type.  This improves performance
1128     by about 33%.
1129
1130     Perl::Critic now uses a Plugin architecture to automatically
1131     discover Policy modules.  So if you have custom Policies, all you
1132     have to do is install them in the Perl::Critic::Policy namespace --
1133     no need to add anything to your .perlcriticrc file.  If you write
1134     policies in a different namespace, you can configure that too.  See
1135     the Perl::Critic::Config docs for details.
1136
1137     New Policies:
1138     * Modules::RequireEndWithOne
1139     * NamingConventions::ProhibitAmbiguousNames
1140     * References::ProhibitDoubleSigils
1141     * Subroutines::RequireFinalReturn
1142     * Subroutines::ProhibitAmpersandSigils
1143     * Subroutines::ProhibitExcessComplexity
1144     * TestingAndDebugging::ProhibitNoStrict
1145     * TestingAndDebugging::ProhibitNoWarnings
1146
1147     Bug Fixes:
1148     * 15101: Plugin architecture improves support for 3rd-party code
1149     * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
1150     * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
1151     * 16288: Empty lists caused a fatal error RequireTrailingCommas
1152     * 15653: Fixed false positive in OneArgSelect.
1153
1154 [0.13] Released on 2005-10-31
1155
1156     Official release of 0.12_03.  No code major changes.
1157
1158 [0.12_03] Not released
1159
1160     Renamed -Policy option to -include.  Added -exclude to give the
1161     opposite effect.
1162
1163     Refactored constructor of Perl::Critic.  Now, most of the work
1164     is delegated to Perl::Critic::Config.  I'm not sure I like how
1165     this turned out, but we'll see how it goes.
1166
1167     Renamed some Policy modules to be a bit more comprehensible.  Note
1168     that you may need to change your .perlcriticrc file accordingly.
1169     I also suggest removing your current Perl::Critic installation
1170     before installing this one.
1171
1172     Name Changes:
1173     * ProhibitUnpackagedCode => RequireExplicitPackage
1174     * RequireQuotedWords     => ProhibitQuotedWordLists
1175
1176     Improved error message when Perl::Critic dies because PPI can't
1177     parsee the input code.
1178
1179     Changed output of -help to be more terse.
1180
1181     Edited POD.
1182
1183 [0.12_02] Not released
1184
1185     Added -Policy option to perlcritic.  The idea is to provide a
1186     compact interface for selecting Policy modules at the command-line.
1187     This feature is experimental and subject to change.
1188
1189     Added a warning message if -verbose value looks strange.  In most
1190     applications, the -verbose option does not require a value, so people
1191     might be puzzled when they write 'perlcritic -verbose my_file.pm' and
1192     nothing seems to happen.
1193
1194     Command-line options to perlcritic are now case-sensitive.  This
1195     makes it easier to abbreviate options that start with the same letters
1196     (e.g. 'Version' and 'verbose')
1197
1198     Fixed the new Policy modules that were misnamed and misplaced in the
1199     previous distribution.
1200
1201 [0.12_01] Not released
1202
1203     Rewrote some of the ControlStructures and BuiltinFunction
1204     policies to be simpler (and probably a little faster).
1205
1206     Edited POD.  Fixed some typos.  Added PREREQUISITES section
1207     to Perl::Critic documentation.
1208
1209     Fixed the -verbose FORMAT option so that you can put metachars
1210     in the FORMAT specification.  If using perlcritic, be careful to
1211     protect them from getting munged by the shell first.
1212
1213     Replaced ProhibitRequireStatements with RequireBarewordIncludes
1214     module. Courtesy of Chris Dolan <cdolan@cpan.org>
1215
1216     Added configuration to ProhibitInterpolationOfLiterals so that
1217     certain flavors of quotes can be exempt.  This is for folks who
1218     have configured their editor to use special syntax highlighting
1219     for certain kinds of strings (SQL, for example).
1220
1221     perlcritic now accepts multiple file arguments, so now you can
1222     critique your entire distribution in one shot.  As a result, the
1223     output-formats have changed slightly.
1224
1225     New Policy modules:
1226     * BuiltinFunctions::ProhibitLvalueSubstr
1227     * BuiltinFunctions::ProhibitSleepViaSelect
1228     * ClassHierarchies::ProhibitOneArgBless
1229     * CodeLayout::RequireTrailingCommas
1230     * CodeLayout::RequireQuotedWordLists
1231     * InputOutput::ProhibitTwoArgOpen
1232     * InputOutput::ProhibitOneArgSelect
1233     * InputOutput::ProhibitBarewordFileHandles
1234     * Miscellanea::RequireRcsKeywords
1235     * Modules::RequireVersionVar
1236     * RegularExpressions::RequireExtendedFormatting
1237     * RegularExpressions::RequireLineBoundaryMatching
1238
1239
1240     Bug fixes:
1241     14923: 'require' is now permitted. See RequireBarewordIncludes.
1242     15022: Fixed false-positives when keywords are used as hash keys.
1243     15023: Fixed spurious Violations by removing magic shebang.
1244     15031: Fixed spelling mistakes (and probably added some new ones).
1245     15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
1246
1247 [0.12] Released 2005-10-10
1248
1249     Redesigned the 'verbose' feature.  Now the output format
1250     can be user-defined using a sprintf-like specification.
1251     perlciritc also has a predefined output format that is
1252     compatible with grep mode in editors like vim and emacs.
1253
1254     'return' is now exempt from ProhibitParensWithBuiltins.  I may
1255     extend this exemption to all unary functions.
1256
1257     Edited POD. Added a super brief description of each policy
1258     in the main Perl::Critic documentation.  Added details about
1259     editor integration.
1260
1261     Additional Prerequisites:
1262     * String::Format
1263
1264 [0.11] Not released
1265
1266     The internal dynamics and API of Perl::Critic have changed
1267     considerably.  The result is a 300% increase in performance.
1268     See the POD in Perl::Critic::Policy for details.
1269
1270     New Features:
1271     * Added -verbose option to put more stuff in the output.  In the
1272       extreme, you can get the POD from Policy attached to each
1273       and every violation.
1274
1275     Additional Prerequisites:
1276     * IO::String
1277     * Pod::PlainText
1278
1279 [0.10] Released 2005-10-05
1280
1281     Fixed stupid bug in newest Policy modules.  They were returning
1282     PPI objects instead of Perl::Critic::Violation objects.  Doh!
1283
1284     Fixed test scripts to prevent failures if the user already has a
1285     .perlcriticrc file.
1286
1287     'ProhibitHardTabs' now allows leading tabs by default.
1288
1289     Put the Changes file in reverse-chronological order, so the most
1290     recent stuff is easy to find at the top of the file
1291
1292 [0.09] Released 2005-10-04
1293
1294     Fixed several bugs:
1295     * 14810: Now you are allowed to create your own 'import' function,
1296              since this is frequently done with fancy modules.
1297     * 14817: Parens, brackets, and braces are now excluded from
1298              'ProhibitNoisyQuotes' since they look better in quotes anyway.
1299     * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
1300     * 14899: Object methods with the same name as a built-in can
1301              be called with parens (ProhibitParensWithBuiltins).
1302     * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
1303              See documentation for explanation.
1304     * 14855: Partially fixed home directory discovery.  Still not
1305              completely portable, but at least doesn't create warnings.
1306
1307     New features:
1308     * 14734: Limit for number separators is now configurable
1309
1310     New Policy modules:
1311     * CodeLayout::ProhibitHardTabs
1312     * ControlStructures::ProhibitUnlessBlocks
1313     * ControlStructures::ProhibitUntilBlocks
1314     * ControlStructures::ProhibitCStyleForLoops
1315
1316     Changed the syntax for the magic comments.  Adam had the
1317     idea of using a pragma-like notation.  I liked it.
1318
1319 [0.08_2] Released 2005-09-27
1320
1321     Fixed problems with Perl::Critic::Config that caused File::Spec
1322     to emit 'uninitialized value' warnings during the build.
1323
1324     Added 1 Policy module contributed by Graham TerMarsch
1325
1326     Switched from File::Spec::Functions to plain File::Spec because
1327     I think its usage is more common.
1328
1329     Removed 'FindBin' from the test files so I can be sure that the
1330     right libraries are getting loaded.  This means I'll have to
1331     use the -l option with C<prove>.
1332
1333     Edited more POD.
1334
1335 [0.08_01] Not released
1336
1337     Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
1338     object method calls that have the same name as a builtin functions.
1339
1340     Introduced magical comments that allow developers to configure
1341     Perl::Critic on-the-fly from within their code.
1342
1343     Added META.yml files and POD tests to the build.  I did this
1344     mostly just to boost the Kwalitee score on CPANTS.
1345
1346     Switched from "Config::Std" to "Config::Tiny" because it doesn't
1347     require those fancy Damian modules that don't seem to work on
1348     some older versions of Perl.
1349
1350 [0.07] Released on 2005-09-21
1351
1352     Fixed bugs in the ProhibitCascadingIfElse policy.
1353
1354     Added ProhibitExplicitReturnUndef policy
1355
1356     Made ProhibitUnpackagedCode configurable so you can exempt scripts,
1357     which typically don't have an explicit 'package' statement.
1358
1359     ProhibitPackageVars policy now exempts vars in ALL_CAPS.  This
1360     is to permit common package variables like @EXPORT and $VERSION.
1361
1362     Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
1363     the so-called string form doesn't really exist.  Now called
1364     "RequireBlockGrep" and "RequireBlockMap"
1365
1366     Corrected documentation on defining Policy names within the
1367     configuration file.  This still isn't very clear and needs
1368     to be rewritten.
1369
1370     Perl::Critic now requires PPI version 1.003, which has a few bug
1371     fixes of its own.
1372
1373     Rewrite some code just to make Perl::Critic more self-compliant.
1374
1375     Added test cases to verify the configuration functionality.  These
1376     are not completely thorough and need more work.
1377
1378 [0.06] Released on 2005-09-17
1379
1380     Now called 'Perl::Critic'.
1381
1382     Added 4 new policy modules.
1383
1384     Fixed bugs in build process.
1385
1386     Added support for Module::Build.
1387
1388 [0.05] Released on 2005-09-17
1389
1390     End of 'Perl::Review' releases.  I have changed the name to
1391     'Perl::Critic' to avoid possible confusion with "The Perl Review"
1392     magazine.
1393
1394 [0.04] Released on 2005-09-14
1395
1396     Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
1397
1398 [0.03] Released on 2005-09-13.
1399
1400     Fixed some POD links.
1401
1402     Removed test cases for missing policy module.
1403
1404 [0.02] Released on 2005-09-13.
1405
1406     Major overhaul based on feedback from Perl community.
1407
1408     Factored coding standards into separate modules (known as
1409     Policies).  The idea here is to allow other developers to easily
1410     contribute additional coding standards.
1411
1412     Reworked Perl::Review into a simple engine for loading and running
1413     Policy modules.
1414
1415     Gave perlreview a command-line interface and configuration file
1416     for selecting which Policy modules to use.
1417
1418 [0.01] Released on 2005-08-16.
1419
1420     Initial version.
1421
1422 ##############################################################################
1423 #      $URL$
1424 #     $Date$
1425 #   $Author$
1426 # $Revision$
1427 ##############################################################################
1428
1429 # ex: set ts=8 sts=4 sw=4 tw=78 ft= expandtab shiftround :