Revision history for Data-Domain 1.16 03.03.2023 - new builtin domain 'Struict' - new -if_absent parameter - bug fix : default value was incorrectly propagated to the next undef field 1.15 13.01.2024 - add missing dependency on List::Util v1.45 1.14 07.01.2024 - new methods: validate(), func_signature(), meth_signature() - new domain option: -default - new domain shortcut : Coderef - fix old bug on checks for tainted data 1.13 02.12.2023 - new option Struct(-may_ignore => ...) - NOT BACKWARD COMPATIBLE : the API for coderefs also passes the domain name (but the old API can be restored through a global flag) - global messages can contain coderefs - $global_msgs can be localized 1.12 16.05.2023 - Struct(..., -exclude => ..) returns richer error messages 1.11 24.04.2023 - "no warnings 'experimental'" only for perl >= 5.018 1.10 23.04.2023 - no longer use smartmatch for perl >= 5.37.10 - removed 'node_from_path'; backwards compat through Data::Reach 1.09 21.04.2023 - fix one special case of warning 'redundant' that was omitted in the 1.07 fix 1.08 10.03.2023 - remove internal uses of smartmatch and 'when' - drop support for "~~" overloading if perl version >= 5.037 - the -matches feature is now implemented through match::simple::XS - pod tests moved to xt 1.07 29.04.2020 - fix warning 'redundant' appeared in perl 5.22 1.06 05.04.2014 - #94464 fix missing dependency on List::MoreUtils 1.05 04.08.2013 - additional options -keys and -values for Struct 1.04 16.06.2013 - use experimental 'smartmatch' to avoid warnings from perl 5.18 1.03 01.12.2012 - fixed definition of 'Class' and added new option "-package" 1.02 27.10.2012 - better check of min/max values - revised documentation - new options : -ref, -isweak, -readonly, -tainted - most options moved to parent inspect() -- now they apply to all domains - new domains : 'Nat', 'Handle' - new shortcuts : 'Regexp', 'Obj', 'Class', 'Ref', 'Unref' - changed names of export groups ('constructors' and 'shortcuts') - experimental support for checking method calls and coderef calls - added $MAX_DEEP to control the recursion level 1.01 21.10.2012 - removed internal domain _None (useless because same as 'Empty') - fiddle with Sub::Exporter to support use Data::Domain qw/:all !Date/ 1.00 11.10.2012 - use Scalar::Does instead of UNIVERSAL::isa - new Whatever options : -blessed, -matches, -does - overloads stringification and smart match operators - use Sub::Exporter for exporting functions - exports builtin domains : True, False, Blessed, Defined, etc. - new domain generator 'All_of' - tests structured in subtests 0.16 11.08.2011 - specify POD =encoding so that new Pod::Simple is happy 0.15 29.09.2011 - https://rt.cpan.org/Ticket/Display.html?id=71188 (String accepts non-scalar) 0.14 01.07.2009 - undef not allowed in Enum list 0.13 24.02.2009 - added builtin Empty domain 0.12 23.01.2009 - catch errors in lazy domain creation (reported as INVALID) 0.11 02.12.2008 - parse Date in an eval && check_date to generate INVALID => msg instead of low-level exception 0.10 04.06.2008 - renamed internal subclasses as ::Ctor::.. to avoid name clashes with the functional interface (i.e Data::Domain::Num(...), Data::Domain::Ctor::Num->new(...) ). 0.09 04.02.2008 - removed warning in Time::_print_time - check that lazy domains return proper domains - fixes in documentation 0.08 - changed messages in Time() to display real time for dynamic times 0.07 - changed messages in Date() to display real dates for dynamic dates 0.06 - typos in doc 0.05 - Bug fix : wrong message in List(-any) - renamed build.pl in build.PL 0.04 07.03.2006 - Fixed dependencies in Build.PL - Revisited code for List(-any) 0.03 23.02.2006 - Bug fix in method msgs() 0.02 27.12.2006 - Documentation restructured and completed (esp. -messages option) - minor modifications in msg() method - added range options (e.g. -size=>[$min, $max]) 0.01 01.10.2006 - initial release