Changes for version v1.5.6 - 2026-06-04

  • Improved the function 'tempfile' in Module::Generic::File to ensure the temporary file does not already exist. Since we use Data::UUID->create_str, it is already very safe, so this is more a precaution.
  • Bug fixes
    • Hardened _parse_timestamp() to drop the formatter when an installed DateTime::Format::JP is older than v0.1.7. Older versions only know how to format DateTime objects and emit a warning under an unregistered category when given a DateTime::Lite, which broke tests using warnings::register on CPAN Testers smokers. Stringification now falls back to DateTime::Lite's iso8601() in that case.
    • Bumped the minimum required version of DateTime::Format::Lite from v0.1.2 to v0.1.3. Version v0.1.2 called DateTime::Lite::TimeZone->new() without the extended option when resolving the %O token, which made timezone abbreviations such as JST or CET fail to resolve via the extended_aliases table. v0.1.3 fixes this by passing extended => 1.
    • Module::Generic::Global: callers of _share_repo() now propagate its return value, returning early with a type-appropriate value if the shared repository cannot be initialised (typically during END or DESTRUCT phases). This eliminates "Invalid value for shared scalar (in cleanup)" warnings that were emitted when methods such as remove(), set(), or get() drilled into $REPO->{ $ns } after threads::shared had begun tearing down its structures.
    • Fixed t/11.finfo.t to always join all threads in the thread-safe datetime subtest. The previous code used $success &&= $thr->join() which short-circuits as soon as any thread returns a false value, leaving the remaining threads finished but unjoined and triggering "Perl exited with active threads" warnings on threaded smokers.

Documentation

An Enhanced DateTime::Duration Object
An Array Iterator Element Object Class
A Regexp Result Object
Shared Memory Manipulation

Modules

Generic Module to inherit from
An Array Manipulation Object Class
Boolean Representation Class
A DateTime wrapper for enhanced features
Dynamic Object Class
Generic Module Exception Class
File Object Abstraction Class
File-based Cache
File IO Object Wrapper
File type and MIME detection with 3-level backend cascade
MMap File Class
File Info Object Class
Contextual global storage by namespace, class or object
Hash Manipulation Object Class
Generic Header Value Parser
An Array Iterator Object Class
A thin and reliable wrapper around JSON
Null Value Chaining Object Class
Number Manipulation Object Class
String Manipulation Object Class
Generic Module Scalar IO Class
Shared Memory Manipulation
Shared Memory Manipulation with XS API
Object Access Control Class
Generic Tie Hash Mechanism for Object Oriented Hashes

Provides

in lib/Module/Generic/DateTime.pm
in lib/Module/Generic/Number.pm
in lib/Module/Generic/Iterator.pm
in lib/Module/Generic/Number.pm
in lib/Module/Generic/Number.pm