--- /dev/null
+[1.088] Released on 2008-07-03
+
+ New Policies
+ * ErrorHandling::RequireCheckingReturnValueOfEval
+
+ Policy Changes:
+ * ValuesAndExpressions::ProhibitLeadingZeros now accepts octal numbers
+ for the Unix permissions argument to chmod, dbmopen, mkdir, sysopen, or
+ umask, by default. Use the "strict" option to get the old behavior.
+ RT #31977.
+ * Due to the consensus at YAPC::NA 2008,
+ Variables::ProhibitUnusedVariables default severity has been raised to
+ medium/3.
+
+ Minor Changes:
+ * The perlcritic "--Version" option is now "--version" in order to act
+ like the rest of the world.
+
+[1.087] Released on 2008-06-21
+
+ Policy Changes:
+ * CodeLayout::ProhibitParensWithBuiltins no longer complains about
+ sort(foo(@x)).
+ * TestingAndDebugging::RequireUseWarnings will not complain about files
+ that contain a "use 5.005" statement or similar for perls prior to 5.6.
+ Lesson of the day: computer conferences where you can meet in the real
+ world can clarify conversations greatly. Good to finally meet you Adam.
+ * InputOutput::ProhibitTwoArgOpen similarly will not complain if there's
+ a "use/require 5.005" statement in the file. RT #34385.
+
+ Bug fixes:
+ * Perl::Critic can now critique a file named "0". However, PPI will give
+ a parse error until the next version comes out. Fixes RT #36127.
+ * Moved detection of the lack of any enabled Policies from P::C::Config
+ to Perl::Critic. This was causing the perlcritic.t in Parrot to fail.
+ Note, however, there are plans afoot to change how Perl::Critic is
+ configured and things that depend upon that may break. Please contact
+ users@perlcritic.tigris.org and tell us how you're using P::C::Config
+ directly so that we can take your needs into account.
+
+[1.086] Released on 2008-06-12
+
+ Policy Changes:
+ * NamingConventions::ProhibitAmbiguousNames now specifies the name that
+ it had problems with in its violation descriptions.
+
+ Bug fixes:
+ * The color option wasn't being correctly set from a .perlcriticrc.
+ RT #36569.
+
+ Minor changes:
+ * --colour is now a synonym for --color.
+
+[1.085] Released on 2008-06-07
+
+ New Policies:
+ * Documentation::RequirePackageMatchesPodName
+
+ Policy Changes:
+ * Variables::ProhibitUnusedVariables detects a few more cases. It's
+ still very limited, though.
+
+ Bug fixes:
+ * ControlStructures::ProhibitUnreachableCode didn't notice "until" was an
+ conditional expression.
+
+ Minor documentation updates.
+
+[1.084] Released on 2008-05-24
+
+ New Features:
+ * perlcritic now supports a --list-themes option.
+ * You can specify the maximum number of violations you want per Policy
+ per document. Developers can give a default value for this for a
+ Policy by overriding default_maximum_violations_per_document().
+ See RequireUseStrict and ProhibitMagicNumbers for examples.
+
+ Policy Moved:
+ * The ValuesAndExpressions::ProhibitMagicNumbers policy has been moved
+ from Perl::Critic::More into the primary Perl::Critic distribution.
+
+ New Policies:
+ * Variables::ProhibitUnusedVariables (very dumb, limited initial
+ implementation.)
+ * ControlStructures::ProhibitLabelsWithSpecialBlockNames
+ Contributed by Mike O'Regan. Kickin' ass, Mike.
+
+ Policy Changes:
+ * ControlStructures::ProhibitUnreachableCode now handles the perl 5.10
+ "//" and "err" operators. RT #36080
+ * InputOutput::RequireBriefOpen now ignores opens of STDIN, STDOUT,
+ and STDERR. You're generally trying to make long-lasting global
+ effects when manipulating these. (RT #35774)
+ * RegularExpressions::ProhibitUnusualDelimiters now supports an
+ "allow_all_brackets" option.
+ * RegularExpressions::RequireBracesForMultiline now supports an
+ "allow_all_brackets" option.
+ * TestingAndDebugging::RequireUseStrict now accepts "use Moose::Role"
+ as equivalent to "use strict". (RT #34838)
+ * TestingAndDebugging::RequireUseWarnings now accepts "use Moose::Role"
+ as equivalent to "use warnings". (RT #34838)
+ * ValuesAndExpressions::ProhibitMagicNumbers now accepts constant
+ subroutines.
+ * Variables::ProhibitMatchVars no longer detects "use English;".
+ This problem is detected in a more clear way by
+ Modules::RequireNoMatchVarsWithUseEnglish.
+ * Variables::ProhibitPerl4PackageNames no longer complains about
+ $'/$POSTMATCH. RT #36059
+ * Variables::RequireLocalizedPunctuationVars now allows the use of "my".
+ RT #33937
+
+ Bug Fixes:
+ * No longer falls over if a single file has a parse error.
+
+ New Developer Features:
+ * If a document specifies a minimum perl version, e.g. "use 5.008003",
+ P::C::Document::highest_explicit_perl_version() will tell you what it
+ is.
+ * The parameter to P::C::Policy::initialize_if_enabled is now a
+ P::C::PolicyConfig object instead of a hash reference.
+
+ Minor Changes:
+ * LOTS of documentation updates.
+ * A few more statistics are emitted by perlcritic with the --statistics
+ option.
+ * perlcritic --profile-proto now includes policy abstracts in its
+ output.
+
+ Prerequisites:
+ * Now depends upon PPI 1.203.
+ * New dependency upon version.
+
+[1.083_006] Released on 2008-05-20
+[1.083_005] Released on 2008-05-19
+[1.083_004] Released on 2008-05-18
+[1.083_003] Released on 2008-05-17
+[1.083_002] Released on 2008-05-17
+[1.083_001] Released on 2008-04-13
+
+ Changes summarized into 1.084 above. For exact details, see Changes in
+ 1.083_006 on BackPAN.
+
+[1.082] Released on 2008-03-08
+
+ New Features:
+ * A new metadata system for defining policy parameters/options has been
+ added. This makes the life of policy authors easier because
+ configuration validation and parsing can be taken care of
+ automatically, in most cases. This allows greater integration with
+ IDEs and allows the perlcritic "--profile-proto" option to produce
+ better output.
+
+ Note: This change does NOT REQUIRE ANY CHANGES to policies outside of
+ this distribution; they should continue to work as is. However, use
+ of this facility can reduce the size of your code and provide the
+ means for tools to discover more about your policy. If this change
+ does break any of your policies, please let us know.
+
+ To learn how to take advantage of this facility, read
+ Perl::Critic::DEVELOPER and look at the source of any of the
+ configurable policies included in this distribution.
+
+ There is a discussion of the design considerations for this facility in
+ the source repository under doc/PolicyParameter_Notes.pod.
+
+ * Added support for "criticism-fatal" option in your perlcriticrc
+ file. This will be used by the criticism pragma to cause execution
+ to abort if the file contains any violations.
+
+ New Policy:
+ * Module::RequireNoMatchVarsWithUseEnglish
+
+ Policy Changes:
+ * Added an allow_last_statement_to_be_comma_separated_in_map_and_grep
+ option to ValuesAndExpressions::ProhibitCommaSeparatedStatements.
+ Partial response to http://rt.cpan.org/Public/Bug/Display.html?id=27654.
+ * ControlStructures::ProhibitPostfixControls gains the ability to have
+ the flow control statements allowed to be modified. This in response
+ to RT #29540.
+ * TestingAndDebugging::RequireUseStrict now accepts "use Moose" as
+ equivalent to "use strict".
+ * TestingAndDebugging::RequireUseWarnings now accepts "use Moose" as
+ equivalent to "use warnings".
+
+ Bug Fixes:
+ * RT #31281 perlcritic doesn't recognize "#!/bin/env perl" shebang
+ * Replace usage of Unicode property escapes with POSIX character classes
+ order to restore 5.6 compatability.
+ * RT #30388 ValuesAndExpressions::ProhibitVersionStrings complained
+ about numbered directories in "use lib".
+ * Fixed handling of badly behaved spelling programs in PodSpelling.
+
+[1.081_006] Released on 2008-03-02
+[1.081_005] Released on 2007-12-29
+[1.081_004] Released on 2007-12-20
+[1.081_003] Released on 2007-12-16
+[1.081_002] Released on 2007-12-16
+[1.081_001] Released on 2007-12-15
+
+ Changes summarized into 1.082 above. For exact details, see Changes in
+ 1.081_006 on BackPAN.
+
+[1.080] Released on 2007-11-11
+
+ New Features:
+ * Allow a "## no critic" statement after a shebang on line 1 of a
+ file. This allows users to block violations that apply to
+ whole files and still allow shebangs.
+
+ New Policies: (funded by a Perl Foundation grant)
+ * InputOutput::ProhibitExplicitStdin
+ * RegularExpressions::ProhibitFixedStringMatches
+ * RegularExpressions::RequireBracesForMultiline
+ * RegularExpressions::ProhibitUnusualDelimiters
+ * RegularExpressions::ProhibitUnusedCapture
+ * RegularExpressions::ProhibitComplexRegexes
+ * RegularExpressions::ProhibitSingleCharAlternation
+ * RegularExpressions::ProhibitEscapedMetacharacters
+ * RegularExpressions::ProhibitEnumeratedClasses
+ * InputOutput::RequireBriefOpen
+ * InputOutput::RequireCheckedSyscalls
+
+ Other New Policies
+ * ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
+
+ Policy Changes:
+ * Variables::ProhibitConditionalDeclarations now permits you to local-ize
+ variables in conditional declarations. This makes sense, since
+ C<local> is actually a variable modifier, rather than a declaration.
+ Thanks to David Golden for reporting this.
+
+ New Developer Features:
+ * Perl::Critic::Utils::PPIRegexp encapsulates interaction with
+ the PPI Regexp token classes. Those classes have very sparse
+ APIs, so this package hides away the ugly fiddling with PPI
+ internals.
+ * Added a new optional_modules parameter for the .run syntax.
+
+ Bug fixes:
+ * PPI::Structure::List can now contain multiple children,
+ so P::C::Utils::parse_arg_list() needs to handle it.
+
+ This was done in the process of fixing
+ http://rt.cpan.org/Ticket/Display.html?id=24924, which was a problem
+ with TestingAndDebugging::RequireTestLabels.
+
+ * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls wasn't resetting
+ chain length when it ran into the end of a sub-expression.
+
+ http://rt.cpan.org/Public/Bug/Display.html?id=30040
+
+ * ValuesAndExpressions::ProhibitCommaSeparatedStatements was reporting
+ false positives when builtins which accept both no and multiple
+ arguments were involved.
+
+ http://rt.cpan.org/Public/Bug/Display.html?id=27654
+
+ Internals:
+ * Removed all use of Carp in favor of exceptions.
+
+ Prerequisites:
+ * Now requires PPI 1.201. A number of workarounds for PPI bugs have been
+ removed.
+ * New dependency upon Exception::Class.
+
+ Installation:
+ * Use Devel::CheckOS to see whether Perl::Critic is being installed on
+ a Solaris system and warn about tar(1) chopping file names off if it
+ is.
+
+[1.079_003] Released on 2007-10-22
+[1.079_002] Released on 2007-10-21
+[1.079_001] Released on 2007-10-09
+
+ Changes summarized into 1.080 above. For exact details, see Changes in
+ 1.079_003 on BackPAN.
+
+[1.078] Released on 2007-09-19
+
+ Restore Perl::Critic::TestUtils::should_skip_author_tests() and
+ get_author_test_skip_message(). Some Perl::Critic add-on distributions
+ are using them.
+
+[1.077] Released on 2007-09-15
+
+ Note: if you don't have any problems installing Perl::Critic 1.076, there
+ is no need to upgrade to this version. There are no functionality
+ changes. This release only contains changes related to installation that
+ a few people were experiencing.
+
+ Minor changes:
+ * Removed build-time use of Readonly, again, due to problems some people
+ were having when trying to compile the code by hand, rather than using
+ CPAN(PLUS)?.
+ * Don't run author tests if there's a .svn directory present because
+ users who grabbed the code from the source repository were executing
+ them and getting failures.
+ * Don't generate optional, module-hiding test wrappers if author tests
+ are not enabled.
+
+
+[1.076] Released on 2007-09-07
+
+ It appears from reports on the 1.075_001 release that the subroutine
+ sigils were indeed the problem. Release to the general populace.
+
+
+[1.075_001] Released on 2007-09-06
+
+ Bug Fixes:
+ Undo the changes in 1.073 and 1.074. Instead, stop using the subroutine
+ sigil in import and export lists. It is suspected that the problem lies
+ with Exporter stripping off ampersands.
+
+[1.074] Released on 2007-09-04
+
+ Bug Fixes:
+ Repeat the Makefile.PL change on
+ t/generate_without_optional_dependencies_wrappers.PL.
+ I love CPAN Testers.
+
+[1.073] Released on 2007-09-04
+
+ Bug Fixes:
+ Work around problems with the combination of Exporter & Readonly in
+ Makefile.PL on some machines.
+
+[1.072] Released on 2007-09-03
+
+ Bug Fixes:
+ * The Makefile generated by Makefile.PL was not syntactically correct
+ according to some versions of Solaris. Thanks to Diab Jerius
+ (DJERIUS) for discovery and testing.
+ * Fixed mis-definition of "quiet" value for the "--profile-strictness"
+ option.
+ * Enhanced testing with the absence of optional modules.
+
+[1.071] Released on 2007-08-24
+
+ The "Brown Paper Bag" Release
+
+ Bug Fixes:
+ * Tests would not pass in environments that did not have all optional
+ dependencies installed.
+
+[1.07] Released on 2007-08-21
+
+ New Policies: (funded by a Perl Foundation grant)
+ * BuiltinFunctions::ProhibitBooleanGrep
+ * BuiltinFunctions::ProhibitComplexMappings
+ * Documentation::PodSpelling
+ * InputOutput::ProhibitJoinedReadline
+ * Subroutines::ProhibitManyArgs
+ * Subroutines::RequireArgUnpacking
+ * ValuesAndExpressions::ProhibitImplicitNewlines
+ * Variables::RequireLocalizedPunctuationVars
+
+ Other New Policies
+ * Subroutines::ProhibitNestedSubs
+
+ New Features:
+ * The "perlcritic --profile-proto" output now includes the "add_themes"
+ parameter for each policy.
+ * The perlcritic "--strict-profile" option has been replaced with a
+ "--profile-strictness" option. This new option takes values of "warn"
+ (the default), "fatal", and "quiet", which controls what happens with
+ ignorable problems in a .perlcriticrc file.
+
+ New Developer Features:
+ * Perl::Critic::Policy now has an overridable initialize_if_enabled()
+ method which allows a Policy to perform expensive initialization after
+ it has been determined whether the user has it enabled or not. Also,
+ this method allows a Policy to say that it should be disabled
+ regardless of what the user says.
+
+ Actually, use of this method is now encouraged over using a
+ constructor.
+
+ Other Stuff:
+ * Now requires the Readonly module in order to be more self-compliant.
+
+[1.061] Released on 2007-07-24
+
+ Bug Fixes:
+ * Fix P::C::Theme-- Exporter in Perl 5.6 does not export import(), so you
+ must subclass it. *sigh*
+ * Fix P::C::Config::_validate_and_save_theme()-- eval of an empty string
+ does not reset $@/$EVAL_ERROR in Perl 5.6.
+
+ Big thanks to Anirvan Chatterjee for identifying and helping debug these
+ issues.
+
+[1.06] Released on 2007-06-27
+
+ New Features:
+ * perlcritic now emits errors for all the problems it can find for the
+ global options in the command-line parameters and .perlcriticrc file,
+ rather than bailing on the first one it encounters.
+
+ * perlcritic now has a "--strict-profile" option which will make warnings
+ about problems in a profile fatal.
+
+ * perlcritic now has a "--statistics-only" option which suppresses the
+ display of individual violations and only shows the additional output
+ produced by the "--statistics" option.
+
+ Feature requests:
+ * A value for "color" can now be specified in a .perlcriticrc.
+ http://rt.cpan.org/Ticket/Display.html?id=24877
+
+ New Policies:
+ * ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
+ As suggested in http://rt.cpan.org/Ticket/Display.html?id=23290.
+ * ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
+ * Modules::ProhibitExcessMainComplexity
+ As suggested in http://rt.cpan.org/Ticket/Display.html?id=24699
+
+ Minor changes:
+ * The perlcritic "--profile-proto" option now emits the short names for
+ policies, rather than the full ones.
+
+ * The "-profileproto" and "-singlepolicy" options have been renamed to
+ "-profile-proto" and "-single-policy" in order to make the growing
+ number of command-line options comprehensible. The change of
+ "singlepolicy" also affects your F<.perlcriticrc> file.
+
+[1.053] Released on 2007-06-02
+
+ *DEVELOPMENT RELEASE*
+
+ Bug Fixes:
+ Fixed bug in 15_statustics.t test script, which caused the build
+ to fail on machines that don't have Perl::Tidy installed.
+
+[1.052] Released on 2007-06-01
+
+ *DEVELOPMENT RELEASE*
+
+ New Features:
+ * perlcritic now emits a summary about the scanned code when enabled by
+ the "-statistics" option.
+
+ Policy Enhancements:
+ * InputOutput::ProhibitBacktickOperators can now be configured to only
+ check in void contexts.
+
+ Bug Fixes:
+ * 27073: False positive in RequireUpperCaseHeredocTerminator
+ * 27065: CodeLayout::ProhibitTrailingWhitespace breaks under Perl 5.6.1
+ * 26462: ControlStructures::ProhibitCascadingIfElse pod typo
+ * ValuesAndExpressions::ProhibitCommaSeparatedStatements was complaining
+ about multiple values in the list to be iterated over by a foreach loop.
+ * Corrected PBP page numbers for some policies (Quinn Weaver).
+
+[1.051] Released on 2007-04-12
+
+ *DEVELOPMENT RELEASE*
+
+ No new policies.
+ No particular bug fixes.
+
+ Internals:
+ * Added several new utility functions to support the StricterSubs distro.
+ Also, some of the existing functions in Perl-Critic-Utils have
+ changed in ways that might break your custom policies.
+
+ Miscellanea:
+ * Updated Emacs plugin (Courtesy Josh ben Jore).
+ See extras/perlcritic.el for details.
+ * Added copy of BBEdit plugin (Courtesy of Josh Clark).
+ See extras/perl_critic_for_bbedit-1_0.zip for details
+
+[1.05] Released on 2007-03-19
+
+ Bug Fixes:
+ * 25557: t/20_policy_prohibittrailingwhitespace.t fails on Perl 5.8.0
+
+[1.04] Released on 2007-03-18
+
+ Bug Fixes:
+ * 25008: Subroutines::RequireFinalReturn should allow "throw"
+ * 25085: False Positive - Heredoc terminator must be quoted
+ * 18423: VERSION check does not notice Readonly::Scalar version
+ * 25449: Proposal of $VERSION declaration (DUPLICATE)
+
+ New Policies:
+ * CodeLayout::ProhibitTrailingWhitespace
+ * ValuesAndExpressions::ProhibitCommaSeparatedStatements
+ * Variables::ProhibitPerl4PackageNames
+
+ Policy Enhancements:
+ * Subroutines::RequireFinalReturn can now be configured to recognize
+ your custom functions that behave like "die" or "exit".
+ * Documentation::RequirePodSections can be configured to match
+ Module::Starter:PBP or to really match the PBP book.
+
+[1.03] Released on 2007-02-13
+
+ Bug Fixes:
+ * Fixed a few more problems with the %f, %F, and %r format escapes.
+ * I forgot to put Conway's perlcriticrc file in the MANIFEST. Sorry.
+
+ Interface Changes:
+ * Perl::Critic::Utils automatically exports everything. However,
+ this is deprecated. In the future, you must request your exports.
+
+ Policy Changes:
+ * Duplicate violations of RequireExcplicitPackage are now squelched,
+ in the same way as RequireUseStrict and RequireUseWarnings.
+
+[1.02] Released on 2007-02-11
+
+ Bug Fixes:
+ * "undef" incorrectly triggered ProhibitMutatingListFunctions.
+ * 24876: %f and %F escapes not working in custom "verbose" format strings.
+ * 24875: Documentation bug in TestingAndDebugging::ProhibitNoStrict
+
+ New Policies:
+ * InputOutput::RequireCheckedOpen
+ * InputOutput::RequireCheckedClose
+
+ Other Cool Stuff:
+ * Added Conway's own suggested Perl::Critic configuration as
+ examples/perlcriticrc-conway.
+
+ * See the examples/ directory for some neat demonstrations of using
+ the Perl::Critic API. Contributed by Elliot Shank.
+
+ Interface Changes:
+ * Perl::Critic::Utils no longer exports anything by default. Policies
+ outside the distribution will need to specify what exactly they need
+ from this module. There are a number of tags that can be used in
+ addition to individual imports.
+
+[1.01] Released on 2007-01-24
+
+ PRODUCTION RELEASE: You may now consider the public Perl::Critic
+ API as "stable." Future minor releases will focus on bug fixes,
+ new policies, and internal refactoring.
+
+ Bug Fixes:
+ * Fixed memory leak. This was reported by the Parrot team at
+ http://rt.perl.org/rt3/Ticket/Display.html?id=41230
+
+[0.23] Released on 2007-01-19
+
+ Bug Fixes:
+ * 23994: Test 56 in t/05_utils.t of Perl::Critic v0.22 fails
+ * 24005: test 95 in t/13_bundled_policies fails in 0.22
+
+
+ Groovy New Features:
+ * Added '%F' to the Violation format specifications. This will
+ give you just the name of file where the violation occurred
+ (i.e. without the path).
+
+ * Improved validation of .perlcriticrc file. An invalid
+ default setting will now cause a fatal exception. A
+ strange-looking policy name will cause a warning.
+
+
+ Interface Changes:
+ * The syntax for theme expressions has changed. Instead of using
+ mathematical operators qw(+ * -) you must now use the logical
+ operators qw(|| && !). See the Perl::Critic docs for more info.
+
+ * The @GLOBALS and @BUILTINS variables are no longer exported by
+ Perl::Critic::Utils. Use the is_perl_global() and is_perl_builtin()
+ functions instead.
+
+ * Perl::Critic::Policy::policy_parameters() has bee renamed to
+ Perl::Critic::Policy::supported_paramters(). This was an
+ undocumented feature anyway, so it shouldn't affect anyone.
+
+
+ Other Internal Changes:
+ * Perl::Critic now requires B::Keywords v1.05 or newer.
+
+ * A few internal classes have been refactored. As a result,
+ Set::Scalar is no longer a required dependency.
+
+
+[0.22] Released on 2006-12-15
+
+ New Features:
+ * Introduced named severity levels: gentle, stern, harsh, cruel, brutal
+ You can use these named levels instead of the numeric ones.
+ For example: "perlcritic --severity=cruel MyModule.pm"
+ Or just: "perlcritic --cruel MyModule.pm"
+
+ * For perlcritic, the "-List" option has been renamed to
+ "-profileproto". The output now includes the names of the
+ parameters that each Policy supports, if any.
+
+ * Improved validation of Policy parameters in your F<.perlcriticrc>
+ Any invalid parameter now causes a fatal exception.
+
+ Major Changes:
+ * Reassigned themes for most policies. Now there are fewer
+ themes and they are organized around programming concepts
+ instead of severity levels. If you have assigned your own
+ themes to any Policies, they should still work as expected.
+
+ Policy Changes:
+ * ErrorHandling::RequireCarping will not complain if it can figure
+ out that the die or warn message will always end in a newline
+ ("\n"). The idea is that, if you put the newline there, you
+ don't indend for there to be any file/line/stack information
+ emitted, in which case you really don't want carp/croak.
+
+ You can restore the old strict behavior by giving the policy
+ a false value for "allow_messages_ending_with_newlines" in your
+ configuration.
+
+ Misc Changes:
+
+ Added single-letter uppercase alternatives for some perlcritic options.
+
+[0.21_01] Released on 2006-12-03
+
+ New Policies:
+ * TestingAndDebugging::ProhibitProlongedStrictureOverride
+ * ControlStructures::ProhibitMutatingListFunctions
+
+ New Features:
+ * Say "perlcritic -List" to get an expanded listing of all Policies.
+ The format is suitable for use as your .perlcriticrc file.
+ * Say "perlcritic -doc PATTERN" to get the documentation for all
+ Policies that match m/PATTERN/imx. This is a little easier than
+ typing in the full name of the Policy module with "perldoc".
+ * Say "perlcritic --singlepolicy PATTERN" to use one and only one
+ policy.
+ * Can now specify exceptions to Variables::ProhibitPackageVars,
+ for packages like File::Find that only interface through
+ package variables.
+
+ Bug Fixes:
+ * 21713 false positive for parens used with substr and unpack.
+ * 22890 allow Rcs keywords in POD.
+
+ Internals:
+ * Testing system overhauled. Details on the Policy/subtest
+ framework is in t/run.t.
+ * Added Perl::Critic::Utils::words_from_string. This is safer
+ than plain old C<split /\s+/>.
+
+[0.21] Released on 2006-11-05
+
+ New Policies:
+ * BuiltinFunctions::ProhibitReverseSortBlock
+ * BuiltinFunctions::ProhibitVoidGrep
+ * BuiltinFunctions::ProhibitVoidMap
+ * CodeLayout::RequireConsistentNewlines
+ * Modules::RequireFilenameMatchesPackage
+ * TestingAndDebugging::RequireTestLabels
+ * ValuesAndExpressions::ProhibitMismatchedOperators
+
+ New Features:
+ * Introduced policy "themes." Themes are arbitrary names that can
+ be used to identify a group of related Policies. You can select
+ your favorite policies by combining themes in a mathematic expression
+ such as "pbp * (danger + risky)". See POD for details.
+ * perlcritic output is colorized if you have Term::ANSIColor. This
+ only works on non-Win32 platforms. Use -nocolor switch to disable.
+ * Say "perlcritic -count" to get just the the total number of
+ violations per file. Use this feature to quickly identify hot-spots.
+ * Use the -only switch to choose only from policies mentioned in your
+ .perlcriticrc file. This is useful if you usually only want to
+ work with a small subset of the policies.
+ * Default values for most of the perlcritic and Perl::Critic options
+ can now be defined in your .perlcriticrc file. See POD for details.
+
+ Bug Fixes:
+ * 21236: wrong page number for "printing to filehandles"
+ * 21916: File handle ... wrong page reference in PBP [DUPE]
+ * 21714: false positive for capture var used in ternary condition
+ * 21718: No skip for File::Slurp in includes.t
+ * ProhibitBarewordFilehandles doesn't complain if you open
+ STDIN, STDOUT or STDERR.
+ * Parrot 40564: Subroutines::RequireFinalReturn should allow die,
+ exit, etc.
+ * Each "for" and "foreach" loop now adds one point to the McCabe
+ complexity score.
+
+ Other Stuff:
+ * The internals of Perl::Critic have been significantly refactored,
+ but should still be compatible with existing third-party Policies.
+ * Added author-only tests to the release, but disabled by default
+ * New Perl::Critic::Utils::shebang_line() method
+ * Support for filename-based policies
+ * Additional prerequisite: Set::Scalar
+ * Now requires PPI version 1.118
+
+[0.20] Released on 2006-09-10
+
+ Perl::Critic now requires PPI version 1.117, which fixes
+ several bugs that were introduced in version 1.116.
+
+ Bug Fixes:
+ * 21079: grep clears @SITE_POLICIES
+ * 21352: Test failures with PPI 1.117
+ * 11365: sub DESTROY detected as a builtin homonym
+
+[0.19] Released on 2006-08-20
+
+ New Policies:
+ * BuiltinFunctions::ProhibitStringySplit
+ * ControlStructures::ProhibitDeepNests
+ * RegularExpressions::ProhibitCaptureWithoutTest
+ * Variables::RequireLexicalLoopIterator
+
+ New Features:
+ * "perlcritic -quiet" suppresses the "source OK" message.
+ * Variables::ProhibitPunctuationVars is now configurable.
+
+ Bug Fixes:
+ * 20965: "Hard tabs used at" shouldn't check __DATA__
+ * 21070: ProhibitNoisyQuotes hates overload
+ * Punctuation variables are now exempt from ProhibitLocalVars
+
+ Other Stuff:
+ * Test coverage is now over 95%
+
+[0.18_01] Released on 2006-08-06
+
+ New Policies:
+ * Variables::RequireNegativeIndices
+ * InputOutput::ProhibitInteractiveTest
+ * ErrorHandling::RequireCarping
+
+ Bug Fixes:
+ * RequireTidyCode tests fail if user has custom .perltidyrc file
+ * 20612: RequirePerlTidy was ignoring HEREDOCs
+ * 20659: __END__ statement considered "unreachable"
+ * Fix for PPI::XS (no C<use overload '""'> support)
+ * Support for 'goto' in ProhibitAmpersandSigils and
+ Subroutines::RequireFinalReturn
+
+ Performance Enhancements:
+ * Introduced Perl::Critic::Document class. This is a facade for
+ PPI::Document which internally caches search results. This
+ reduces the running time by about 35%. The facade should be
+ invisible, unless you are doing something really sneaky.
+ * Extraction of the 'diagnostics' information is postponed
+ until it is really needed. Speedup has not been measured.
+ * Calls to helper-subs have been reordered for maximum efficiency.
+
+ Other Cool Stuff:
+ * Includes updated version of perlcritic mode for emacs. See
+ "extras/perlcritic.el" for details.
+
+[0.18] Released on 2006-07-16
+
+ Bug Fixes:
+ * 14855: Home discovery is dangerously naive.
+ * 20060: Incorrect page numbers in ProhibitLeadingZeros
+ and RequireNumberSeparator policies.
+ * 20068: .perlrc file - inconsistent documentation
+ * 20254: "use vars qw(@EXPORT_OK)" not recognized
+ * 20463: No-case heredoc terminator incorrectly detected as lower case.
+ * ProhibitOneArgBless doesn't understand "bless {} => $class;"
+ * ProhibitExcessComplexity doesn't count 'while' and 'until' stmnts
+ * ProhibitLeadingZeros was falsely hits '.0456'
+
+ Enhancements:
+ * If File::HomeDir is available, we use it to locate the
+ .perlcriticrc file. This should help make Perl::Critic
+ more portable to Win32 platforms. If File::HomeDir is
+ not installed, we resort to looking at the usual
+ environment variables.
+
+ Other Stuff:
+ * Added "perlcritic.el", which is a super-cool emacs minor-mode
+ that runs perl-critic on the current buffer and returns the
+ results in a sexy hot-linked "compiler" window. You can run
+ it on demand, or have it run automatically every time you
+ save the buffer. You can find this in the extras/ directory.
+ Thanks to Josh ben Jore for contributing this.
+
+ * Moved "Perl::Critic::TestUtils" into the installed build. This
+ module is only used for unit-testing Perl::Critic, but we
+ are putting it in the installation so folks who want to
+ extend Perl::Critic can make use of it.
+
+[0.17] Released on 2006-06-13
+
+ Bug Fixes:
+ * 19836: Perl-Critic0.16 fails tests during install. This was
+ caused by a bug in version 3.01 of Module::Pluggable. See
+ http://rt.cpan.org/Ticket/Display.html?id=19857 for details.
+ * Fixed bug in no-critic pragma parser.
+
+ New Policies:
+ * ValuesAndExpressions::ProhibitEscapedCharacters
+ * BuiltinFunctions::RequireSimpleSortBlock
+
+ Enhancements:
+ * Perl::Critic can export critique() as a static function. This
+ may appeal to folks who dislike the object-oriented interface.
+
+[0.16] Released on 2006-05-14
+
+ Enhancements:
+ * Perl::Critic->critique() now accepts a PPI::Document as the
+ argument. This feature creates an additional dependency on
+ Scalar::Util, but that shouldn't be a problem because it is
+ included with List::Util, which we already use.
+
+ Miscellanea:
+ * Increased PPI dependency from v1.110 to v1.112
+
+[0.15_03] Released on 2006-05-07
+
+ Bug Fixes:
+ * The "## no critic" feature is now implemented without eval-ing
+ the code. This keeps Perl::Critic pure and safe :)
+ * 19082: Page number for AUTOLOAD is incorrect
+
+ New Policies:
+ * ControlStructures::ProhibitUnreachableCode (by Peter Guzis)
+ * Modules::ProhibitAutomaticExportation
+ * ValuesAndExpressions::ProhibitVersionStrings
+
+[0.15_02] Released on 2006-04-26
+
+ Bug Fixes:
+ * Reimplemented the '##no critic' pragmas to have effect on the
+ line where the violation is reported, not on the line where
+ the candidate element lives. This is because some policies
+ may report violations that are nowhere near the element that
+ is being evaluated.
+ * RequireUseStrict, RequireUseWarnings, and RequireExplcitPackage
+ all emit violations for _every_ statement that violates the
+ Policy. This closes a loophole that allowed you to circumvent
+ the Policy by using '## no critic' on just the first statement
+ that violated the policy.
+ * Fixed the workaround for the magic shebang that is inserted
+ by EU::MM and M::B. This had stopped working around version 13.
+ * Fixed -noprofile option on 'perlcritic'. This also had stopped
+ working at some point.
+
+[0.15_01] Released on 2006-04-16
+
+ Enhancements:
+ * Added diagnostic messages if the .perlcriticrc contains entries
+ for Policy modules that don't seem to exist.
+ * Now you can specify which policies to disable with the
+ "## no critic" pseudo-pragmas. This feature is still
+ experimental. See docs for details.
+ * perlcritic's directory searching now skips backup files, such
+ as *.swp, *.bak and *~. It also ignores version control system
+ directories, and the blib directory in module build directories.
+
+ Bug Fixes:
+ * 18386: Bad example in POD for Documentation::RequirePodSections
+ * 18670: Test failure if Perl::Tidy is not installed
+ * 18698: Policy idea ProhibitUniversalFunctions (see New Policies)
+ * RequireInterpolationOfMetachars falsely hit strings like 'foo=s@'
+ which are commonly used with Getopt::Long.
+
+ New Policies:
+ * BuiltinFunctions::ProhibitUniversalCan (by Chris Dolan)
+ * BuiltinFunctions::ProhibitUniversalIsa (by Chris Dolan)
+
+ Miscellanea:
+ * All spurrious options for `perlcritic` are now fatal.
+ * Changed several of the -verbose formats to be more readable.
+ * Explicit -severity option now overrides -[12345] shortcuts instead
+ of being the other way around.
+
+
+
+[0.15] Released on 2006-03-26
+
+ Bug Fixes:
+ * 17964: Insists my code is not tidy (may not be fixed for all cases)
+
+[0.14_02] Released on 2006-03-19
+
+ Bug Fixes:
+ * 15653: False positive in OneArgSelect (fixed for real this time)
+
+ New Policies:
+ * ClassHierarchies::ProhibitAutoloading
+ * Documentation::RequirePodSections
+ * InputOutput::RequireBracedFileHandleWithPrint
+ * ValuesAndExpressions::ProhibitMixedBooleanOperators
+ * Variables::RequireInitializationForLocalVars
+
+[0.14_01] Released on 2006-03-05
+
+ Bug Fixes:
+ * 14731: False positive: Builtin function called with parens
+ * 17554: False positive in CodeLayout::RequireTrailingCommas
+
+ New Policies:
+ * ClassHierarchies::ProhibitExplicitISA
+ * InputOutput::ProhibitReadlineInForLoop
+ * Miscellanea::ProhibitFormats
+ * Miscellanea::ProhibitTies
+ * Variables::ProhibitConditionalDeclarations
+
+[0.14] Released on 2006-01-29
+
+ More documentation edits.
+
+ New Policies:
+ * Documentation::RequirePodAtEnd
+ * Subroutines::ProtectPrivateSubs
+ * Variables::ProhibitMatchVars
+ * Variables::ProtectPrivateVars
+
+ Bug Fixes:
+ * 15295: "## no critic" pragmas too aggresive on compound statements.
+ * t/01_config.t failed in the presence of third-party policies
+
+[0.13_05] Not released
+
+ More documentation edits.
+
+ Implemented workaround for failing pod_coverage tests.
+
+ Bug Fixes:
+ * 16906: tr/// created false-postives with RegularExpression polices.
+
+[0.13_04] Released on 2005-12-31
+
+ Moved DEVELOPER.pod file into the Perl/Critic dir.
+
+ More documentation edits.
+
+[0.13_03] Released on 20051230
+
+ perlcritic now prints 'source OK' if it doesn't find any
+ violations. This gives folks a warm fuzzy feeling.
+
+ Tweaked some test cases that were failing on my Solaris
+ environment at work.
+
+[0.13_02] Released on 2005-12-29
+
+ Fixed Config to recognize fully-qualified module names in the
+ .perlcriticrc file.
+
+ Various documentation edits.
+
+[0.13_01] Released on 2005-12-28
+
+ Replaced 'priority' concept with 'severity'. Now each Policy module
+ has a predefined severity level ranging from 1 to 5. By default,
+ perlcritic only reports the most severe violations. You can adjust
+ the severity threshold at the command line, and you can change
+ the severity for any Policy using the config file.
+
+ Chris implemented the applies_to() mechanism, which allows each Policy
+ class to declare the types of PPI elements that it wants to examine.
+ When traversing the document, Perl::Critic invokes the Policy only
+ for elements that are of the correct type. This improves performance
+ by about 33%.
+
+ Perl::Critic now uses a Plugin architecture to automatically
+ discover Policy modules. So if you have custom Policies, all you
+ have to do is install them in the Perl::Critic::Policy namespace --
+ no need to add anything to your .perlcriticrc file. If you write
+ policies in a different namespace, you can configure that too. See
+ the Perl::Critic::Config docs for details.
+
+ New Policies:
+ * Modules::RequireEndWithOne
+ * NamingConventions::ProhibitAmbiguousNames
+ * References::ProhibitDoubleSigils
+ * Subroutines::RequireFinalReturn
+ * Subroutines::ProhibitAmpersandSigils
+ * Subroutines::ProhibitExcessComplexity
+ * TestingAndDebugging::ProhibitNoStrict
+ * TestingAndDebugging::ProhibitNoWarnings
+
+ Bug Fixes:
+ * 15101: Plugin architecture improves support for 3rd-party code
+ * 16319: Fixed incorrect PBP page number in ProhibitBarwordFilehandle
+ * 16321: Lists of empty quotes are now allowed by ProhibitQuotedWordLists
+ * 16288: Empty lists caused a fatal error RequireTrailingCommas
+ * 15653: Fixed false positive in OneArgSelect.
+
+[0.13] Released on 2005-10-31
+
+ Official release of 0.12_03. No code major changes.
+
+[0.12_03] Not released
+
+ Renamed -Policy option to -include. Added -exclude to give the
+ opposite effect.
+
+ Refactored constructor of Perl::Critic. Now, most of the work
+ is delegated to Perl::Critic::Config. I'm not sure I like how
+ this turned out, but we'll see how it goes.
+
+ Renamed some Policy modules to be a bit more comprehensible. Note
+ that you may need to change your .perlcriticrc file accordingly.
+ I also suggest removing your current Perl::Critic installation
+ before installing this one.
+
+ Name Changes:
+ * ProhibitUnpackagedCode => RequireExplicitPackage
+ * RequireQuotedWords => ProhibitQuotedWordLists
+
+ Improved error message when Perl::Critic dies because PPI can't
+ parsee the input code.
+
+ Changed output of -help to be more terse.
+
+ Edited POD.
+
+[0.12_02] Not released
+
+ Added -Policy option to perlcritic. The idea is to provide a
+ compact interface for selecting Policy modules at the command-line.
+ This feature is experimental and subject to change.
+
+ Added a warning message if -verbose value looks strange. In most
+ applications, the -verbose option does not require a value, so people
+ might be puzzled when they write 'perlcritic -verbose my_file.pm' and
+ nothing seems to happen.
+
+ Command-line options to perlcritic are now case-sensitive. This
+ makes it easier to abbreviate options that start with the same letters
+ (e.g. 'Version' and 'verbose')
+
+ Fixed the new Policy modules that were misnamed and misplaced in the
+ previous distribution.
+
+[0.12_01] Not released
+
+ Rewrote some of the ControlStructures and BuiltinFunction
+ policies to be simpler (and probably a little faster).
+
+ Edited POD. Fixed some typos. Added PREREQUISITES section
+ to Perl::Critic documentation.
+
+ Fixed the -verbose FORMAT option so that you can put metachars
+ in the FORMAT specification. If using perlcritic, be careful to
+ protect them from getting munged by the shell first.
+
+ Replaced ProhibitRequireStatements with RequireBarewordIncludes
+ module. Courtesy of Chris Dolan <cdolan@cpan.org>
+
+ Added configuration to ProhibitInterpolationOfLiterals so that
+ certain flavors of quotes can be exempt. This is for folks who
+ have configured their editor to use special syntax highlighting
+ for certain kinds of strings (SQL, for example).
+
+ perlcritic now accepts multiple file arguments, so now you can
+ critique your entire distribution in one shot. As a result, the
+ output-formats have changed slightly.
+
+ New Policy modules:
+ * BuiltinFunctions::ProhibitLvalueSubstr
+ * BuiltinFunctions::ProhibitSleepViaSelect
+ * ClassHierarchies::ProhibitOneArgBless
+ * CodeLayout::RequireTrailingCommas
+ * CodeLayout::RequireQuotedWordLists
+ * InputOutput::ProhibitTwoArgOpen
+ * InputOutput::ProhibitOneArgSelect
+ * InputOutput::ProhibitBarewordFileHandles
+ * Miscellanea::RequireRcsKeywords
+ * Modules::RequireVersionVar
+ * RegularExpressions::RequireExtendedFormatting
+ * RegularExpressions::RequireLineBoundaryMatching
+
+
+ Bug fixes:
+ 14923: 'require' is now permitted. See RequireBarewordIncludes.
+ 15022: Fixed false-positives when keywords are used as hash keys.
+ 15023: Fixed spurious Violations by removing magic shebang.
+ 15031: Fixed spelling mistakes (and probably added some new ones).
+ 15233: Postfix 'if' is now allowed with 'die', 'croak', etc.
+
+[0.12] Released 2005-10-10
+
+ Redesigned the 'verbose' feature. Now the output format
+ can be user-defined using a sprintf-like specification.
+ perlciritc also has a predefined output format that is
+ compatible with grep mode in editors like vim and emacs.
+
+ 'return' is now exempt from ProhibitParensWithBuiltins. I may
+ extend this exemption to all unary functions.
+
+ Edited POD. Added a super brief description of each policy
+ in the main Perl::Critic documentation. Added details about
+ editor integration.
+
+ Additional Prerequisites:
+ * String::Format
+
+[0.11] Not released
+
+ The internal dynamics and API of Perl::Critic have changed
+ considerably. The result is a 300% increase in performance.
+ See the POD in Perl::Critic::Policy for details.
+
+ New Features:
+ * Added -verbose option to put more stuff in the output. In the
+ extreme, you can get the POD from Policy attached to each
+ and every violation.
+
+ Additional Prerequisites:
+ * IO::String
+ * Pod::PlainText
+
+[0.10] Released 2005-10-05
+
+ Fixed stupid bug in newest Policy modules. They were returning
+ PPI objects instead of Perl::Critic::Violation objects. Doh!
+
+ Fixed test scripts to prevent failures if the user already has a
+ .perlcriticrc file.
+
+ 'ProhibitHardTabs' now allows leading tabs by default.
+
+ Put the Changes file in reverse-chronological order, so the most
+ recent stuff is easy to find at the top of the file
+
+[0.09] Released 2005-10-04
+
+ Fixed several bugs:
+ * 14810: Now you are allowed to create your own 'import' function,
+ since this is frequently done with fancy modules.
+ * 14817: Parens, brackets, and braces are now excluded from
+ 'ProhibitNoisyQuotes' since they look better in quotes anyway.
+ * 14787: $1..$9 and '_' are exempt from ProhibitPunctuationVars
+ * 14899: Object methods with the same name as a built-in can
+ be called with parens (ProhibitParensWithBuiltins).
+ * 14901: Normalized the exit status of perlcritic to 0, 1, or 2.
+ See documentation for explanation.
+ * 14855: Partially fixed home directory discovery. Still not
+ completely portable, but at least doesn't create warnings.
+
+ New features:
+ * 14734: Limit for number separators is now configurable
+
+ New Policy modules:
+ * CodeLayout::ProhibitHardTabs
+ * ControlStructures::ProhibitUnlessBlocks
+ * ControlStructures::ProhibitUntilBlocks
+ * ControlStructures::ProhibitCStyleForLoops
+
+ Changed the syntax for the magic comments. Adam had the
+ idea of using a pragma-like notation. I liked it.
+
+[0.08_2] Released 2005-09-27
+
+ Fixed problems with Perl::Critic::Config that caused File::Spec
+ to emit 'uninitialized value' warnings during the build.
+
+ Added 1 Policy module contributed by Graham TerMarsch
+
+ Switched from File::Spec::Functions to plain File::Spec because
+ I think its usage is more common.
+
+ Removed 'FindBin' from the test files so I can be sure that the
+ right libraries are getting loaded. This means I'll have to
+ use the -l option with C<prove>.
+
+ Edited more POD.
+
+[0.08_01] Not released
+
+ Fixed "ProhibitParensWithBuiltins" to allow parens to be used with
+ object method calls that have the same name as a builtin functions.
+
+ Introduced magical comments that allow developers to configure
+ Perl::Critic on-the-fly from within their code.
+
+ Added META.yml files and POD tests to the build. I did this
+ mostly just to boost the Kwalitee score on CPANTS.
+
+ Switched from "Config::Std" to "Config::Tiny" because it doesn't
+ require those fancy Damian modules that don't seem to work on
+ some older versions of Perl.
+
+[0.07] Released on 2005-09-21
+
+ Fixed bugs in the ProhibitCascadingIfElse policy.
+
+ Added ProhibitExplicitReturnUndef policy
+
+ Made ProhibitUnpackagedCode configurable so you can exempt scripts,
+ which typically don't have an explicit 'package' statement.
+
+ ProhibitPackageVars policy now exempts vars in ALL_CAPS. This
+ is to permit common package variables like @EXPORT and $VERSION.
+
+ Renamed "ProhibitStringyGrep and "ProhibitStringyMap" because
+ the so-called string form doesn't really exist. Now called
+ "RequireBlockGrep" and "RequireBlockMap"
+
+ Corrected documentation on defining Policy names within the
+ configuration file. This still isn't very clear and needs
+ to be rewritten.
+
+ Perl::Critic now requires PPI version 1.003, which has a few bug
+ fixes of its own.
+
+ Rewrite some code just to make Perl::Critic more self-compliant.
+
+ Added test cases to verify the configuration functionality. These
+ are not completely thorough and need more work.
+
+[0.06] Released on 2005-09-17
+
+ Now called 'Perl::Critic'.
+
+ Added 4 new policy modules.
+
+ Fixed bugs in build process.
+
+ Added support for Module::Build.
+
+[0.05] Released on 2005-09-17
+
+ End of 'Perl::Review' releases. I have changed the name to
+ 'Perl::Critic' to avoid possible confusion with "The Perl Review"
+ magazine.
+
+[0.04] Released on 2005-09-14
+
+ Version 0.03 was a bust because I uploaded the wrong tarball to PAUSE.
+
+[0.03] Released on 2005-09-13.
+
+ Fixed some POD links.
+
+ Removed test cases for missing policy module.
+
+[0.02] Released on 2005-09-13.
+
+ Major overhaul based on feedback from Perl community.
+
+ Factored coding standards into separate modules (known as
+ Policies). The idea here is to allow other developers to easily
+ contribute additional coding standards.
+
+ Reworked Perl::Review into a simple engine for loading and running
+ Policy modules.
+
+ Gave perlreview a command-line interface and configuration file
+ for selecting which Policy modules to use.
+
+[0.01] Released on 2005-08-16.
+
+ Initial version.
+
+##############################################################################
+# $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/Changes $
+# $Date: 2008-07-03 10:19:10 -0500 (Thu, 03 Jul 2008) $
+# $Author: clonezone $
+# $Revision: 2489 $
+##############################################################################
+
+# ex: set ts=8 sts=4 sw=4 tw=78 ft= expandtab shiftround :