Changes   [plain text]

0.91 May 3, 2008

- The fix for handling @_'s readonly-ness introduced a refcounting
  bug. One symptom of this was a failing Log::Dispatch test. Reported
  by Andreas Koenig. RT #35608.

0.90 May 1, 2008

- Make the XS version of Params::Validate recognize regexp objects
  with Perl 5.11.0-to-be. Patch by Andreas Koenig. RT #32872.

- With the XS version, when you passed @_ directly to validate() and
  then got a hash reference back, the values of that hash reference
  would be marked readonly. Reported by W J Moore. RT #34410.

0.89 October 31, 2007

- With validation turned off, the pure Perl version incorrectly
  ignored an odd number of parameters when a hash was expected (no
  validation still does the bare minimum of checks needed to set

- Added pod & pod coverage tests.

- Modernized test suite to use Test::More and fixed some test suite
  bugs along the way.

- Attribute::Params::Validate would die when given a ValidatePos
  attribute containing one element.

- More tests are skipped on 5.6.0.

0.88 March 7, 2007

- The XS version threw an error when it attempted to do "isa" or "can"
  validation on a value that was not a string or object, such as undef
  or a number. Reported by Steffen Winkler. RT #25229.

- Fixed a compilation failure with bleadperl (5.9.x) that happened
  because of a new scalar type introduced in blead. Patch by Nicholas
  Clark. Fixes RT #24458.

0.87 January 18, 2007

- When determining the caller of a function in the XS version, use
  Perl's caller() function rather than CopSTASHPV. The caller()
  function apparently ignores the DB package, whereas the latter
  doesn't. This caused validate_options to be ignored when running
  under profiling (and probably the debugger as well). Thanks to Jeff
  Weisberg for pointing this out.

0.86 August 9, 2006

* I cannot get this module to compile with Perl 5.00504 any more. I
  get errors from including CORE/perl.h, so the problem may be outside
  my control, but help is welcome.

- Only turn inlining on if __GNUC__ is defined, since it seems that so
  many other compilers don't support this. RT #20881.

- Removed spaces in #define, #ifdef, etc. Suggested by Peter

- If a type is specified as a string ('SCALAR', not SCALAR), this is
  now caught and a useful error is thrown. RT #9660.

0.85 June 7, 2006

- Compiles without warnings under gcc's -Wall. Warnings reported by
  Scott Godin.

- Turned off inlining with HP-UX compiler. RT #19763.

0.84 May 29, 2006

- The XS version of the code used Carp::croak to report failures,
  while the Perl version used Carp::confess. The module has always
  been documented as using confess, so now the XS version uses this.

- The new compiler detection code always returned false if you didn't
  have ExtUtils::CBuilder installed.

0.83 May 28, 2006

- Change how C compiler detection is done in the Makefile.PL so it
  does not rely on having make on the system. The new way should work
  on (most?) Unix and Win32 systems. Suggested by David Golden. See RT
  18969 (for, but equally applicable to this module). Will
  hopefully fix RT 17644.

- Previously, if a parameter was undefined, regex checks for that
  parameter always failed. However, it's quite possible for a regex to
  successfully match an undefined value (qr/^$/, for example). Now the
  code treats undef as an empty string ('') in regex checks. Reported
  by Duncan Salada.

0.82 May 9, 2006

- Disabled function inlining if _MSC_VER is defined. Patch from Audrey

- Check isa by calling it as a method on the thing being checked.

- Do the same for can in the pure Perl version. This was already fixed
  for the XS version in 0.75.

0.81 Apr 1, 2006

- Speed up no validation in XS version by short-circuiting immediately
  if validation is off. This gives a noticeable speed boost when
  $ENV{NO_VALIDATION} is in use. Patch by Daisuke Maki.

- Inlined some C functions for additional speed in the XS
  version. Patch by Daisuke Maki.

0.80 Jan 22, 2006

- If a undef value was given for a parameter that had a regex in its
  spec, a warning was emitted. RT #15196.

0.79 Jan 13, 2006

- The XS version of Params::Validate did not work if a spec hash
  reference was marked Readonly using Readonly::XS.

- Added some tests for using tied values for params or spec, and
  discovered that a tied spec causes a segfault, but could not figure
  out how to fix this (Grr, Perl magic is a huge pain in the nether

0.78 Jul 19, 2005

- If an overloaded object returned false in boolean context, then it
  would always fail "can" tests. Patch by Chi-Fung Fan.

0.77 Apr 29, 2005

- Neither --xs or --pm worked with the Makefile.PL the way they were
  supposed to. Reported by Doug Treder.

- Moved source to my personal SVN repo.

- Updated ppport.h, which allows XS version to work with 5.00504.
  This was broken since 0.75, at least.

0.76 Nov 13, 2004 (The "Cancan some more" release)

- Make sure that both the XS and Perl versions give the same error
  when checking "can" for an undefined value.

0.75 Nov 13, 2004 (The "Cancan" release)

- When checking if a parameter has a method, P::V now calls the ->can
  method on the parameter, rather than calling UNIVERSAL::can()
  directly. Requested by Don Armstrong.

0.74 Apr 4, 2004 (The "I hate old Perls" release)

- Sometimes, but not always, Perl 5.00504 and 5.00503 cannot produce a
  string value for a glob (as opposed to glob reference) parameter.
  This was uncovered by a test in the HTML::Mason test suite, but I
  cannot reproduce it in a simple testable form for this test suite.
  Sigh ...

0.73 Mar 28, 2004  (The "YAPC::Taipei release party" release)

- The minimum number of arguments required was reported incorrectly by
  the XS code when a call to validate_pos() failed because too few
  parameters were given. Patch from Britton Kerin.

- Add a new untaint key to the validation spec, which untaints a value
  if it passes its validation checks.

0.72 Dec 3, 2003

- If a normalize_keys callback returns the same normalized key for two
  different inputs, Params::Validate will die.

- The pure Perl implementation had a bug where if the same hash
  reference was used for the spec in multiple calls to validate(),
  then any call made after a parameter failed a validation check could
  exhibit strange behaviors (like parameters passing that shouldn't,
  etc.). This was due to the fact that the Perl implementation uses
  each() internally, and was leaving the hash's iterator partially
  iterated. Reported via an apparent problem with by Jost

0.71 Dec 2, 2003

- Suppressed some annoying "subroutine redefined" warnings if the pure
  Perl version ended up being loaded after attempting to load the XS

0.70 Nov 23, 2003

- Any validation call that used a callback leaked memory when using
  the XS version. This was introduced in 0.67, when callbacks started
  receiving a reference to the parameters as a second argument.
  Reported by Eugene van der Pijll.

0.69 Nov 3, 2003

- The key normalization feature introduced in 0.66 leaked one SV*
  every time a parameter _hash_ was run through the XS version of
  validate() or validate_with(). This happened if one of
  normalize_keys, allow_extra, or ignore_case was set, or if
  validate_with() was used. Upgrading is strongly recommended!
  Reported by Ruslan.

0.68 Oct 21, 2003

- Added spiffy new parameter dependency feature. Implemented by
  Daisuke Maki.

0.67 Oct 10, 2003

- The test count for 06-option.t was off. Reported by Christian

- Validation callbacks now receive a reference to the (normalized)
  parameter hash/array as their second argument.

- Shut up an "unitialized value in subroutine entry" warning caused by
  calling validate_pos() with an undef value in the parameter array.
  This was introduced in 0.66.

0.66 Oct 08, 2003

- Skip a few more tests under Perl 5.6.0. Patch from Christian

- Error messages now include the stringified value of the variable
  that was invalid. Implemented by Daisuke Maki.

- Added a new parameter normalization callback feature, the
  "normalize_keys" option. Implemented by Daisuke Maki.

* The "strip_leading" and "ignore_case" options are now
  deprecated. Use the new "normalize" feature instead.

0.65 Aug 07, 2003

- It is now possible to turn validation on and off at runtime. To
  make this easier, it can be set via the PERL_NO_VALIDATION
  environment variable, or the $Params::Validate::NO_VALIDATION global
  variable. Go ahead, shoot yourself in the foot with it!

0.64 Jul 14, 2003

- Fix an XS compilation error under 5.6.1:

 Validate.xs: In function `validate_isa':
 Validate.xs:381: `perl_on_error' undeclared (first use in this function)

0.63 Jul 14, 2003

- The XS version of validate_with failed if the params key contained
  an array reference containing a single hash reference. Since this
  works with the pure Perl version, it should work with the XS
  version. Reported by Diab Jerius. Bug #2791 on

0.62 Jun 25, 2003

- Remove a warn() statement left in from debugging. Reported by Shane

0.61 Jun 23, 2003

- The last release had some debugging code left in which tried to load
  Devel::StackTrace. Reported by Iain Truskett.

0.60 Jun 21, 2003

- Fixed a weird segfault that could occur with Perl 5.6.1 when a
  user-defined on_fail callback died with an object as its argument.
  This only happened with the XS version of the code. Reported by Ken

  The end result is that the version of the XS code that is used with
  Perl 5.6.0 and 5.6.1 is slightly slower than that used with 5.00503
  or 5.8.0, as it requires an additional Perl-level wrapper.

- Use XSLoader in preference to Dynaloader with Perl 5.6.0+.

0.59 May 24, 2003

- If an odd number of parameters was given to validate() in the array
  as its first argument, the error given would be different depending
  on whether or not the pure Perl or XS version of the code was being

- Fixed incredibly odd bug that occurred in XS code when tainting was
  on with Perl 5.00503. Unfortunately, the only test case that
  reliably reproduces this is one of Mason's tests, so no test was

0.58 Apr 03, 2003

- Fix some compiler warnings from MS Visual Studio 6. Reported by Ron

0.57 Feb 28, 2003

- When called from the main body of a script, the validation routines
  would cause an undefined value warning if validation failed.
  Reported by Britton Kerin and fixed by Ilya Martynov.

0.56 Feb 24, 2003

- The XS code that handled callbacks expected all callbacks to return
  an integer, instead of simply testing the returned value for truth.
  This could cause strange warnings like 'Argument "InMemory" isn't
  numeric in subroutine entry...'. Based on a bug report from Robert
  Dick for another module I wrote (Lingua::ZH::CCDICT).

0.55 Feb 21, 2003

- Fixed Params::Validate for Perl configurations where sizeof(IV) !=
  sizeof(int). Reported by Alain Barbet.

0.54 Feb 20, 2003

- Something around test 5 in 06-options.t appear to cause Perl to
  die/segfault/something under 5.6.0. These tests will be skipped
  with 5.6.0 in the future. Reported by Christian Schaffner.

0.53 Feb 19, 2003

- When testing for a compiler, use nmake on Win32. Implemented by
  Ronald Hill.

0.52 Feb 14, 2003

- Added regex validation option.

0.51 Jan 14, 2003

- Added copyright info to each source file. Added LICENSE file to

0.50 Jan 9, 2003

- Added an XS implementation, written by Ilya Martynov. The pure Perl
  implementation is still included as a fallback for users who do not
  have a compiler handy. The XS implementation gives a speed boost of
  150% to 300%, depending on the complexity of the validation being

  This XS code is known to work Perl 5.00503+, but it may not work
  with earlier versions of Perl.

0.24  Jul 19, 2002

- Fix Attribute::Params::Validate docs to show that attribute
  declaration must have open paren immediately after "Validate" or
  "ValidatePos". Reported by Britton Kerin.

- Fix bug with Perl 5.8.0 when in PERL_NO_VALIDATION mode and calling
  validate() expecting a hash ref to be returned. Reported by Randal

0.23 Jul 19, 2002

- Argh. In 0.22 some of the tests printed their test counts (1..x)
  after doing the tests. This works with newer versions of
  Test::Harness so I didn't notice it. Reported by Peter Asemann.

0.22 Jul 15, 2002

- The last version's tarball was a mess, and had blib and other junk
  in it. This is a nice clean one.

0.21 Jul 14, 2002

- The various validation functions are now context sensitive, and will
  return a reference in scalar context. This may be a helpful
  speedup, especially for large parameter lists.

0.20 Jul 13, 2002

- Improved the speed of both validate() and validate_pos() by about

- Improved the speed of the 'no validation' mode for validate() by
  over 30%, for validation_pos() by 15%, and for validate_with() by

- The speed of validate_with() has been improved by over 100%, but
  this was at the expense of not validating its own incoming
  arguments, thus making it a little more fragile.

- The PERL_NO_VALIDATION env var is now _only_ checked when the module
  is loaded. This means you cannot change it mid-program. This is a
  backwards incompatibility.

0.18 June 18, 2002

- Added a new function, validate_with(), that allow you to set various
  options on a per-invocation basis, rather than on a per-package
  basis. Patch by Ken Williams.

0.17 Jun 15, 2002

- Fix a doc nit where I had a wrong code example. Reported by Britton

- Added a new validation option parameter, stack_skip, which allows
  you to change how errors are reported by Params::Validate.

0.16 May 11, 2002

- Improve skipping of tests when run with 5.6.0. Patch by Ken

- Silence an uninit value warning

0.15 Apr 19, 2002

- validate_pos would die stupidly when it received an array with an
  odd number of elements.

0.14 Mar 14, 2002

- validate_pos used exists on an array element, which only works with
  Perl 5.6.0. This release makes it work 5.00503 again. Reported by
  Jon Swartz.

0.13 Mar 10, 2002

- Apply some of the same optimizations to positional parameters. The
  speedup here seems to be about 7-8%.

- Fix stupid bug in 04-defaults tests.

0.12 Mar 10, 2002

- Add BOOLEAN type (equivalent to UNDEF | SCALAR). Suggested by Ken

- This version is about 8-10% faster on named parameters than previous
  versions. This may not seem like that much but if most, or all, of
  your subroutines/methods use validation then this can be a
  significant improvement.

- This version has slightly different semantics for dealing with
  missing parameters. Previously, if parameters were missing, an
  exception was thrown before any of the other validation parameters
  were checked. Now, the validation parameters (type, isa, etc.) are
  checked first, so that these errors will show up before missing

0.11 Jan 04, 2002

- Accidentally removed the set_options function (in 0.08). Though this
  will go away in the future it isn't happening quite yet.

0.10 Jan 04, 2002

- Apparently making a tarball for CPAN is beyond my limited abilities.
  0.09 was missing a file needed for tests. Also reported by Blair

- When running Makefile.PL you get some warnings that can be ignored.
  Add a message saying you can ignore them.

0.09 Jan 04, 2002

- I forgot to put the Makefile.PL in the MANIFEST. I am dumb.
  Reported by Blair Zajac.

0.08 Jan 03, 2002

- Explicitly mention that, by default, Params::Validate uses
  Carp::confess to report a validation failure. Suggested by Mark

- The 'NO_VALIDATION' mode was seriously broken in that it didn't
  handle defaults at all.

- The 'NO_VALIDATION' env var was mis-documented as being

- The 'NO_VALIDATION' env var is now 'PERL_NO_VALIDATION' and this
  method of disabling validation is no longer considered alpha.

- The validation functions now check this environment variable every
  time they are called. This is probably a bit slower than the
  previous implementation, which only checked once when the module was
  loaded.  If you have a problem with this, let me know.

0.07 Sep 23, 2001

- Fix problem with CPAN shell's 'r' command that
  Attribute::Params::Validate was causing with older Perl's. Reported
  by Rob BloodGood.

- Add ability to specify defaults for parameters and get a new
  hash/array back from validate or validate_pos. Partial patch
  submitted by Ken Williams.

0.06 Aug 23, 2001

- Require Attribute::Handlers if using Perl 5.6.0+.

- fix doc nits.

0.05 Aug 23, 2001

- Added Attribute::Params::Validate - do validation via attributes!

- Rename set_options to validation_options. This can now be exported
  safely and is included in the :all export tag. set_options is
  deprecated and will be removed in a future release. Thanks to Jon
  Swartz for the suggestion.

0.04 Apr 14, 2001

- Tweaks to make the code work under 5.00404

0.03 Mar 17, 2001

- Make sure all error messages contain the name of the subroutine that
  was called.

- The error message given when an argument doesn't match the 'isa'
  spec has been improved.

- Use Carp::confess by default when dying with an error. This
  produces a more useful error message.

0.02 Mar 6, 2001

- Fix a bug in the test suite that caused failures in 5.6.0.

0.01 Feb 16, 2001

- Original release