Revision history for Perl module Module::Generic

v1.2.4 2026-03-14T08:53:46+0900
    - Fixed SEGV on exit in threaded Perl by protecting Module::Generic::Global END block
      and Module::Generic DESTROY against use-after-free on shared data
    - Fixed pack() format in Module::Generic::File::IO::locked() to use 32-bit integers
      on 32-bit systems (e.g. NetBSD i386), replacing non-portable 'q'
    - Fixed concurrent file locking test in t/10.file.t to pass a timeout so threads wait
      for the lock instead of failing immediately
    - Fixed t/32.file_magic.t to resolve symlinks on /bin/ls before MIME detection
    - Added skip in t/31.global.t for Perl compiled with USE_LONG_DOUBLE + useithreads
      where shared data structures cause unavoidable crashes
    - Improved documentation for Module::Generic::File::Magic

v1.2.3 2026-03-12T23:40:42+0900
    - Release v1.2.3 with minor documentation correction

v1.2.2 2026-03-10T19:06:12+0900
    - Minor improvement in as_string in Module::Generic::HeaderValue, now accepting
      an option to force the double quotes on a token name.
    - Fixed Module::Generic::Global::set() max_size eviction triggering one
      entry too early when Perl is compiled with useithreads, due to a key
      being pre-inserted into the repository before the size check

v1.2.1 2026-03-09T21:58:36+0900
    - Corrected serialisation for Module::Generic::DateTime
    - Added Module::Generic::File::Magic, a new libmagic-based MIME type detector
      with a pure-Perl JSON fallback, replacing the use of File::MMagic
    - Improved Module::Generic::File::Magic::from_buffer() to fall back to a
      temporary file when magic_buffer() returns a generic type, working around
      inconsistent behaviour across libmagic versions (5.39, 5.46)
    - Updated Module::Generic::Finfo::mime_type() to use Module::Generic::File::Magic
    - Fixed read-only value error in Module::Generic::Global on Perl 5.28
    - Fixed off-by-one in Module::Generic::Global max_size eviction (>= vs >)

v1.2.0 2026-03-08T22:47:58+0900
    - Added new module Module::Generic::File::Magic providing file type and MIME type detection
      through a three-level backend cascade: an XS binding to libmagic (loaded at runtime via
      dlopen, requiring only the libmagic1 runtime package, so no libmagic-dev at build time),
      a pure-Perl JSON backend using a bundled magic signature database derived from the
      freedesktop.org shared-mime-info XML, and a final fallback to the file(1) subprocess.
      The active backend is available via $Module::Generic::File::Magic::BACKEND and the
      backend() method. All MAGIC_* flag constants are exported via the :flags tag.
    - Added Generic.xs to the distribution to provide the XS backend for
      Module::Generic::File::Magic. The XS MODULE is declared as Module::Generic so that
      XSLoader resolves Generic.so correctly; PACKAGE = Module::Generic::File::Magic ensures
      all XS functions are installed in the correct namespace.
    - Added lib/Module/Generic/File/magic.json: a compact JSON magic signature database
      generated from the upstream freedesktop.org shared-mime-info XML (630 entries, covering
      binary signatures with offset ranges, endianness-aware integer types, AND sub-matches,
      and bitmask support).
    - Added scripts/gen_magic_json.pl: a generator script to regenerate magic.json from an
      updated freedesktop.org XML source. Supports XML::LibXML, XML::Twig, and XML::Parser.
      Included in the distribution for reference but not installed by make install.
    - Added unit test t/32.file_magic.t for Module::Generic::File::Magic.
    - Updated Module::Generic::Finfo to use Module::Generic::File::Magic for mime_type()
      detection, replacing the previous File::MMagic::XS / File::MMagic fallback chain.
    - Updated Module::Generic::File to add the alias method 'stringify' to 'load_utf8'
    - Added the option 'pretty' to the method 'unload_perl' in Module::Generic::File
    - Improved Module::Generic::Global by allowing a new option 'on_get' to set a callback upon deserialisation
    - Improved Module::Generic::File, and especially the subroutine 'tmpfile'
    - Improved cleanup in Module::Generic::Global

v1.1.3 2025-10-24T21:08:39+0900
    - Improved method colour_parse(), and related unit tests
    - Added methods force_tty() to affect colour messaging output, and colour_max_depth() used in colour_parse() for coloured debugging output.

v1.1.2 2025-10-19T16:37:01+0900
    - Corrected method error() to also check for non-empty . Gitlab #5

v1.1.1 2025-10-12T07:53:51+0900
    - Correcting method _load_class to respect the 'no_import' option.
    - Minor update in the documentation for Module::Generic::Global

v1.1.0 2025-09-30T15:30:30+0900
    - Improved the methods checksum_md5, checksum_sha256, and checksum_sha512 in Module::Generic::File

