1Revision history for Perl extension IPC::Shareable. 2 31.06 2021-09-08 4 - Fix significant bug where at least on MacOS, if we generated a CRC of a 5 key that was greater than 0x80000000, it would round down the key to that 6 number exactly, casuing duplicates, and incorrect segment access 7 - Added new() method, returns a reference (default hash) without having to 8 do the tie() directly 9 - Modify t/65-seg_size.t beyond RAM max test to cover varying error messages 10 on differing OSs 11 - Renamed t/67-out_of_memory.t as the tests are related to exhausting SHM 12 slots, not RAM 13 141.05 2021-07-16 15 - Bump prereq version of Test::SharedFork to 0.35 16 - Added ability to use JSON as the serializer 17 - Added ipcs() 18 - Added test to ensure we croak if data size is greater than segment size 19 - Added 'tidy' attribute, removes unneeded nested structure segments 20 - In SharedMem, added _key attribute, and added set/get methods 21 - Changed key generation from using padding, pack and unpack to using 22 String::CRC32's crc32(), which allows arbitrary, unpadded strings 23 - Added attributes() allows fetching one, or all of the object's atttributes 24 - Added 'limit' attribute, by setting false, allows a user to set a segment 25 size larger than our internal 1GB default 26 - Cleaned up exception throwing (particularly if seg size eats up all 27 memory, we throw an appropriate message) 28 - Display proper exception if we try to exhaust all available shared memory 29 segments (fixes #3) 30 311.04 2021-06-28 32 - Skip unspawn tests for perls with -Duselongdouble, as Storable is not 33 compatible storing/retrieving such numbers (closes #5) 34 351.03 2021-06-25 36 - Add newline to singleton() warn so that it doesn't print out trace info 37 381.02 2021-06-25 39 - Remove erroneous listing from MANIFEST 40 - Work around issue in t/65-seg_size.t where MacOS and FreeBSD don't have 41 the -i flag to ipcs (thanks for the PR, Roland Walker!) 42 - Added singleton(), ensures that only a single instance of a script can 43 run at any given time 44 - Added tests to ensure we croak() if create is not set and the segment 45 doesn't yet exist 46 - Fix POD issue where we stated exclusive returns undef instead of croaking 47 (fixes #10) 48 - Change 'perl' shell call to $^X in t/71-unspawn.t (fixes #6) 49 501.01 2021-06-24 51 - Added 'graceful' flag option. With exclusive, if a second process 52 attempts to tie an exclusive segment, we exit gracefully instead of 53 croaking 54 551.00 2021-06-09 56 - Project adopted by Steve Bertrand 57 - Added global_register() and process_register() to return the 58 registries of active segments and semaphores 59 - Added seg() and sem() methods, returns the structure of a shared 60 memory segment and a sempahore respectively 61 - Added initial "persist" hash variables. Separate processes (even 62 multiple files in multiple windows) can share a variable, and it'll 63 remain available even after all processes exit. The variable will be 64 re-attached if the same shared segment key is used in subsequent runs 65 - Reversed order of Changes file 66 - Removed trace() and debug() code for ease of reading 67 - Improved exception/error messages, added exception testing, reduced 68 and minimized the number of exceptions actually uncaught 69 - Significant POD cleanup 70 - 100% rewrite of all test files, and added a slew of new ones, all 71 using Test::More 72 - Add build requirement of Test::SharedFork to handle the out of 73 sequence fork() tests in t/35-clean.t and t/30-lock_operations 74 - Major POD updates 75 - Added tests to prove that RT 123057 isn't really an issue (ie. segment 76 size parameter works correctly) 77 780.61 Mon Oct 8 00:27:39 2012 79 - Added patch from Frank Lichtenheld fixing IPC::Shareable's dependence 80 on the presence of a perl bug which is no longer present in 81 perl >= 5.10 82 - Fixed bug reported by Dan Harbin where the FETCH operation on a tie()d 83 string containing HASH, ARRAY, or SCALAR fails because it was using 84 the stringification of the data to determine what kind of reference 85 it was. Now using Scalar::Util::reftype 86 - Added missing dependency on IPC::Semaphore to Makefile.PL (reported 87 by Adrian Issott) 88 - Added a 'sleep 1' in a test that was hanging on certain systems 89 due (possibly) to two alarm signals coming too quickly to the 90 child process. From Ton Voon. 91 920.60 Mon Mar 5 15:20:18 EST 2001 93 - Lee Lindley (lee.lindley@bigfoot.com) added the _was_changed 94 optimization, improved the locking functionality, fixed 95 numerous bugs, and generally cleaned things up; thanks. 96 - Removed support for "no" as a false value in arguments; 97 thanks to Dave Rolsky <autarch@urth.org> 98 990.54 Mon Jan 8 11:52:28 EST 2001 100 - Fix to allow IPC::Shareable to work with 1.0.* versions of 101 Storable 102 1030.53 Tue Nov 14 00:33:35 EST 2000 104 - Fixed race condition in test suite causing intermitent 105 failures. 106 - Better checking for success of calls to Storable::thaw(); 107 thanks to Raphael Manfredi <Raphael_Manfredi@pobox.com>. 108 1090.52 Thu Sep 14 12:30:17 EDT 2000 110 - Now STORE, PUSH, POP, etc all call _thaw() before doing 111 their business. 112 - Refined SIGALRM handlers in test scripts 113 - Fixed concurrency issues affecting tied arrays and hashes; 114 thanks to thanks to Robert Emmery <roberte@netscape.com>, 115 Terry Ewing <terry@intevo.com>, Tim Fries 116 <timf@dicecorp.com>, and Joe Thomas <jthomas@women.com>. 117 - Doc fixes thanks to Paul Makepeace 118 <Paul.Makepeace@realprogrammers.com> 119 1200.51 Fri May 5 23:47:06 EDT 2000 121 - Fixed bug that would cause IPC::Shareable::BUF_SIZ to be 122 ignored; thanks to Robert Emmery <roberte@netscape.com> and 123 Mohammed J. Kabir <kabir@intevo.com> for reporting. 124 - Stopped tests from leaking shm segments 125 - Added test of argument parsing 126 - doc fixes 127 1280.50 Tue Mar 21 11:56:32 EST 2000 129 - Complete rewrite incorporating the following changes. 130 - Requires 5.00503. This allowed the module to get rid of the 131 global cache for shared memory segments; each Shareable 132 object now carries around its own data. 133 - 5.00503 also allowed tied arrays to be implemented 134 - Shared memory segments can no longer be of infinite length 135 thereby reducing the amount of code in the module by a 136 factor of 2. 137 - Uses IPC::Shareable::SharedMem class for accessing 138 shared memory. 139 - Uses IPC::Semaphore module for accessing semaphores. 140 - Completely revisited the way references are dealed with: all 141 referenced thingies are now automagically tied to shared 142 memory. 143 - Constants now imported from IPC::SysV; Shareable.xs is gone 144 - Rewrote test suite and moved into t subdirectory 145 - Updated man page 146 147 0.30 Mon Jan 19 11:13:41 EST 1998 148 - Added SEM_UNDO to semop() calls; Maurice Aubrey. 149 - Fixed some bugs in the locking code; Maurice Aubrey. 150 - Made calls to debug() conditional for efficency; Maurice Aubrey. 151 - Fixed a signal handler in test.pl; Maurice Aubrey. 152 1530.29 Mon Jan 12 13:49:42 EST 1998 154 - $MAXVER patch for when the version semaphore reaches its limit 155 and rolls back over to 0; Maurice Aubrey <maurice@hevanet.com>. 156 - patch to quieten things down under -w; Doug MacEachern 157 <dougm@telebusiness.co.nz> 158 1590.28 Wed Oct 22 14:59:08 EDT 1997 160 - cleaned up the way thingys are magically tied; Ben Sugars. 161 - moved many subroutines so that they are auto-loaded; Ben 162 Sugars. 163 - updated man page; Ben Sugars. 164 1650.26 Mon Oct 20 10:06:43 EDT 1997 166 - fixed bug regarding assigning a reference to an empty 167 hash to a tied variable. Thanks to Jason Stevens. 168 1690.25 Tue Oct 7 14:41:49 EDT 1997 170 - added more checking of sem*() and shm*() return values; 171 Michael Stevens and Ben Sugars. 172 - added shlock and shunlock; Ben Sugars. 173 - fixed bug that would cause modifications of magically 174 referenced thingys to fail. Thanks to Maurice Aubrey 175 1760.20 Thu Aug 28 15:13:46 EDT 1997 177 - added ability to magically create ties to implicitly 178 referenced thingys; Ben Sugars. 179 1800.18 Thu Aug 28 09:12:30 EDT 1997 181 - fixed garbage collection bug; Ben Sugars. Thanks to 182 Michael Stevens <michael@imaginet.co.uk> for the patch. 183 1840.17 Wed Aug 27 15:57:11 EDT 1997 185 - fixed some bugs in &parse_argument_hash; Ben Sugars. 186 1870.16 Mon Aug 11 16:10:54 EDT 1997 188 - new shared memory segments now initialized with null 189 values; Ben Sugars. 190 1910.15 Fri Aug 8 15:45:29 EDT 1997 192 - implemented locking using semaphores; Ben Sugars. 193 1940.12 Thu Aug 7 14:47:42 EDT 1997 195 - various bug fixes; Ben Sugars. 196 1970.11 Wed Aug 6 10:14:49 EDT 1997 198 - initial implementation of semaphores for versioning and 199 caching; Ben Sugars. 200 2010.10 Fri Aug 1 13:32:52 EDT 1997 202 - can now tie both scalars and hashes of arbitrary length; 203 Ben Sugars. 204 2050.05 Wed Jul 30 15:02:31 EDT 1997 206 - scalars can now be tied; Ben Sugars. 207 2080.01 Wed Jul 30 09:00:53 1997 209 - original version; created by h2xs 1.18. 210