Revision history for Perl extension IPC::Shareable.
1.10 2022-03-07
- Fix issue where if segments were created underneath of a parent by an
external process other than the process that created the parent, the
global register wasn't being updated, therefore those segments weren't
being removed when calling clean_up_all()
- All test files now check number of segments before and after the entire
script has run, verifying that all segments were cleaned up ok
- The test suite itself in its entirety makes sure that all segments
created during the suite run are cleaned up properly
- Added CI_TESTING=1 to coverage CI tests
1.09 2022-03-06
- Made 81-fork_dup_rand_keys.t developer only (but still need to figure out
why it only fails on FreeBSD)
1.08 2022-03-04
- Added 'protected' option and clean_up_protected(). If set, the cleanup
methods, nor the automatic 'destroy' functionality will remove the segment
the option was set in, nor any children created underneath of it. A call
to clean_up_protected() is required to remove them
- Updated attribute tests to include all available options
- _shm_key_rand() now checks EXCLUSIVE_CHECK_LIMIT times to find a key for
a free segment. It croaks if not
- Added _shm_key_rand_int() so we can mock it to test the dup random key
checks
- Added build prereq of Mock::Sub to test the random key function
1.07 2022-03-04
- When running in forked environments, _shm_key_rand() was consistently
returning the same 'random' key to each forked process. We've fixed this
issue, and added tests for it (fixed by adding a call to srand() before
rand)
- Move $SIG{CHLD} handlers to spawn() and unspawn() instead of having them
global (fixes #15)
- t/65-seg_size.t fails on 32-bit perls; Add a check and bail if we're on
a perl < 64-bit (fixes #14)
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, causing duplicates, and incorrect segment access
- Added new() method, returns a reference (default hash) without having to
do the tie() directly
- Fix issue in JSON decoder where an empty JSON string may have caused
decode failure
- 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 <autarch@urth.org>
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 <Raphael_Manfredi@pobox.com>.
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 <roberte@netscape.com>,
Terry Ewing <terry@intevo.com>, Tim Fries
<timf@dicecorp.com>, and Joe Thomas <jthomas@women.com>.
- Doc fixes thanks to Paul Makepeace
<Paul.Makepeace@realprogrammers.com>
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 <roberte@netscape.com> and
Mohammed J. Kabir <kabir@intevo.com> 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 <maurice@hevanet.com>.
- patch to quieten things down under -w; Doug MacEachern
<dougm@telebusiness.co.nz>
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 <michael@imaginet.co.uk> 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.