v1.0.6 2025-09-10T11:23:50+0900
    - Added methods parents, splitdir, and splitpath in Module::Generic::File
    - Corrected a faulty unit test in 27.dynamic.t
    - Added dynamic support methods _is_version and _looks_like_path
    - Improved a bit the documentation for Module::Generic
    - Corrected the test suite for Module::Generic::Dynamic (Gitlab issue #14 brought by Slaven Rezić)
    - Substantially enhanced the module Module::Generic::Dynamic
    - Improved documentation for Module::Generic::Dynamic

v1.0.5 2025-08-31T18:43:48+0900
    - Improved _set_get_hash_as_mix_object, and corrected minor issue in Module::Generic::Dynamic

v1.0.4 2025-08-30T17:46:06+0900
    - Corrected the freeze method of Module::Generic::Hash

v1.0.3 2025-08-30T14:29:05+0900
    - Corrected a minor oversight in Module::Generic::Null new
    - Corrected a minor error in documentation of Module::Generic::Array for 'callback'
    - Improved methods '_set_get_array_as_object', '_set_get_object_array', and '_set_get_object_array_object' in Module::Generic
    - Added methods 'has_callback', and 'get_callback' in Module::Generic::Array
    - Corrected method 'close' in Module::Generic::File to only apply to file for fileno.
    - Improved the method 'mime_type' in Module::Generic::Finfo

v1.0.2 2025-07-30T08:35:32+0900
    - Improved method _set_get_object_without_init in Module::Generic
    - Added the option of specifying a format to _set_get_datetime, and improved the method
    - Improved _parse_timestamp in Module::Generic
    - Corrected a minor bug in callbacks for _set_get_array_as_object in Module::Generic
    - Improved _set_get_boolean to allow specifying a boolean class
    - Enhanced _set_get_number with standard optional constraints
    - Added the method 'md5' (with an alias 'md5_checksum', and 'md5_hex') in Module::Generic::Hash
    - Improved callbacks handling in _set_get* methods
    - Improved Module::Generic::File::Cache by using Module::Generic::Global
    - Improved methods open, lock, and unlock in Module::Generic::File
    - Improved module Module::Generic::File::IO, added method locked and lock_state
    - Corrected a bug in method _set_get_scalar_as_object in Module::Generic
    - Corrected a bug in method as_string in embedded class Module::Generic::Global::Exception
    - Improved object instantiation for Module::Generic::Global when controller is an overloaded string
    - Corrected methods 'open', and 'key' in Module::Generic::SharedMem, and Module::Generic::SharedMemXS

v1.0.1 2025-05-30T15:04:32+0900
    - Corrected unit test in t/11.finfo.t

v1.0.0 2025-05-29T10:01:42+0900
    - Fully threads-safe version
    - Enhanced 'open' method in Module::Generic::SharedMem, and Module::Generic::SharedMemXS to reuse semaphore ID from opened objects, improving thread-safety.
    - Fixed 'write' method in Module::Generic::SharedMem to use memwrite with explicit shmat/shmdt, resolving sporadic 'Invalid argument' errors in threaded tests
    - Updated unit tests for Module::Generic::SharedMem, and Module::Generic::SharedMemXS for thread-safe shared memory access.
    - Improved POD for all modules about THREAD SAFETY to clarify thread-safe usage.
    - Added thread-safety unit tests for Module::Generic::File for concurrent file operations and locking
    - Enhanced POD for open, write, append, and mmap to clarify thread-safety for Module::Generic::File
    - Enhanced lock method in Module::Generic::File with thread-safe file descriptor locking via $FD_LOCKS
    - Improved locked method in Module::Generic::File to dynamically check lock state in threads and forks
    - Added cleanup of $FD_LOCKS in close method for threaded environments
    - Added unit tests for file locking and max recursion
    - Enhanced mmap POD with thread-safety warning
    - Enhanced lock and locked POD with thread-safety and $FD_LOCKS details
    - Enhanced POD in Module::Generic::Hash for delete, map, map_array, map_hash, and serialisation
    - Improved unit tests for Module::Generic::Hash
    - Enhanced POD in Module::Generic::HeaderValue for qstring, token_escape, value_data, and value_name
    - Added thread-safety unit tests regarding Module::Generic::HeaderValue for header operations
    - Added unit tests regarding Module::Generic::HeaderValue for decode, encode, original, param, params, qstring, reset, token_escape, token_max, value, value_as_string, value_data, value_name, value_max, and edge cases
    - Added thread-safety unit test for iterator operations for Module::Generic::Iterator
    - Added unit tests for Module::Generic::Iterator for elements, next, prev, and edge cases (empty iterators, invalid pos)
    - Enhanced POD in Module::Generic::JSON for new, decode, encode, decode_json, encode_json, to_json, and from_json
    - Added thread-safety unit test for Module::Generic::JSON for JSON operations
    - Added unit tests for Module::Generic::JSON for to_json, from_json, max_depth, and invalid options
    - Enhanced POD for Module::Generic::Null for new and added has_error method documentation
    - Added comprehensive unit test suite (t/29.null.t)
    - In Module::Generic::Number, added $LOCALE_LOCK shared variable and lock in init to ensure thread-safety during locale changes
    - Fixed typo "negatie" to "negative" in round and round2 error messages in Module::Generic::Number
    - Added thread-safety unit test for number operations for Module::Generic::Number
    - Added unit tests for Module::Generic::Number for round_zero, decode_lconv, _get_multipliers, and edge cases
    - Enhanced POD for Module::Generic::Number for new, and format
    - Fixed format method in Module::Generic::Number to preserve scientific notation exactly, avoiding locale formatting and precision issues
    - Updated the method 'defined' in Module::Generic::Scalar to return 0 or 1, not just an empty string that Perl 'defined' return when false
    - Switched to using the new module Wanted instead of Want

v0.43.4 2025-04-23T13:12:45+0900
    - Improved detection of threads
    - Improved _load_class method

v0.43.3 2025-04-22T21:08:25+0900
    - Minor correction of _set_get_callback method in Module::Generic
    - Corrected method 'clear_error' to make it thread safe.
    - Corrected minor bug in methods '_set_get_object', and '_set_get_object_without_init' in Module::Generic
    - Ensuring errors are cleared after further method calls
    - Improved handling of lvalue methods
    - Improved threads handling in Module::Generic::File
    - Better handling of threads for Module::Generic::Scalar, Module::Generic::SharedMem, and Module::Generic::SharedMemXS

v0.43.2 2025-04-20T19:45:24+0900
    - Improvement and correction for 'check' callbacks in Module::Generic

v0.43.1 2025-04-20T19:07:58+0900
    - Minor improvement for threads

v0.43.0 2025-04-20T17:34:37+0900
    - Improved message debugging in handling utf8 characters
    - Better handling of file with utf8 characters in Module::Generic::File
    - Added support for check in most _set_get_* methods
    - Added support for callbacks to more methods _set_get_*
    - Improved modules for thread-safety

v0.42.0 2025-03-24T22:15:34+0900
    - Added method new_json_safe in Module::Generic
    - Corrected unit tests for 25.file_csv.t

v0.41.0 2025-03-24T09:40:36+0900
    - Added module Module::Generic::JSON

v0.40.0 2025-03-21T20:33:29+0900
    - Added support for callback to the methods load_csv and unload_csv

v0.39.1 2025-03-21T06:26:47+0900
    - Correcting unit tests

v0.39.0 2025-03-20T17:12:08+0900
    - Corrected an issue with the serialisation of JSON
    - Added method real() to Module::Generic::Number
    - Added methods load_csv() and unload_csv()

v0.38.0 2025-03-12T007:28:48+0900
    - Improved method 'parent' in Module::Generic::File
    - unload_json in Module::Generic::File has the option 'allow_tags' set to false now by default.

v0.37.7 2024-11-01T17:34:35+0900
    - Silencing warnings in _set_get_scalar_as_object

v0.37.6 2024-09-08T17:52:18+0900
    - Corrected unit test

v0.37.5 2024-09-05T13:02:03+0900
    - Improved Module::Generic::File::Cache and Module::Generic::File::Mmap

v0.37.4 2024-09-05T10:24:44+0900
    - Improved Module::Generic::SharedMem and Module::Generic::SharedMemXS

v0.37.3 2024-08-22T22:43:07+0900
    - Updated method 'read' in Module::Generic::File to return an array of file objects if the option 'as_object' is provided and when dealing with directories.
    - Slight correction to Module::Generic::Null to properly return an object in object context.
    - Corrected dependency to perl v5.28 and on I18N::Langinfo v0.17 (Gitlab issue #10 brought by Graham Knop)

v0.37.2 2024-05-09T21:40:22+0900
    - Added method _set_get_enum in Module::Generic
    - Corrected unit test in t/10.file.t
    - Enabled catching fatal error in _set_get_callback() in Module::Generic

v0.37.1 2024-05-05T13:17:55+0900
    - Corrected a bug leading to an exhaust of memory in method format() of Module::Generic::Number
    - Addressed decoding issue of data returned by POSIX::localconv(), such as currency sign in Module::Generic::Number
    - Implemented the 'grouping' option in method format of Module::Generic::Number
    - Added method link() to Module::Generic::File

v0.37.0 2024-05-04T20:31:24+0900
    - Minor adjustment to Module::Generic::SharedMemXS
    - Minor adjustment to t/12.sharedmem.t
    - Added class function 'create_class' in Module::Generic to easily enable the creation of perl classes
    - Improved method __create_class in Module::Generic
    - Added class function 'exception' in Module::Generic::Exception
    - Added method concat() in Module::Generic::Array

v0.36.0 2024-05-03T07:04:54+0900
    - Corrected Module::Generic::Array documentation
    - Added the 'invert' option to method grep() in Module::Generic::Array
    - Improved support method _is_number

v0.35.5 2024-04-27T08:48:40+0900
    - Minor correction in Module::Generic::File to better handle file:// URIs.

v0.35.4 2024-04-26T13:55:12+0900
    - Minor improvements to Module::Generic::SharedMemXS

v0.35.3 2024-04-10T06:42:08+0900
    - Minor correction of unused variable warning in method _parse_timestamp() in Module::Generic

v0.35.2 2024-03-22T14:13:24+0900
    - Minor corrections to unit tests

v0.35.1 2024-02-24T21:02:55+0900
    - Correction of minor bug in Module::Generic::Exception induced by distribution post-processing automation.

v0.35.0 2024-02-24T11:13:54+0900
    - Improved support method _set_get_scalar implementing set/get callbacks
    - Improved Module::Generic::Exception adding the 'lang' method reflecting the language the message is in, if any language code is provided
    - Improved Module::Generic::Exception documentation
    - Minor correction to support method _set_get_scalar_as_object
    - Added unit test 24.exception.t

v0.34.1 2024-02-21T18:28:00+0900
    - Minor corrections in Module::Generic::File

v0.34.0 2024-01-29T15:50:15+0900
    - Added method realpath() in Module::Generic::File

v0.33.0 2023-11-24T16:45:01+0900
    - Add method _set_symbol
    - Improved method _get_symbol
    - Improved method _message (aka message) to better handle trailing hash argument
    - Updated method 'as_hash' in Module::Generic::Hash to accept the option strict and return a simple hash instead.
    - Updated module Module::Generic::TieHash to set a global $PAUSED
    - Improved datetime parser with method '_parse_timestamp'

v0.32.8 2023-11-17T21:27:29+0900
    - Updated method as_hash in Module::Generic
    - Improved code for method _set_get_hash_as_object and __instantiate_object in Module::Generic and Module::Generic::Dynamic

v0.32.7 2023-11-15T09:12:22+0900
    - Updated AUTOLOAD in Module::Generic::Dynamic
    - Updated method _set_get_scalar_as_object in Module::Generic

v0.32.6 2023-10-20T07:51:04+0900
    - Changed is_hash() in Module::Generic into a stricter appreciation of hash as non-blessed
    - Correcting _message in Module::Generic
    - Improvement in method new_json() in Module::Generic to accept any option that can also be set in JSON
    - Minor correction in _parse_timestamp in Module::Generic

v0.32.5 2023-10-11T20:31:59+0900
    - Corrected malformed signature for distribution release

v0.32.4 2023-09-26T20:39:17+0900
    - Updated method _is_empty in Module::Generic
    - Improved method colour_parse() in Module::Generic
    - Corrected messagef_colour
    - Improved as_hash
    - Reverted debug, verbose from being private properties prepended with '_', because some modules make direct access to those object properties.
    - Improved method _set_get_number() in Module::Generic when dealing with undefined value.

v0.32.3 2023-09-25T23:37:41+0900
    - Minor issue in unit test 14.core.t corrected

v0.32.2 2023-09-20T15:08:44+0900
    - Updated method _is_empty in Module::Generic to include array and hash
    - Improved method _is_class_loaded() in Module::Generic
    - Corrected the error() method in Module::Generic::Array that was not working as intended
    - Added the method reduce() in Module::Generic::Array as an implementation of the JavaScript equivalent.
    - Added in Module::Generic the methods _has_symbol, _get_symbol and _list_symbols

v0.32.1 2023-09-19T20:15:02+0900
    - Corrected a negative side affect of allowing, by default, the use of reference as hash keys when some key names are stringifyable objects. They would not stringify because they are object. Now allowing reference as hash keys is disabled by default and is an option.

v0.32.0 2023-09-05T16:11:30+0900
    - Cleaned up code and improved speed substantially
    - $_ in method foreach() of Module::Generic::Array refers to the current value of the array and can be altered directly
    - Added the default option 'allow_tags' to the method new_json() in Module::Generic
    - Improved module Module::Generic::TieHash
    - Enabled use of reference as keys in Module::Generic::TieHash
    - tying recursively hash reference in Module::Generic::TieHash
    - Updated POD documentation for Module::Generic::TieHash
    - Updated method as_hash() in Module::Generic::Array
    - Updated method as_string() in Module::Generic::Exception to stringify the value of message() when it contains an overloaded value.
    - Changed private object variable to be prefixed with '_'
    - Method as_hash() in Module::Generic::Hash no longer returns a regular hash, but instead the current object, since this is already an hash
    - Corrected callback in method _set_get_scalar_as_object() in Module::Generic

v0.31.2 2023-08-31T11:37:06+0900
    - Updated methods _set_get_file() and _set_get_glob() to allow for undef() value to essentially remove existing value.

v0.31.1 2023-07-31T08:50:04+0900
    - Improved methods _set_get_hash, _set_get_array and _set_get_boolean in Module::Generic
    - Improved method load_json in Module::Generic::File
    - Added method cause to Module::Generic::Exception to mirror the similar property found in JavaScript exception objects.
    - Corrected a small bug in method _set_get_class_array_object in Module::Generic
    - Updated Module::Generic::Finfo to use File::MMagic::XS if it is installed or fallback to File::MMagic

v0.31.0 2023-07-30T08:12:20+0900
    - Added the support method _on_error as a callback triggered by call to error()
    - Added the option 'wantlist' to method _set_get_array_as_object() in Module::Generic
    - Updated method _set_get_scalar_as_object in Module::Generic
    - Improved the method unload_perl() in Module::Generic::File to allow for the use of a callback to format the perl data.
    - Improved the method _set_get_version to allow to pass a definition hash reference and specify a class to handle the version number.
    - Improved the method _set_get_class
    - Created the class _set_get_class_array_object
    - Improved method as_hash in Module::Generic
    - Improved method __create_class in Module::Generic
    - Improved method init() in Module::Generic to allow hash or hash reference to be provided containing keys with dashes inside, such as "some-thing" and be checked against both "some-thing" and "some_thing"
    - Improved AUTOLOAD in Module::Generic to check for object property also using the underscore converted to dash, such as some_thing -> some-thing
    - Improved the methods load() and load_utf8() in Module::Generic::File to return a scalar object in object context.

v0.30.5 2023-06-11T10:24:31+0900
    - Improved method error() to also allow for the return of array, code, glob, hash or scalar reference when required

v0.30.4 2023-05-25T04:12:20+0900
    - Corrected a small bug in unit test 22.parse_timestamp.t when module DateTime::Format::JP is not installed

v0.30.3 2023-05-23T17:56:46+0900
    - Minor bug correction in support method _set_get_callback in Module::Generic

v0.30.2 2023-05-16T21:33:10+0900
    - Corrected a small bug in unload_json() in Module::Generic when JSON option utf8 was provided in overlap with the binmode also set to utf8, thus yielding mojibake.

v0.30.1 2023-05-14T21:44:27+0900
    - Corrected small bug in support function _set_get_number
    - Improved the code of some support functions

v0.30.0 2023-05-14T08:35:33+0900
    - Changes to inner working of several support functions to better support lvalue methods

v0.29.6 2023-03-12T06:55:19+0900
    - Minor improvements in Module::Generic::Scalar by adding Regexp::Common as a regexp class on top of perl's Regexp
    - Improved the helper method _set_get_object and corrected _set_get_object_without_init
    - Added the 'code' option to method 'pass_error' in Module::Generic
    - Support method '_can' in Module::Generic now also accepts an array of methods to check
    - Added _is_warnings_enabled as an alias to _warnings_is_enabled in Module::Generic
    - Improved Module::Generic::Hash json method to allow for more options
    - Added method _set_get_callback as an lvalue support method
    - Aliased _lvalue to _set_get_callback

v0.29.5 2023-02-25T13:51:43+0900
    - Minor improvement in Module::Generic::File in unload_json()

v0.29.4 2023-01-11T06:39:03+0900
    - Minor improvement in Module::Generic::Exception
    - Minor improvement in baseinfo()

v0.29.3 2022-12-18T13:03:04+0900
    - Correcting unit test for Module::Generic::Number

v0.29.2 2022-12-11T14:00:48+0900
    - Correcting oversight when dealing with undefined, but necessary property values in Module::Generic::Number

v0.29.1 2022-12-09T19:30:04+0900
    - Improvement of method _set_get_hash_as_mix_object in Module::Generic

v0.29.0 2022-12-07T11:51:47+0900
    - Mitigation around the use of Scalar::Util::reftype that returns undef for false, which in turn yields a perl warning of 'uninitialized value' when used in string comparison such as: Scalar::Util::reftype( $this ) eq 'ARRAY'
    - Corrected resolve() in Module::Generic::File to default $max_recursion to 0 if undefined.
    - Improved a bit Module::Generic::Number by caching number regular expression
    - Improved Module::Generic::SharedMem and Module::Generic::SharedMemXS
    - New method new_version() and _set_get_version in Module::Generic
    - Corrected a missing requirement in method _set_get_array_as_object() in Module::Generic
    - Updated how one can end a loop in for() and foreach() in Module::Generic::Array
    - Added missing method is_decimal in Module::Generic::Number
    - Reworked parts of Module::Generic::Number and integrating some codes from Number::Format
    - Removed dependency on Number::Format
    - Updated clone() in Module::Generic to deal with cases when called as a class function: MyClass->clone()
    - Added is_empty method to Module::Generic::Number
    - Updated _set_get_number() in Module::Generic to take n hash of options instead of field name and accept undef value
    - Improved error reporting upon object instantiation in Module::Generic::Number

v0.28.5 2022-10-30T19:51:48+0900
    - Minor correction in Module::Generic::Array
    - Added methods finddepth, flock and readdir to Module::Generic::File
    - Added rmtree as exportable function in Module::Generic::File
    - Added the option to fdopen a file descriptor in constructor new() in Module::Generic::File::IO
    - Added the exportable function wraphandle in Module::Generic::File::IO
    - Minor correction to AUTOLOAD
    - Improvement for method length() in Module::Generic::Scalar when the underlying scalar is undef
    - Improved _datetime in Module::Generic::Finfo
    - Improved methods _parse_datetime() and _set_get_datetime() in Module::Generic
    - Improved methods op() and op_minus_plus() in Module::Generic::DateTime
    - Added 'lock' parameter to method unload in Module::Generic::File
    - Improved 'auto_remove' property during init
    - Improvement of documentation in Module::Generic::DateTime, Module::Generic::File::IO and Module::Generic::File::Mmap
    - Minor improvements to Module::Generic::SharedMem

v0.28.4 2022-09-27T18:38:27+0900
    - Added method can_exec() in Module::Generic::File
    - Improved method remove() in Module::Generic::File::Cache
    - Improved Module::Generic::Array with cleanup upon object destruction
    - Improved unload_json() in Module::Generic::File to allow any JSON supported options.
    - Added methods load_perl() and unload_perl() in Module::Generic::File

v0.28.3 2022-09-25T17:03:10+0900
    - Added method unchomp to Module::Generic::Array
    - Better sanity check on the file cache directory in method 'open' in module Module::Generic::File::Cache
    - Added method close as an alias to 'remove' in Module::Generic::SharedMemXS
    - Added the tmpdir() parameter for new() and related method in Module::Generic::File::Cache
    - Improved method remove() in Module::Generic::File::Cache to remove the cache directory if it is empty.
    - Improved the method is_empty() in Module::Generic::File

v0.28.2 2022-09-18T21:18:30+0900
    - Corrected missing module in _parse_timestamp and parameters to DateTime::Format::Strptime

v0.28.1 2022-08-30T06:16:26+0900
    - Corrected missing POSIX module use (#4 thanks to Nicholas R.)

v0.28.0 2022-08-29T17:13:47+0900
    - Added support in serialise() and deserialise() for CBOR::Free
    - Improved support check in Module::Generic::SharedMem
    - Improved unit tests

v0.27.2 2022-08-07T17:36:42+0900
    - Corrected deserialiser(9 in Module::Generic, which wrongly was requiring Crypt::Misc (a leftover from previous modifications made).

v0.27.1 2022-08-05T07:38:11+0900
    - Correcting a debugging leftover in test unit.
    - Updating modules FREEZE method reflecting the latest documented change of Sereal::Encoder
    - Added support for JSON in methods serialise and deserialise in Module::Generic

v0.27.0 2022-08-01T12:12:43+0900
    - Added missing reset() method in Module::Generic::File::Mmap
    - Improved write method in Module::Generic::File::Cache, Module::Generic::File::Mmap and Module::Generic::SharedMem
    - Added alias method is_directory in Module::Generic::File
    - Added options crypt_base64 and base64 to methods serialise and deserialise in Module::Generic
    - Added the module Module::Generic::SharedMemXS

v0.26.0 2022-07-28T11:47:10+0900
    - Correcting mistake in test unit 17.serialise_storable.t, 18.serialise_sereal.t and 19.serialise_cbor.t
    - Implemented new module Module::Generic::File::Mmap using Cache::FastMmap
    - Updated documentation for Module::Generic::File::Cache and Module::Generic::SharedMem

v0.25.0 2022-07-18T00:44:48+0900
    - Implemented support for CBOR, Sereal and Storable with STORABLE_freeze and STORABLE_thaw in all modules
    - Changed serialise() and deserialise() to now use Storable::Improved instead of Storable, as Storable poorly handles GLOB objects and XS objects and ignores the return value from STORABLE_thaw().
    - Change dependency from Storable to Storable::Improved for better support for GLOB and XS modules objects
    - Added support for CBOR and Sereal when serialising shared data

v0.24.3 2022-07-15T15:07:18+0900
    - Improved checking shared memory support

v0.24.2 2022-06-28T14:12:48+0900
    - Corrected a missing condition in_set_get_code to return a dummy anonymous sub in object context

v0.24.1 2022-06-24T07:36:36+0900
    - Added the extensions method in Module::Generic::File
    - Improved _set_get_code method in Module::Generic
    - Improved pass_error to throw an error when fatal is enabled
    - Improved _is_integer in Module::Generic

v0.24.0 2022-04-28T06:55:11+0900
    - Corrected minor bug in _filehandle_method() in Module::Generic::File
    - Implemented mitigation for URI module who removes any leading and/or trailing space in the path
    - Made substantial improvements to glob() in Module::Generic::File
    - Added value_name and value_data in Module::Generic::HeaderValue
    - Spun off the package Module::Generic::Scalar::IO into its own file and heavily modified it, getting rid of IO::Scalar
    - Optimised Module::Generic to remove unnecessary modules and only load them when required
    - Added method has_valid_name() in Module::Generic::File
    - Added module Module::Generic::File::IO to provide a uniform and exception safe interface to IO::File
    - Modified tempfile() in Module::Generic::File to accept an extension with or without leading dot.
    - Added method _load_classes to Module::Generic
    - Changed read() in Module::Generic::File so that it accept the as_object option to return an object instead of a string.
    - Added method except() in Module::Generic::Array
    - Corrected _parse_timestamp for a date patter that is for GMT and ensures the format set has GMT time zone.
    - Improved the support method _warnings_is_enabled to check if class is even registered
    - Corrected mishandling of IO layer when opening scalar with Module::Generic::Scalar::IO
    - Improved _get_args_as_hash in Module::Generic to allow parameters to be mixed with other arguments

v0.23.1 2022-03-28T11:18:17+0900
    - Added method  _set_get_glob in Module::Generic
    - Corrected a small bug in Module::Generic::Dynamic
    - Corrected a small bug in method content() in Module::Generic::File
    - Added method chown in Module::Generic::File
    - Added method datetime in Module::Generic::DateTime
    - Made a minor correction in chmod when reporting the mode upon error
    - Changed autoload of methods in Module::Generic
    - Updated the methods append and prepend in Module::Generic::Scalar to also accept sa calar reference or object
    - Changed return value for _set_get_scalar_as_object to the object when the context is object
    - Corrected a minor bug in pass_error in Module::Generic
    - Minor improvement on when a directory was removed while perl was running affecting _uri_file_cwd() in Module::Generic::File

v0.23.0 2022-03-27T20:30:48+0900
    - Minor improvement in _parse_timestamp
    - Implemented inline autoloading of some subroutines

v0.22.1 2022-03-21T15:39:24+0900
    - Corrected shared memory unit test

v0.22.0 2022-03-18T14:57:40+0900
    - Corrected a minor bug in can_write() in Module::Generic::File
    - Added module Module::Generic::File::Cache to provide a file-base caching mechanism across processes
    - Updated _set_get_object and _set_get_object_without_init in Module::Generic to accept an array of classes
    - Updated method deserialise to check if data in file was serialise with Storable::store or Storable::freeze

v0.21.12 2022-03-11T21:41:04+0900
    - Added the 'skip' parameter to find() in Module::Generic::File
    - Added the 'glob' parameter to resolve() in Module::Generic::File
    - Added the 'globbing' parameter to new() in Module::Generic::File
    - Added the $GLOBBING in Module::Generic::File
    - Added the glob() method in Module::Generic::File
    - Made minor improvements to Module::Generic::SharedMem
    - Added serialise/serialize and deserialise/deserialize to Module::Generic

v0.21.11 2022-03-10T23:50:16+0900
    - Correction of a minor, but annoying bug in Module::Generic::Array with $TRUE and $FALSE not properly set.

v0.21.10 2022-03-10T17:25:56+0900
    - Correction to unit test with DateTime and system missing components

v0.21.9 2022-03-09T17:37:34+0900
    - Improvements with Module::Generic::SharedMem encoding and decoding of JSON data

v0.21.8 2022-03-08T14:47:21+0900
    - Corrected a minor bug in resolve() whereby 'base_dir' was not taken under account
    - Updated documentation in Module::Generic::DateTime and added new documentation for Module::Generic::DateTime::Interval
    - Allowed Module::Generic::DateTime to instantiate a default DateTime object when provided no argument
    - Updated method _datetime in Module::Generic::Finfo, and _parse_timestamp and _set_get_datetime in Module::Generic to trap issues DateTime::TimeZone::Local exceptions triggered when system lacks proper time zone components.

v0.21.7 2022-03-06T16:50:58+0900
    - Added methods load_json and unlaod_json in Module::Generic::File and new_json in Module::Generic
    - Added methods checksum_md5, checksum_256 and checksum512 in Module::Generic::File

v0.21.6 2022-03-06T13:10:02+0900
    - Corrected DateTime version requirement to avoid "Cannot determine local time zone" error

v0.21.5 2022-03-05T16:40:09+0900
    - Removing a unit test

v0.21.4 2022-03-05T14:23:20+0900
    - Updated Module::Generic::Number
    - Made Class::* modules separate

v0.21.3 2022-02-28T07:14:12+0900
    - Resubmission due to error on CPAN

v0.21.2 2022-02-27T23:52:10+0900
    - Resubmission after transfer from Dan Kogai of Class::Array and Class::Scalar

v0.21.1 2022-02-27T22:34:58+0900
    - Resubmission due to error

v0.21.0 2022-02-27T17:18:25+0900
    - Improved code and removed warnings
    - Added modules Class, Class::Array, Class::Boolean, Class::Exception, Class::File, Class::Finfo, Class::Hash, Class::Null, Class::Class::Number, Class::Scalar

v0.20.0 2022-01-17T05:17:16+0900
    - Corrected small time lag in test unit 08.datetime.t
    - Add class functions stdin, stdout and stderr to Module::Generic::File
    - Corrected a bug in Module::Generic::File

v0.19.0 2022-12-23T14:04:47+0900
    - Added method mkdir in Module::Generic::File for a simpler way to create a directory than mkpath
    - Minor change to _move_or_copy() in Module::Generic::File
    - Added callback method to Module::Generic::Array to control, accept or reject insertion or deletion
    - Added callback method to Module::Generic::Scalar to control, accept or reject addition or removal
    - Added method _set_get_object_lvalue in Module::Generic to allow setting object in lvalue context
    - Added method error in Module::Generic::Array
    - Added method _lvalue as a generic lvalue method to Module::Generic
    - Added method filter to Module::Generic::Array

v0.18.4 2021-12-17T09:10:36+0900
    - Updated _parse_timestamp to handle unix timestamp provided by Time::HiRes, i.e with a decimal
    - Small correction in _obj2h in Module::Generic
    - Added method _is_integer in Module::Generic
    - Modified exists in Module::Generic::Array to take under account objects.

v0.18.3 2021-12-14T12:44:31+0900
    - Added method replace in Module::Generic::Array
    - Added methods is_empty and remove in Module::Generic::Hash
    - Changed Module::Generic::SharedMem default encoding tool to JSON instead of Storable

v0.18.2 2021-12-08T15:27:47+0900
    - Correction in Number::Format when default locale is C or POSIX

v0.18.1 2021-12-07T21:24:28+0900
    - Resubmission

v0.18.0 2021-12-04T11:13:15+0900
    - Correction in baseinfo() in Module::Generic::File
    - Minor improvement in helper method _is_a in Module::Generic
    - Added the standard PROPAGATE method in Module::Generic::Exeption
    - Added the support for global variable FATAL_ERROR to trigger fatal error
    - Implemented virtualisation in Module::Generic::File. See documentation
    - Improved error() in Module::Generic to allow the use of "class" parameter
    - Added method aliases append() and prepend() in Module::Generic::Array
    - Implemented lvalue support for many support methods in Module::Generic
    - Added test units to better test Module::Generic
    - Improved Module::Generic::Number, lightening new()
    - Corrected a bug in as_String in Module::Generic::HeaderValue
    - Module::Generic::HeaderValue returns a boolean rather than the string in boolean context

v0.17.3 2021-11-22T11:14:35+0900
    - Minor correction in Module::Generic removing the INIT block

v0.17.2 2021-11-16T12:20:03+0900
    - Minor improvement to _parse_timestamp in Module::Generic

v0.17.1 2021-11-15T11:55:16+0900
    - Minor correction in Module::Generic in _parse_timestamp
    - Fine tuning of the module versions requirements

v0.17.0 2021-11-05T20:40:13+0900
    - Updated Module::Generic::Hash, adding alias method size() pointing to length()
    - Added class Module::Generic::HeaderValue
    - Added shortcut methods device, inode, mode, nlink, uid, gid, rdev, atime, mtime, ctime, block_size, blocks, last_accessed and last_modified in package Module::Generic::File
    - Added method utime in package Module::Generic::File
    - Added method line in package Module::Generic::Scalar::IO

v0.16.5 2021-10-24T12:10:52+0900
    - Corrected Module::Generic::SharedMem read() method to not decode if buffer is empty

v0.16.4 2021-10-22T15:51:20+0900
    - Correcting an oversight in Module::Generic (module Devel::Confess was required for debugging but not removed later)

v0.16.3 2021-10-21T12:17:58+0900
    - Improved mmap method in Module::Generic::File

v0.16.2 2021-10-15T16:10:14+0900
    - Improved mmap method in Module::Generic::File

v0.16.1 2021-10-12T22:46:58+0900
    - Added methods blocking, eof, fcntl, fdopen, flush, format_write, getc, getline, getlines, ioctl, printflush, sync, sysread, sysseek, syswrite, ungetc and content_objects in Module::Generic::File
    - Corrected test units for Module::Generif::File

v0.16.0 2021-10-11T13:51:57+0900
    - Tuned _set_get_datetime method to only set a default DateTime formatter when none were already set yet
    - Added support method _set_get_uuid to store universal unique identifier with data validation
    - Added method as_json in Module::Generic::Hash to return a json string representation of the hash object
    - Added method _can in Module::Generic to quickly check if a given object has support for a given method
    - Corrected an error check in Module::Generic::SharedMem for method lock()
    - Added methods get_null in Module::Generic::Array to get a Module::Generic::Null object when offset value is undef
    - Added methods second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth
    - Made a slight adjustment in Module::Generic::Null so that the parameter value for 'wants' can be specified in lowercase and updated the documentation
    - Added method _is_ip to check IPv4 and IPv6 syntax, including with CIDR notation in Module::Generic
    - Added method _set_get_ip and _is_uuid to check syntax of UUID
    - Improved Module::Generic::Dynamic
    - Added method as_hash in Module::Generic::Hash to get the hash object as a regular hash reference
    - Improved method _is_class_loaded to more simply check at the %INC rather than rely on external module
    - Improved method _load_class to allow for passing semantics to import and provided an hash reference of options such as package version and caller's package to import the module into.
    - Added missing TO_JSON method in Module::Generic::Exception and Module::Generic::Number
    - Updated _set_get_uri in Module::Generic to initiate a URI object if value is available and not yet an object.
    - Added method aliases lower and upper in Module::Generic::Scalar
    - Added methods pack and unpack in Module::Generic::Scalar
    - Added method pack in Module::Generic::Array
    - Modified Module::Generic::Array new method to accept also a list of elements.
    - Updated the method join in Module::Generic::Array to allow passing additional arguments on top of the current array object: $a->join( ',', $more_data );
    - Updated method replace in Module::Generic::Scalar to return a special Module::Generic::RegexpCapture object
    - Added method dump_hex() which uses Devel::Hexdump if it is installed
    - Updated the method new() in Module::Generic so that a possible error be propagated to its calling object when called from object like my $new = $old->new || die( $old->error );
    - Updated AUTOLOAD to pass $self as first argument if defined
    - Updated _set_get_object_array in Module::Generic to allow any non-blessed value to be passed for object instantiation, instead of hash reference previously.
    - Added the methods intersection, max, min in Module::Generic::Array
    - Added a destruction mechanism in the END block in Module::Generic::File for file or directory set to be auto removed
    - Updated method autoflush in Module::Generic::File to affect the underlying file handle with the value provided. Before, it was just storing the boolean value.
    - Added methods mmap and unmap in Module::Generic::File to use file-based variable that can be shared across processes

v0.15.8 2021-08-21T14:13:52+0900
    - Corrected an overlooked warning in Module::Generic::Array->split

v0.15.7 2021-08-20T18:14:07+0900
    - Added support method _get_stack_trace in Module::Generic
    - Updated method init to not issue any warning when a package method returns undef when passing undef value to those methods in Module::Generic. Normally a method returning undef is a sign of an error having occurred.
    - Updated the test units for Module::Generic::SharedMem
    - Improved documentation for Module::Generic::Array

v0.15.6 2021-08-18T09:44:08+0900
    - Updated documentation for Module::Generic::Scalar (lc, lcfirst, uc, ucfirst)
    - Updated the test unit for shared memory to better handle platform not supporting IPC SysV

v0.15.5 2021-07-26T12:54:23+0900
    - Corrected mistake with module name Module::Generic::DateTime
    - Added alias makpath() to mkpath() in Module::Generic::File
    - Added alias absolute() to abs() in Module::Generic::File

v0.15.4 2021-06-29T18:34:17+0900
    - Added methods join and split in Module::Generic::File
    - Changed method extension which can now take a new value and then return a new file object
    - Added method fragments to Module::Generic::File
    - Added helper method _is_number in Module::Generic

v0.15.3 2021-06-26T14:31:27+0900
    - Improvement for Module::Generic::File for method load
    - Switched Module::Generic::SharedMem to use json xs module by default as data packing mechanism, but with the choice left to the user between JSON and Storable
    - Corrected a bug in Module::Generic::File in method tmpfile that, due to errors in parameters, inadvertently, was creating also temporary directories
    - Corrected a bug in rmtree whereby the directory itself was not removed. Added the option "keep_root" to decide whether to keep it or not.

v0.15.2 2021-06-26T06:06:16+0900
    - Added missing documentation for Module::Generic::File
    - Improved documentation for Module::Generic

v0.15.1 2021-06-20T10:19:58+0900
    - Resubmission due to bundling error

v0.15.0 2021-04-18T12:05:35+0900
    - Corrected a minor bug in Module::Generic::Dynamic, ignoring now fields that do not contain any valid chracter to become a method
    - Added method as_array(), offset() and merge() in Module::Generic::Array
    - Added method empty() in Module::Generic::Array as an alias to reset()
    - Added methods as_array(), as_number(), join() and prepend() in Module::Generic::Scalar
    - Added method as_array(), as_scalar() in Module::Generic::Number
    - Added method as_array() and as_scalar() in Module::Generic::Boolean
    - Added support for changing the offset position in a for loop in Module::Generic::Array by returning a scalar reference of an integer
    - Added the return method in Module::Generic::Array to end embedded loops.
    - Added methods even, odd, remove and unique (based on List::Util::uniq) in Module::Generic::Array
    - Added TO_JSON to Module::Generic::Array, Module::Generic::Hash and Module::Generic::Scalar to allow its object to be encoded with JSON. You still need to set the convert_blessed JSON property to true though: my $j = JSON->new->convert_blessed;
    - In Module::Generic::Array, the following methods have been changed to return a Module::Generic::Scalar object in object context and if the value retrieved from the array is not a reference of any sort: first, get, index, last, pop, shift. The splice method has been modified to return a new Module::Generic::Array object in object context when only an offset and length, or just an offset was provided.
    - Added support method _is_class_loadable in Module::Generic to check if a module can be loaded without loading it
    - Added support method _get_args_as_array in Module::Generic
    - Corrected an obscure bug in clone() when using Want.
    - Added method new_null in Module::Generic
    - Added modules Module::Generic::File and Module::Generic::Finfo to deal with files
    - Added inline class Module::Generic::Scalar::IO that inherits from IO::Scalar and enables to print to scalar
    - Added module Module::Generic::SharedMem for easy-to-use shared memory interface

v0.14.2 2021-04-03T17:22:00+0900
    - Corrected a bug in _set_get_scalar_as_object to accept overloaded objects that implement stringification
    - Corrected a bug in _set_get_hash

v0.14.1 2021-03-31T14:50:43+0900
    - Correcting a test unit in datetime and upgrading version numbers for sub modules

v0.14.0 2021-03-20T21:43:18+0900
    - Added Module::Generic::Datetime and split inline modules to their own files
    - Added method _get_args_as_hash to get methods parameters as hash reference whether they were provided initially as such or not

v0.13.6 2021-02-14T13:01:16+0900
    - Improved test unit for cygwin not supporting crypt

v0.13.5 2021-02-06T11:46:18+0900
    - Corrected a mising require for DateTime::Format::Strptime
    - Improved the _warnings_is_enabled helper method

v0.13.4 2021-01-25T18:47:55+0900
    - Moved the requirement on Apache module to the BEGIN block as it should.

v0.13.3 2020-12-08T11:12:15+0900
    - Removed method message_switch
    - Added method _set_get_object_without_init for object that cannot just simply be initiated without specific parameters, such as Apache2::RequestRec.

v0.13.2 2020-11-20T22:14:54+0900
    - Corrected method _set_get_class_array when testing if data received are an array
    - Added parameter alias 'package' to parameter 'class' in _set_get_class
    - Added data type alias in _set_get_class for convenience.
    - Corrected pass_error to create an error object when it is passed a string rather than an error object.
    - Expanded method _parse_timestamp to include keyword 'now', relative timestamp and unix timestamp.

v0.13.1 2020-09-20T08:12:16+0900
    - Updated the error method to accept and use an Exception object as parameter
    - Updated the method throw in Module::Generic::Exception to either take a string and instantiate a new exception object or use the current one.
    - Improved the error() method to better report from the start of the call stack, excluding internal package and better handling exception object
    - Added "prefix" option in method Module::Generic::message to specify something else than "##" when displaying debugging message.
    - Updated clear_error to return $self instead of just 1 and allow chaining
    - Improved message_switch to avoid replacing existing message method
    - Modified __create_class that was missing the handling of object_array_object type of method.
    - Modified as_hash so that DateTime object are converted to string

v0.13.0 2020-07-10T10:30:10+0900
    - Added alias method _set_get_number_as_object for convenience and pointing to _set_get_number
    - Added the method append in Module::Generic::Scalar
    - Added an iterator class with Module::Generic::Iterator and Module::Generic::Iterator::Element
    - Added methods index, iterator and pos in Module::Generic::Array
    - Improved documentation for Module::Generic::Array
    - Corrected 2 typos in pod for Module::Generic::Scalar
    - Added method _set_get_lvalue to make it easy to implement object oriented lvalue methods
    - Changed the _set_get_number so that now it can also be accesed as lvalue
    - Added method is_even and is_odd to Module::Generic::Number
    - Added helper method _to_array_object to make it easy to create array object out of any parameters
    - Added method "has" as an alias to method "exists" to Module::Generic::Array and Module::Generic::Hash
    - dump now() uses Data::Dump instead of Data::Printer that offers a cleaner output
    - Added method map() map_array and map_hash in Module::Generic::Hash
    - Modified method as_hash in Module::Generic::Array to take an optional hash reference of options
    - Module::Generic::Hash object can now be instantiated with no hash provided. Before it required an hash reference to be provided to instantiate the object.
    - corrected methods map_array() and map_hash() in Module::Generic::Hash
    - Updated _set_get_url to better capture all kinds of url

v0.12.16 2020-06-17T15:03:17+0900
    - Added the helper method _is_a to simplify the check for object class
    - Added method get() and list() in Module::Generic::Array
    - Added method tr in Module::Generic::Scalar
    - Corrected error in exiting a for/foreach loop in Module::Generic::Array
    - Switched clone() method to using XS module Clone::clone()
    - Added methods new_array, new_hash, new_number and new_scalar in Module::Generic to make it more convenient to create object from those classes
    - Added some missing documentation to Module::Generic::Scalar

v0.12.15 2020-06-16T12:22:19+0900
    - Fixed some test units

v0.12.14 2020-05-28T05:46:04+0900
    - Tweaked Module::Generic::Number::_set_get_prop in my last desperate attempt to correct this tedious bug. Should fix RT #132714

v0.12.13 2020-05-27T13:58:32+0900
    - Corrected (hopefully) an issue whereby some undefined hash keys would not be undefined affecting test unit

v0.12.12 2020-05-25T13:55:00+0900
    - Corrected issues with Number::Format whereby it would revert to some default, so made all of the Number::Format argument explicit, even setting them to '' to avoid Number::Format from using its inadequate default
    - Implemented a workaround to Number::Format on Windows whereby some of the POSIX::localconv values are -1. When there is no value, such as when the locale is C or when it is on Windows (value being -1), then numeric values default to 0
    - Improved test units for when running on Windows Strawberry

v0.12.11 2020-05-25T14:56:15+0900

v0.12.10 2020-05-24T13:00:03+0900
    - Corrected bug in test unit for Module::Generic::Number. Fix bug RT #132671
    - Updated Module::Generic::Scalar to return undef when creating an object with an undefined value. Fix bug RT #132681 (https://rt.cpan.org/Ticket/Display.html?id=132681)

v0.12.9 2020-05-23T15:00:57+0900
    - Corrected bug in test unit for Module::Generic::Number

v0.12.8 2020-05-22T16:15:00+0900
    - Change POSIX requirement to version 1.53_01 and perl minimum version to v5.26.1

v0.12.7 2020-05-22T16:15:00+0900
    - Corrected RT bug #132664 https://rt.cpan.org/Public/Bug/Display.html?id=132664 in Module::Number::init

v0.12.6 2020-05-21T14:52:00+0900
    - Corrected a small bug in creating a Number::Format object.

v0.12.5 2020-05-20T23:22:00+0900
    - Change from TryCatch to Nice::Try because TryCatch got broken with release of Devel::Declare version 0.006020

v0.12.4 2020-05-16T17:22:00+0900
    - Specified more clearly version 0.006019 for Devel::Declare, because upper version break TryCatch

v0.12.3 2020-05-16
    - Corrected minor issues at line at lines 5428 and 5430 where a typo existed

v0.12.2 2020-05-05
    - Added Module::Generic::Number, its test units and pod documentations
    - _set_get_number now sets and gets a Module::Generic::Number instead of Text::Number
    - Added Module::Generic::Hash providing an object oriented approach to hash while stil enabling direct access as usual
    - Added missing test units

v0.12.1 2020-05-03
    - Corrected issue when @_ contains an undef value in __instantiate_object

v0.12.0 2020-05-01
    - Added colour_closest, colour_format, colour_parse and message_colour
    - Added missing pod documentation

v0.11.9 2020-04-27
    - Removed some ambiguity in the use of shift

v0.11.8 2020-04-25
    - Changed init when an object preset value looks like a package name, this now also requires that the package be loaded to consider it as a package requirement. Example: $self->{url} = 'URI'; requires an object URI for the object property 'url'
    - error() method now respect the 'no warnings' pragma
    - If 'no warnings' is set, an error wil still be set, but no warning will be printed out on STDERR

v0.11.7 2020-03-30

v0.11.6 2020-03-27

v0.11.5 2020-03-27

v0.11.4 2020-03-27

v0.11.3 2020-03-26

v0.11.2 2020-03-06

v0.11.1 2020-02-04

v0.11.0 2020-02-04

v0.10.2 2020-01-11

v0.10.1 2020-01-10

v0.10.0 2020-01-07

v0.9.0 2020-01-04

v0.8.0 2020-01-01

v0.7.2 2019-12-28

v0.7.1 2019-12-27

v0.7.0 2019-12-25

v0.6.11 2019-12-13

v0.6.10 2019-11-28

v0.6.9 2019-11-27

v0.6.8 2019-11-14

v0.6.7 2019-11-08

v0.6.6 2019-11-03
    - Adjusted the functionning of _set_get_hash_as_object so that it always returns an object even when there was no data. This is to avoid the perl error of "Can't call method "this_property" on an undefined value" when doing something like my_dynamic_hash->this_property

v0.6.5 2019-11-02
    - Added an inline package Module::Generic::Boolean to handle boolean value and the _set_get_boolean method
    - Added the use of Class::Load for loading dynamically packages as used in _instantiate_object
    - Added the methods true, false under Module::Generic to be used in _set_get_boolean and _is_class_loaded and _load_class which are wrappers for Class::Load::is_class_loaded and Class::Load::load_class

v0.6.4 2019-10-31
    - Added handling of undef passed as a parameter to some of the _set_get_* methods

v0.6.3 2019-10-23
    - Add _set_get_hash_as_object with recursive processing

v0.6.1 2019-10-19

v0.5.5 2919-10-13

v0.2.0 2019-08-28
    - Switched from Class::Struct to inner package for management of exceptions for better granularity

v0.1.0 2019-08-26
    - Initial version from pre-existing work done
