Revision history for Perl extension IPC::Shareable. 1.06 2021-09-08 - Fix significant bug where at least on MacOS, if we generated a CRC of a key that was greater than 0x80000000, it would round down the key to that number exactly, casuing duplicates, and incorrect segment access - Added new() method, returns a reference (default hash) without having to do the tie() directly - Modify t/65-seg_size.t beyond RAM max test to cover varying error messages on differing OSs - Renamed t/67-out_of_memory.t as the tests are related to exhausting SHM slots, not RAM 1.05 2021-07-16 - Bump prereq version of Test::SharedFork to 0.35 - Added ability to use JSON as the serializer - Added ipcs() - Added test to ensure we croak if data size is greater than segment size - Added 'tidy' attribute, removes unneeded nested structure segments - In SharedMem, added _key attribute, and added set/get methods - Changed key generation from using padding, pack and unpack to using String::CRC32's crc32(), which allows arbitrary, unpadded strings - Added attributes() allows fetching one, or all of the object's atttributes - Added 'limit' attribute, by setting false, allows a user to set a segment size larger than our internal 1GB default - Cleaned up exception throwing (particularly if seg size eats up all memory, we throw an appropriate message) - Display proper exception if we try to exhaust all available shared memory segments (fixes #3) 1.04 2021-06-28 - Skip unspawn tests for perls with -Duselongdouble, as Storable is not compatible storing/retrieving such numbers (closes #5) 1.03 2021-06-25 - Add newline to singleton() warn so that it doesn't print out trace info 1.02 2021-06-25 - Remove erroneous listing from MANIFEST - Work around issue in t/65-seg_size.t where MacOS and FreeBSD don't have the -i flag to ipcs (thanks for the PR, Roland Walker!) - Added singleton(), ensures that only a single instance of a script can run at any given time - Added tests to ensure we croak() if create is not set and the segment doesn't yet exist - Fix POD issue where we stated exclusive returns undef instead of croaking (fixes #10) - Change 'perl' shell call to $^X in t/71-unspawn.t (fixes #6) 1.01 2021-06-24 - Added 'graceful' flag option. With exclusive, if a second process attempts to tie an exclusive segment, we exit gracefully instead of croaking 1.00 2021-06-09 - Project adopted by Steve Bertrand - Added global_register() and process_register() to return the registries of active segments and semaphores - Added seg() and sem() methods, returns the structure of a shared memory segment and a sempahore respectively - Added initial "persist" hash variables. Separate processes (even multiple files in multiple windows) can share a variable, and it'll remain available even after all processes exit. The variable will be re-attached if the same shared segment key is used in subsequent runs - Reversed order of Changes file - Removed trace() and debug() code for ease of reading - Improved exception/error messages, added exception testing, reduced and minimized the number of exceptions actually uncaught - Significant POD cleanup - 100% rewrite of all test files, and added a slew of new ones, all using Test::More - Add build requirement of Test::SharedFork to handle the out of sequence fork() tests in t/35-clean.t and t/30-lock_operations - Major POD updates - Added tests to prove that RT 123057 isn't really an issue (ie. segment size parameter works correctly) 0.61 Mon Oct 8 00:27:39 2012 - Added patch from Frank Lichtenheld fixing IPC::Shareable's dependence on the presence of a perl bug which is no longer present in perl >= 5.10 - Fixed bug reported by Dan Harbin where the FETCH operation on a tie()d string containing HASH, ARRAY, or SCALAR fails because it was using the stringification of the data to determine what kind of reference it was. Now using Scalar::Util::reftype - Added missing dependency on IPC::Semaphore to Makefile.PL (reported by Adrian Issott) - Added a 'sleep 1' in a test that was hanging on certain systems due (possibly) to two alarm signals coming too quickly to the child process. From Ton Voon. 0.60 Mon Mar 5 15:20:18 EST 2001 - Lee Lindley (lee.lindley@bigfoot.com) added the _was_changed optimization, improved the locking functionality, fixed numerous bugs, and generally cleaned things up; thanks. - Removed support for "no" as a false value in arguments; thanks to Dave Rolsky 0.54 Mon Jan 8 11:52:28 EST 2001 - Fix to allow IPC::Shareable to work with 1.0.* versions of Storable 0.53 Tue Nov 14 00:33:35 EST 2000 - Fixed race condition in test suite causing intermitent failures. - Better checking for success of calls to Storable::thaw(); thanks to Raphael Manfredi . 0.52 Thu Sep 14 12:30:17 EDT 2000 - Now STORE, PUSH, POP, etc all call _thaw() before doing their business. - Refined SIGALRM handlers in test scripts - Fixed concurrency issues affecting tied arrays and hashes; thanks to thanks to Robert Emmery , Terry Ewing , Tim Fries , and Joe Thomas . - Doc fixes thanks to Paul Makepeace 0.51 Fri May 5 23:47:06 EDT 2000 - Fixed bug that would cause IPC::Shareable::BUF_SIZ to be ignored; thanks to Robert Emmery and Mohammed J. Kabir for reporting. - Stopped tests from leaking shm segments - Added test of argument parsing - doc fixes 0.50 Tue Mar 21 11:56:32 EST 2000 - Complete rewrite incorporating the following changes. - Requires 5.00503. This allowed the module to get rid of the global cache for shared memory segments; each Shareable object now carries around its own data. - 5.00503 also allowed tied arrays to be implemented - Shared memory segments can no longer be of infinite length thereby reducing the amount of code in the module by a factor of 2. - Uses IPC::Shareable::SharedMem class for accessing shared memory. - Uses IPC::Semaphore module for accessing semaphores. - Completely revisited the way references are dealed with: all referenced thingies are now automagically tied to shared memory. - Constants now imported from IPC::SysV; Shareable.xs is gone - Rewrote test suite and moved into t subdirectory - Updated man page 0.30 Mon Jan 19 11:13:41 EST 1998 - Added SEM_UNDO to semop() calls; Maurice Aubrey. - Fixed some bugs in the locking code; Maurice Aubrey. - Made calls to debug() conditional for efficency; Maurice Aubrey. - Fixed a signal handler in test.pl; Maurice Aubrey. 0.29 Mon Jan 12 13:49:42 EST 1998 - $MAXVER patch for when the version semaphore reaches its limit and rolls back over to 0; Maurice Aubrey . - patch to quieten things down under -w; Doug MacEachern 0.28 Wed Oct 22 14:59:08 EDT 1997 - cleaned up the way thingys are magically tied; Ben Sugars. - moved many subroutines so that they are auto-loaded; Ben Sugars. - updated man page; Ben Sugars. 0.26 Mon Oct 20 10:06:43 EDT 1997 - fixed bug regarding assigning a reference to an empty hash to a tied variable. Thanks to Jason Stevens. 0.25 Tue Oct 7 14:41:49 EDT 1997 - added more checking of sem*() and shm*() return values; Michael Stevens and Ben Sugars. - added shlock and shunlock; Ben Sugars. - fixed bug that would cause modifications of magically referenced thingys to fail. Thanks to Maurice Aubrey 0.20 Thu Aug 28 15:13:46 EDT 1997 - added ability to magically create ties to implicitly referenced thingys; Ben Sugars. 0.18 Thu Aug 28 09:12:30 EDT 1997 - fixed garbage collection bug; Ben Sugars. Thanks to Michael Stevens for the patch. 0.17 Wed Aug 27 15:57:11 EDT 1997 - fixed some bugs in &parse_argument_hash; Ben Sugars. 0.16 Mon Aug 11 16:10:54 EDT 1997 - new shared memory segments now initialized with null values; Ben Sugars. 0.15 Fri Aug 8 15:45:29 EDT 1997 - implemented locking using semaphores; Ben Sugars. 0.12 Thu Aug 7 14:47:42 EDT 1997 - various bug fixes; Ben Sugars. 0.11 Wed Aug 6 10:14:49 EDT 1997 - initial implementation of semaphores for versioning and caching; Ben Sugars. 0.10 Fri Aug 1 13:32:52 EDT 1997 - can now tie both scalars and hashes of arbitrary length; Ben Sugars. 0.05 Wed Jul 30 15:02:31 EDT 1997 - scalars can now be tied; Ben Sugars. 0.01 Wed Jul 30 09:00:53 1997 - original version; created by h2xs 1.18.