10.91 May 3, 2008 2 3- The fix for handling @_'s readonly-ness introduced a refcounting 4 bug. One symptom of this was a failing Log::Dispatch test. Reported 5 by Andreas Koenig. RT #35608. 6 7 80.90 May 1, 2008 9 10- Make the XS version of Params::Validate recognize regexp objects 11 with Perl 5.11.0-to-be. Patch by Andreas Koenig. RT #32872. 12 13- With the XS version, when you passed @_ directly to validate() and 14 then got a hash reference back, the values of that hash reference 15 would be marked readonly. Reported by W J Moore. RT #34410. 16 17 180.89 October 31, 2007 19 20- With validation turned off, the pure Perl version incorrectly 21 ignored an odd number of parameters when a hash was expected (no 22 validation still does the bare minimum of checks needed to set 23 defaults). 24 25- Added pod & pod coverage tests. 26 27- Modernized test suite to use Test::More and fixed some test suite 28 bugs along the way. 29 30- Attribute::Params::Validate would die when given a ValidatePos 31 attribute containing one element. 32 33- More tests are skipped on 5.6.0. 34 35 360.88 March 7, 2007 37 38- The XS version threw an error when it attempted to do "isa" or "can" 39 validation on a value that was not a string or object, such as undef 40 or a number. Reported by Steffen Winkler. RT #25229. 41 42- Fixed a compilation failure with bleadperl (5.9.x) that happened 43 because of a new scalar type introduced in blead. Patch by Nicholas 44 Clark. Fixes RT #24458. 45 46 470.87 January 18, 2007 48 49- When determining the caller of a function in the XS version, use 50 Perl's caller() function rather than CopSTASHPV. The caller() 51 function apparently ignores the DB package, whereas the latter 52 doesn't. This caused validate_options to be ignored when running 53 under profiling (and probably the debugger as well). Thanks to Jeff 54 Weisberg for pointing this out. 55 56 570.86 August 9, 2006 58 59* I cannot get this module to compile with Perl 5.00504 any more. I 60 get errors from including CORE/perl.h, so the problem may be outside 61 my control, but help is welcome. 62 63- Only turn inlining on if __GNUC__ is defined, since it seems that so 64 many other compilers don't support this. RT #20881. 65 66- Removed spaces in #define, #ifdef, etc. Suggested by Peter 67 Marquardt. 68 69- If a type is specified as a string ('SCALAR', not SCALAR), this is 70 now caught and a useful error is thrown. RT #9660. 71 72 730.85 June 7, 2006 74 75- Compiles without warnings under gcc's -Wall. Warnings reported by 76 Scott Godin. 77 78- Turned off inlining with HP-UX compiler. RT #19763. 79 80 810.84 May 29, 2006 82 83- The XS version of the code used Carp::croak to report failures, 84 while the Perl version used Carp::confess. The module has always 85 been documented as using confess, so now the XS version uses this. 86 87- The new compiler detection code always returned false if you didn't 88 have ExtUtils::CBuilder installed. 89 90 910.83 May 28, 2006 92 93- Change how C compiler detection is done in the Makefile.PL so it 94 does not rely on having make on the system. The new way should work 95 on (most?) Unix and Win32 systems. Suggested by David Golden. See RT 96 18969 (for DateTime.pm, but equally applicable to this module). Will 97 hopefully fix RT 17644. 98 99- Previously, if a parameter was undefined, regex checks for that 100 parameter always failed. However, it's quite possible for a regex to 101 successfully match an undefined value (qr/^$/, for example). Now the 102 code treats undef as an empty string ('') in regex checks. Reported 103 by Duncan Salada. 104 105 1060.82 May 9, 2006 107 108- Disabled function inlining if _MSC_VER is defined. Patch from Audrey 109 Tang. 110 111- Check isa by calling it as a method on the thing being checked. 112 113- Do the same for can in the pure Perl version. This was already fixed 114 for the XS version in 0.75. 115 116 1170.81 Apr 1, 2006 118 119- Speed up no validation in XS version by short-circuiting immediately 120 if validation is off. This gives a noticeable speed boost when 121 $ENV{NO_VALIDATION} is in use. Patch by Daisuke Maki. 122 123- Inlined some C functions for additional speed in the XS 124 version. Patch by Daisuke Maki. 125 126 1270.80 Jan 22, 2006 128 129- If a undef value was given for a parameter that had a regex in its 130 spec, a warning was emitted. RT #15196. 131 132 1330.79 Jan 13, 2006 134 135- The XS version of Params::Validate did not work if a spec hash 136 reference was marked Readonly using Readonly::XS. 137 138- Added some tests for using tied values for params or spec, and 139 discovered that a tied spec causes a segfault, but could not figure 140 out how to fix this (Grr, Perl magic is a huge pain in the nether 141 regions). 142 143 1440.78 Jul 19, 2005 145 146- If an overloaded object returned false in boolean context, then it 147 would always fail "can" tests. Patch by Chi-Fung Fan. 148 149 1500.77 Apr 29, 2005 151 152- Neither --xs or --pm worked with the Makefile.PL the way they were 153 supposed to. Reported by Doug Treder. 154 155- Moved source to my personal SVN repo. 156 https://svn.urth.org/svn/Params-Validate 157 158- Updated ppport.h, which allows XS version to work with 5.00504. 159 This was broken since 0.75, at least. 160 161 1620.76 Nov 13, 2004 (The "Cancan some more" release) 163 164- Make sure that both the XS and Perl versions give the same error 165 when checking "can" for an undefined value. 166 167 1680.75 Nov 13, 2004 (The "Cancan" release) 169 170- When checking if a parameter has a method, P::V now calls the ->can 171 method on the parameter, rather than calling UNIVERSAL::can() 172 directly. Requested by Don Armstrong. 173 174 1750.74 Apr 4, 2004 (The "I hate old Perls" release) 176 177- Sometimes, but not always, Perl 5.00504 and 5.00503 cannot produce a 178 string value for a glob (as opposed to glob reference) parameter. 179 This was uncovered by a test in the HTML::Mason test suite, but I 180 cannot reproduce it in a simple testable form for this test suite. 181 Sigh ... 182 183 1840.73 Mar 28, 2004 (The "YAPC::Taipei release party" release) 185 186- The minimum number of arguments required was reported incorrectly by 187 the XS code when a call to validate_pos() failed because too few 188 parameters were given. Patch from Britton Kerin. 189 190- Add a new untaint key to the validation spec, which untaints a value 191 if it passes its validation checks. 192 193 1940.72 Dec 3, 2003 195 196- If a normalize_keys callback returns the same normalized key for two 197 different inputs, Params::Validate will die. 198 199- The pure Perl implementation had a bug where if the same hash 200 reference was used for the spec in multiple calls to validate(), 201 then any call made after a parameter failed a validation check could 202 exhibit strange behaviors (like parameters passing that shouldn't, 203 etc.). This was due to the fact that the Perl implementation uses 204 each() internally, and was leaving the hash's iterator partially 205 iterated. Reported via an apparent problem with DateTime.pm by Jost 206 Krieger. 207 208 2090.71 Dec 2, 2003 210 211- Suppressed some annoying "subroutine redefined" warnings if the pure 212 Perl version ended up being loaded after attempting to load the XS 213 version. 214 215 2160.70 Nov 23, 2003 217 218- Any validation call that used a callback leaked memory when using 219 the XS version. This was introduced in 0.67, when callbacks started 220 receiving a reference to the parameters as a second argument. 221 Reported by Eugene van der Pijll. 222 223 2240.69 Nov 3, 2003 225 226- The key normalization feature introduced in 0.66 leaked one SV* 227 every time a parameter _hash_ was run through the XS version of 228 validate() or validate_with(). This happened if one of 229 normalize_keys, allow_extra, or ignore_case was set, or if 230 validate_with() was used. Upgrading is strongly recommended! 231 Reported by Ruslan. 232 233 2340.68 Oct 21, 2003 235 236- Added spiffy new parameter dependency feature. Implemented by 237 Daisuke Maki. 238 239 2400.67 Oct 10, 2003 241 242- The test count for 06-option.t was off. Reported by Christian 243 Schaffner. 244 245- Validation callbacks now receive a reference to the (normalized) 246 parameter hash/array as their second argument. 247 248- Shut up an "unitialized value in subroutine entry" warning caused by 249 calling validate_pos() with an undef value in the parameter array. 250 This was introduced in 0.66. 251 252 2530.66 Oct 08, 2003 254 255- Skip a few more tests under Perl 5.6.0. Patch from Christian 256 Schaffner. 257 258- Error messages now include the stringified value of the variable 259 that was invalid. Implemented by Daisuke Maki. 260 261- Added a new parameter normalization callback feature, the 262 "normalize_keys" option. Implemented by Daisuke Maki. 263 264* The "strip_leading" and "ignore_case" options are now 265 deprecated. Use the new "normalize" feature instead. 266 267 2680.65 Aug 07, 2003 269 270- It is now possible to turn validation on and off at runtime. To 271 make this easier, it can be set via the PERL_NO_VALIDATION 272 environment variable, or the $Params::Validate::NO_VALIDATION global 273 variable. Go ahead, shoot yourself in the foot with it! 274 275 2760.64 Jul 14, 2003 277 278- Fix an XS compilation error under 5.6.1: 279 280 Validate.xs: In function `validate_isa': 281 Validate.xs:381: `perl_on_error' undeclared (first use in this function) 282 283 2840.63 Jul 14, 2003 285 286- The XS version of validate_with failed if the params key contained 287 an array reference containing a single hash reference. Since this 288 works with the pure Perl version, it should work with the XS 289 version. Reported by Diab Jerius. Bug #2791 on rt.cpan.org. 290 291 2920.62 Jun 25, 2003 293 294- Remove a warn() statement left in from debugging. Reported by Shane 295 McCarron. 296 297 2980.61 Jun 23, 2003 299 300- The last release had some debugging code left in which tried to load 301 Devel::StackTrace. Reported by Iain Truskett. 302 303 3040.60 Jun 21, 2003 305 306- Fixed a weird segfault that could occur with Perl 5.6.1 when a 307 user-defined on_fail callback died with an object as its argument. 308 This only happened with the XS version of the code. Reported by Ken 309 Williams. 310 311 The end result is that the version of the XS code that is used with 312 Perl 5.6.0 and 5.6.1 is slightly slower than that used with 5.00503 313 or 5.8.0, as it requires an additional Perl-level wrapper. 314 315- Use XSLoader in preference to Dynaloader with Perl 5.6.0+. 316 317 3180.59 May 24, 2003 319 320- If an odd number of parameters was given to validate() in the array 321 as its first argument, the error given would be different depending 322 on whether or not the pure Perl or XS version of the code was being 323 used. 324 325- Fixed incredibly odd bug that occurred in XS code when tainting was 326 on with Perl 5.00503. Unfortunately, the only test case that 327 reliably reproduces this is one of Mason's tests, so no test was 328 added. 329 330 3310.58 Apr 03, 2003 332 333- Fix some compiler warnings from MS Visual Studio 6. Reported by Ron 334 Hill. 335 336 3370.57 Feb 28, 2003 338 339- When called from the main body of a script, the validation routines 340 would cause an undefined value warning if validation failed. 341 Reported by Britton Kerin and fixed by Ilya Martynov. 342 343 3440.56 Feb 24, 2003 345 346- The XS code that handled callbacks expected all callbacks to return 347 an integer, instead of simply testing the returned value for truth. 348 This could cause strange warnings like 'Argument "InMemory" isn't 349 numeric in subroutine entry...'. Based on a bug report from Robert 350 Dick for another module I wrote (Lingua::ZH::CCDICT). 351 352 3530.55 Feb 21, 2003 354 355- Fixed Params::Validate for Perl configurations where sizeof(IV) != 356 sizeof(int). Reported by Alain Barbet. 357 358 3590.54 Feb 20, 2003 360 361- Something around test 5 in 06-options.t appear to cause Perl to 362 die/segfault/something under 5.6.0. These tests will be skipped 363 with 5.6.0 in the future. Reported by Christian Schaffner. 364 365 3660.53 Feb 19, 2003 367 368- When testing for a compiler, use nmake on Win32. Implemented by 369 Ronald Hill. 370 371 3720.52 Feb 14, 2003 373 374- Added regex validation option. 375 376 3770.51 Jan 14, 2003 378 379- Added copyright info to each source file. Added LICENSE file to 380 distro. 381 382 3830.50 Jan 9, 2003 384 385- Added an XS implementation, written by Ilya Martynov. The pure Perl 386 implementation is still included as a fallback for users who do not 387 have a compiler handy. The XS implementation gives a speed boost of 388 150% to 300%, depending on the complexity of the validation being 389 done. 390 391 This XS code is known to work Perl 5.00503+, but it may not work 392 with earlier versions of Perl. 393 394 3950.24 Jul 19, 2002 396 397- Fix Attribute::Params::Validate docs to show that attribute 398 declaration must have open paren immediately after "Validate" or 399 "ValidatePos". Reported by Britton Kerin. 400 401- Fix bug with Perl 5.8.0 when in PERL_NO_VALIDATION mode and calling 402 validate() expecting a hash ref to be returned. Reported by Randal 403 Schwartz. 404 405 4060.23 Jul 19, 2002 407 408- Argh. In 0.22 some of the tests printed their test counts (1..x) 409 after doing the tests. This works with newer versions of 410 Test::Harness so I didn't notice it. Reported by Peter Asemann. 411 412 4130.22 Jul 15, 2002 414 415- The last version's tarball was a mess, and had blib and other junk 416 in it. This is a nice clean one. 417 418 4190.21 Jul 14, 2002 420 421- The various validation functions are now context sensitive, and will 422 return a reference in scalar context. This may be a helpful 423 speedup, especially for large parameter lists. 424 425 4260.20 Jul 13, 2002 427 428- Improved the speed of both validate() and validate_pos() by about 429 20-25%. 430 431- Improved the speed of the 'no validation' mode for validate() by 432 over 30%, for validation_pos() by 15%, and for validate_with() by 433 125%. 434 435- The speed of validate_with() has been improved by over 100%, but 436 this was at the expense of not validating its own incoming 437 arguments, thus making it a little more fragile. 438 439- The PERL_NO_VALIDATION env var is now _only_ checked when the module 440 is loaded. This means you cannot change it mid-program. This is a 441 backwards incompatibility. 442 443 4440.18 June 18, 2002 445 446- Added a new function, validate_with(), that allow you to set various 447 options on a per-invocation basis, rather than on a per-package 448 basis. Patch by Ken Williams. 449 450 4510.17 Jun 15, 2002 452 453- Fix a doc nit where I had a wrong code example. Reported by Britton 454 Kerin. 455 456- Added a new validation option parameter, stack_skip, which allows 457 you to change how errors are reported by Params::Validate. 458 459 4600.16 May 11, 2002 461 462- Improve skipping of tests when run with 5.6.0. Patch by Ken 463 Williams. 464 465- Silence an uninit value warning 466 467 4680.15 Apr 19, 2002 469 470- validate_pos would die stupidly when it received an array with an 471 odd number of elements. 472 473 4740.14 Mar 14, 2002 475 476- validate_pos used exists on an array element, which only works with 477 Perl 5.6.0. This release makes it work 5.00503 again. Reported by 478 Jon Swartz. 479 480 4810.13 Mar 10, 2002 482 483- Apply some of the same optimizations to positional parameters. The 484 speedup here seems to be about 7-8%. 485 486- Fix stupid bug in 04-defaults tests. 487 488 4890.12 Mar 10, 2002 490 491- Add BOOLEAN type (equivalent to UNDEF | SCALAR). Suggested by Ken 492 Williams. 493 494- This version is about 8-10% faster on named parameters than previous 495 versions. This may not seem like that much but if most, or all, of 496 your subroutines/methods use validation then this can be a 497 significant improvement. 498 499- This version has slightly different semantics for dealing with 500 missing parameters. Previously, if parameters were missing, an 501 exception was thrown before any of the other validation parameters 502 were checked. Now, the validation parameters (type, isa, etc.) are 503 checked first, so that these errors will show up before missing 504 parameters. 505 506 5070.11 Jan 04, 2002 508 509- Accidentally removed the set_options function (in 0.08). Though this 510 will go away in the future it isn't happening quite yet. 511 512 5130.10 Jan 04, 2002 514 515- Apparently making a tarball for CPAN is beyond my limited abilities. 516 0.09 was missing a file needed for tests. Also reported by Blair 517 Zajac. 518 519- When running Makefile.PL you get some warnings that can be ignored. 520 Add a message saying you can ignore them. 521 522 5230.09 Jan 04, 2002 524 525- I forgot to put the Makefile.PL in the MANIFEST. I am dumb. 526 Reported by Blair Zajac. 527 528 5290.08 Jan 03, 2002 530 531- Explicitly mention that, by default, Params::Validate uses 532 Carp::confess to report a validation failure. Suggested by Mark 533 Stosberg. 534 535- The 'NO_VALIDATION' mode was seriously broken in that it didn't 536 handle defaults at all. 537 538- The 'NO_VALIDATION' env var was mis-documented as being 539 'NO_VALIDATE'. 540 541- The 'NO_VALIDATION' env var is now 'PERL_NO_VALIDATION' and this 542 method of disabling validation is no longer considered alpha. 543 544- The validation functions now check this environment variable every 545 time they are called. This is probably a bit slower than the 546 previous implementation, which only checked once when the module was 547 loaded. If you have a problem with this, let me know. 548 549 5500.07 Sep 23, 2001 551 552- Fix problem with CPAN shell's 'r' command that 553 Attribute::Params::Validate was causing with older Perl's. Reported 554 by Rob BloodGood. 555 556- Add ability to specify defaults for parameters and get a new 557 hash/array back from validate or validate_pos. Partial patch 558 submitted by Ken Williams. 559 560 5610.06 Aug 23, 2001 562 563- Require Attribute::Handlers if using Perl 5.6.0+. 564 565- fix doc nits. 566 567 5680.05 Aug 23, 2001 569 570- Added Attribute::Params::Validate - do validation via attributes! 571 572- Rename set_options to validation_options. This can now be exported 573 safely and is included in the :all export tag. set_options is 574 deprecated and will be removed in a future release. Thanks to Jon 575 Swartz for the suggestion. 576 577 5780.04 Apr 14, 2001 579 580- Tweaks to make the code work under 5.00404 581 582 5830.03 Mar 17, 2001 584 585- Make sure all error messages contain the name of the subroutine that 586 was called. 587 588- The error message given when an argument doesn't match the 'isa' 589 spec has been improved. 590 591- Use Carp::confess by default when dying with an error. This 592 produces a more useful error message. 593 594 5950.02 Mar 6, 2001 596 597- Fix a bug in the test suite that caused failures in 5.6.0. 598 599 6000.01 Feb 16, 2001 601 602- Original release 603 604