Changes for version v1.5.2 - 2026-06-01

  • Fixed SIGSEGV at exit on Perl 5.16 to 5.22 with useithreads, caused by CORE::lock on a reference to a scalar leaf inside a :shared hash. Affected approximately 23 of 38 test files in 'make test' on CPAN Testers smokers running these configurations.
  • Refactored Module::Generic::Global to lock parent :shared hashes rather than leaf scalar entries: twelve places updated across new(), get(), set(), remove(), length(), lock(), cleanup_register(), _decrement(). Lock granularity changes from per-key to per-namespace or per-top-level-hash; functional behaviour is unchanged.
  • Added END/DESTRUCT phase guards at the top of every public method in Module::Generic::Global. Methods called during terminal phases now return a sentinel value (undef for getters, 1 for no-op operations) rather than touching :shared structures, which would SIGSEGV on older threads::shared releases.
  • Adapted error() to skip Module::Generic::Global::Exception object construction and the global $ERRORS write during terminal phases. A warn() is still emitted so diagnostic output reaches the user; the per-object _error slot is still populated with the bare message.
  • Internalised _in_end_phase() and _in_global_destruction() into Module::Generic::Global to avoid cross-package calls into Module::Generic, which would silently fail when Global is loaded before Module::Generic.
  • Hardened _share_repo() to refuse all work during END/DESTRUCT phases, and to populate plain (non-shared) refs into the global hashes when _NEED_SHARED is false, with a separate branch for the shared case.
  • Added _in_end_phase() helper to Module::Generic (companion to the pre-existing _in_global_destruction()), returning true during the Perl END phase. Useful for cleanup logic in user DESTROY methods.

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