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