File: history.html

package info (click to toggle)
python-sysv-ipc 1.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 540 kB
  • sloc: ansic: 3,140; python: 1,960; makefile: 8; sh: 4
file content (430 lines) | stat: -rw-r--r-- 14,386 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
<!DOCTYPE html>

<html lang='en'>

<head>
	<meta charset="utf-8">
	<meta name="author" content="Philip Semanchuk">
	<meta name="copyright" content="All contents &copy; 2021 Philip Semanchuk">
	<meta name="keywords" content="python sysv system v ipc semaphore shared memory message queue">

	<title>The sysv_ipc Module for SysV IPC Under Python -- Version History</title>

	<style>
		li {
			margin-top: .67em;
			margin-bottom: .67em;
		}
	</style>
</head>

<body>

<h2>Version History</h2>

<p>This is the version history for the
<a href="http://semanchuk.com/philip/sysv_ipc/">sysv_ipc module</a>.</p>

<ul>
	<li id="v1_1_0"><strong><span id="current">Current</span> &ndash; 1.1.0 (17 Jan 2021) &ndash;</strong>
		<ul>
			<li>Drop support for Python 2, also for Python 3.4 and 3.5.</li>
			<li><strong>Behavior change:</strong> <code>ftok()</code> now raises <code>OSError</code> if it fails so the particulars of the failure are visible to the caller. Thanks to James Williams for the suggestion. (Previously the function just returned -1 if it failed.)
			</li>
		</ul>
	</li>

	<li id="v1_0_1">1.0.1 (29 Nov 2019) &ndash;
		<ul>
			<li>Fix
				<a href="https://github.com/osvenskan/sysv_ipc/issues/7">a memory leak bug in <code>SharedMemory.write()</code> that only occurred under Python 3</a>. Thanks to Andy for reporting!
			</li>
			<li>This will be the last version to support Python 2 which is pining for the fjords.</li>
		</ul>
	</li>

	<li>1.0.0 (2 Feb 2018) &ndash;
		<p>I'm bumping the version number to 1.0.0 because I now consider this feature complete.
			That doesn't mean I won't add features, but I don't feel like I need to.
		</p>

		<ul>
			<li>Added support for Python <code>memoryview</code> and <code>bytearray</code> objects to be created from a <code>SharedMemory</code> instance.
			</li>
			<li>Added support for building wheels.</li>
			<li>Moved source code hosting to git and <a href='https://github.com/osvenskan/sysv_ipc'>GitHub</a>.</li>
			<li>Moved the demo code into its own directory.</li>
			<li>Minor changes (slightly improved tests, a few compiler warnings fixed, PEP8 improvments, etc.)</li>
		</ul>
	</li>

	<li id="v0_7_0">0.7.0 (11 Feb 2016) &ndash;
		<p>Version 0.7.0 is finally out now that this package is 7 years old...</p>

		<ul>
			<li>Dropped compatibility with Python &lt; 2.7.</li>

			<li>Added unit tests with almost complete coverage.</li>

			<li>Fixed a doc bug for <code>SharedMemory.write()</code>. On an
				attempt to write outside of the segment, the code raises
				<code>ValueError</code>. The documentation had incorrectly stated that
				<code>write()</code> would silently
				discard the data that overflowed the segment.
			</li>

			<li>Fixed a code bug in <code>SharedMemory.write()</code> that
				incorrectly interpreted offsets &gt; <code>LONG_MAX</code>.
			</li>

			<li>Fixed a code bug in <code>SharedMemory.write()</code> that
				didn’t always generate a <code>ValueError</code> for negative
				offsets.
			</li>

			<li>Fixed a doc/code bug where <code>SharedMemory.attach()</code> was
				documented to accept keyword arguments but did not. Now it does.
			</li>

			<li>Fixed some header bugs that prevented the code from using
				<code>PY_SSIZE_T_CLEAN</code>. Thanks to Tilman Koschnick for
				bringing this to my attention.
			</li>

			<li>Added doc to note that this module exposes <code>SHM_RDONLY</code>
				as a module-level constant.
			</li>
		</ul>
	</li>

	<li id="v0_6_8">0.6.8 (12 Sept 2014) &ndash;
		<ul>
			<li>Fixed a bug in <code>prober.py</code> where prober would fail
				on systems where Python's include file was not named
				<code>pyconfig.h</code>. (RHEL 6 is one such system.) Thanks to
				Joshua Harlow for the bug report and patch.
			</li>

			<li><i>Spasibo</i> again to Yuriy Taraday for pointing out that
				the semaphore initialization example I changed in the previous
				version was still not
				quite correct, and for suggesting something better.
			</li>
		</ul>
	</li>

	<li id="v0_6_7">0.6.7 (1 August 2014) &ndash;
		<p><i>Spasibo</i> to Yuriy Taraday for reporting some doc errors
			corrected in this version.
		</p>

		<ul>
			<li>Added KEY_MIN as a module-level constant. The documentation
				has claimed that it was available for a long time so now the
				code finally matches the documentation.
			</li>

			<li>Changed randomly generated keys to never use a value of 0.</li>

			<li>Fixed two documenation errors in the special section on
				semaphore initialization and gave long overdue credit to
				W. Richard Stevens' book for the code idea. (Any code mistakes
				are mine, not his.)
			</li>

			<li>This is the first version downloadable from PyPI.</li>
		</ul>
	</li>

	<li id="v0_6_6">0.6.6 (15 October 2013) &ndash;
		<p>Added the ability to use Semaphores in context managers.
			Thanks to Matt Ruffalo for the suggestion and patch.
		</p>
	</li>

	<li id="v0_6_5">0.6.5 (31 March 2013) &ndash;
		<p>Fixed a bug where SharedMemory.write() claimed to accept
				keyword arguments but didn't actually do so. Thanks to
				Matt Ruffalo for the bug report and patch.
		</p>
	</li>

	<li id="v0_6_4">0.6.4 (19 Dec 2012) &ndash;
		<ul>
			<li>Added a module-level <code>attach()</code> method based on a
				suggestion by Vladimír Včelák.
			</li>
			<li>Added the <code>ftok()</code> method along with dire warnings about
				its use.
			</li>
		</ul>
	</li>

	<li id="v0_6_3">0.6.3 (3 Oct 2010) &ndash;
		<ul>
			<li>Fixed a segfault in <code>write()</code> that occurred any time
				an offset was passed. This was introduced in v0.6.0.
				<i>Tack</i> to Johan Bernhardtson for the bug report.
			</li>
		</ul>
	</li>

	<li id="v0_6_2">0.6.2 (6 July 2010) &ndash;
		<ul>
			<li>Updated setup.py metadata to reflect Python 3 compatibility.
				No functional change.
			</li>
		</ul>
	</li>

	<li id="v0_6_1">0.6.1 (26 June 2010) &ndash;
		<ul>
			<li>Fixed a typo introduced in the previous version that caused
				unpredictable behavior (usually a segfault) if a block flag
				was passed to <code>MessageQueue.send()</code>. <i>Obrigado</i>
				to Álvaro Justen and Ronald Kaiser for the bug report and
				patch.
			</li>
		</ul>
	</li>

	<li id="v0_6_0">0.6.0 (20 May 2010) &ndash;
		<ul>
			<li>Added Python 3 support.</li>
			<li>Renamed a constant that caused a problem under AIX.
				Thanks to Loic Nageleisen for the bug report.
			</li>
			<li>Updated this documentation a little.</li>
		</ul>
	</li>

	<li id="v0_5_2">0.5.2 (17 Jan 2010) &ndash;
		<ul>
			<li>Fixed a bug that insisted on keys &gt; 0. Thanks to 原志
				(Daniel) for the bug report and patch.
			</li>
			<li>Fixed a bug where the module could have generated invalid
				keys on systems that typedef <code>key_t</code> as a
				<code>short</code>. I don't think such a system exists, though.
			</li>
			<li>Fixed a LICENSE file typo.</li>
			<li>Added an RSS feed to this page.</li>
		</ul>
	</li>

	<li id="v0_5_1">0.5.1 (1 Dec 2009) &ndash;
		<p>No code changes in this version.</p>
		<ul>
			<li>Fixed the comment in <code>sysv_ipc_module.c</code> that
				still referred to the GPL license.
			</li>
			<li>Added the attributes <code>__version</code>, <code>__author__</code>,
				<code>__license__</code> and <code>__copyright__</code>.
			</li>
			<li>Removed <code>file()</code> from <code>setup.py</code> in favor
				of <code>open()</code>.
			</li>
		</ul>
	</li>

	<li id="v0_5">0.5 (6 Oct 2009) &ndash;
		<p>No code changes in this version.</p>
		<ul>
			<li>Changed the license from GPL to BSD.</li>
		</ul>
	</li>

	<li id="v0_4_2">0.4.2 (22 Mar 2009) &ndash;
		<p>No code changes in this version.</p>
		<ul>
			<li>Fixed broken documentation links to youtube.</li>
			<li>Fixed the project name in the LICENSE file.</li>
		</ul>
	</li>

	<li id="v0_4_1"> 0.4.1 (12 Feb 2009) &ndash;
		<ul>
			<li>Changed status to beta.</li>
			<li>Added automatic generation of keys.</li>
			<li>Added a message queue demo.</li>
			<li>Added <code>str()</code> and <code>repr()</code> support to all
				objects.</li>
			<li>Fixed a bug in <code>SharedMemory.write()</code> that could cause
				a spurious error of "Attempt to write past end of memory
				segment". This bug only occurred on platforms using
				different sizes for <code>long</code> and <code>int</code>, or
				<code>long</code> and <code>py_size_t</code>
				(depending on Python version). <em>Tack</em> to Jesper
				for debug help.
			</li>
			<li>Plugged a memory leak in <code>MessageQueue.receive()</code>.</li>
			<li>Added a VERSION attribute to the module.</li>
		</ul>
	</li>

	<li id="v0_4">0.4 (28 Jan 2009) &ndash;
		<ul>
			<li>Added message queues.</li>
			<li>Fixed a bug where the <code>key</code> attribute of SharedMemory objects
				returned garbage.
			</li>
			<li>Fixed a bug where keys &gt; INT_MAX would get truncated on
				platforms where longs are bigger than ints.
			</li>
			<li>Provided decent inline documentation for object attributes
				(available via the <code>help()</code> command).
			</li>
			<li>Rearranged the code which was suffering growing pains.</li>
		</ul>
	</li>

	<li id="v0_3">0.3 (16 Jan 2009) &ndash;
		<p>This version features a rename of classes and errors
			(sorry about breaking the names), some modifications to
			semaphore timeouts, and many small fixes.
		</p>

		<p>A semaphore's <code>.block</code> flag now consistently trumps the
			timeout. When <code>False</code>, the timeout is irrelevant -- calls
			will never block. In prior versions, the flag was ignored
			when the timeout was non-zero.
		</p>

		<p>Also, on platforms (such as OS X) where <code>semtimedop()</code> is
			not supported, all timeouts are now treated as <code>None</code>.
			In other words, when <code>.block</code> is True, all calls
			wait as long as necessary.
		</p>

		<p>Other fixes &ndash;</p>

		<ul>
			<li>Fixed the poor choices I'd made for class and
				error names by removing the leading "SysV" and "SysVIpc".
			</li>
			<li>Removed dependencies on Python 2.5. The module now works
				with Python 2.4.4 and perhaps earlier versions.
			</li>
			<li>Fixed a bug where I was not following SysV semaphore semantics
				for interaction between timeouts and the block flag.
			</li>
			<li>Fixed compile problems on OpenSolaris 2008.05.</li>
			<li>Got rid of OS X compile warnings.</li>
			<li>Fixed many instances where I was making potentially lossy
				conversions between Python values and Unix-specific
				types like <code>key_t</code>, <code>pid_t</code>, etc.
			</li>
			<li>Fixed a bug in the SharedMemory <code>attach()</code> function
				 that would set an error string but not return an error
				 value if the passed address was not <code>None</code> or a long.
			</li>
			<li>Simplified the code a little.</li>
			<li>Restricted the semaphore <code>acquire()</code> and
				<code>release()</code> delta to be between SHORT_MIN and
				SHORT_MAX since
				<a href="http://opengroup.org/onlinepubs/007908775/xsh/semop.html">it
					is a short in the SUSv2 spec</a>.
			</li>
			<li>Fixed a bug where calling <code>acquire()</code> or
				<code>release()</code> with a delta of <code>0</code> would call
				<code>.Z()</code> instead.
			</li>
			<li>Disallowed byte counts ≤ <code>0</code> in
				<code>SharedMemory.read()</code>
			</li>
			<li>Fixed a bug in the <code>SharedMemory</code> init code that
				could, under vanishingly rare circumstances, return failure
				without setting the error code.
			</li>
			<li>Removed some dead code relating to the <code>.seq</code> member
				of the <code>sem_perm</code> and <code>shm_perm</code> structs.
			</li>
			<li>Stopped accessing the non-standard <code>key</code>
				(a.k.a. <code>_key</code> and <code>__key</code>) element of the
				<code>ipc_perm</code> struct.
			</li>
			<li>Added code to ensure the module doesn't try to create
				a string that's larger than Python permits when reading
				from shared memory.
			</li>
		</ul>
	</li>

	<li>0.2.1 (3 Jan 2009) &ndash;
		<ul>
			<li>Fixed a bug that prevented the module-specific
				errors (<code>ExistentialError</code>, etc.) from
				being visible in the module.
			</li>
			<li>Fixed a bug that re-initialized shared memory with
				the init character when only <code>IPC_CREAT</code> was specified
				and an existing segment was opened.
			</li>
			<li>Fixed a bug that always defaulted the size of a shared
				memory segment to <code>PAGE_SIZE</code>. Updated code and
				documentation to use intelligent defaults. <em>Tack</em> to
				Jesper for the bug report.
			</li>
			<li>Several cosmetic changes. (Added more metadata to setup.py,
				added a newline to the end of probe_results.h to avoid
				compiler complaints, etc.)
			</li>
		</ul>
	</li>

	<li>0.2 (16 Dec 2008) &ndash;
		Lots of small fixes.

		<ul>
			<li>Fixed a bug where calling <code>shm.remove()</code> on shared
			   memory that was already removed would cause a SystemError.
			   (I wasn't setting the Python error before returning.)
			</li>

			<li>Fixed a couple of bugs that would cause the creation
				of a new, read-only shared memory segment to fail.
			</li>

			<li>Fixed a bug that would cause the creation
				of a new, read-only semaphore to fail.
			</li>

			<li>Added the constant <code>IPC_CREX</code>.</li>

			<li>Renamed (sorry) <code>MAX_KEY</code> to <code>KEY_MAX</code> and
				<code>MAX_SEMAPHORE_VALUE</code> to <code>SEMAPHORE_VALUE_MAX</code>
				to be consistent with the C naming convention in limits.h.
			</li>

			<li>Hardcoded <code>SEMAPHORE_VALUE_MAX</code> to 32767 until I can
				find a reliable way to determine it at install time.
			</li>

			<li>Changed prober.py to write out a C header file with
				platform-specific definitions in it.
			</li>

			<li>Replaced OSError in shared memory functions with custom
				errors from this module.
			</li>

			<li>Added code to raise a ValueError when an attempt is made
				to assign an out-of-range value to a semaphore.
			</li>

			<li>Added code to raise a ValueError when an out-of-range key
				is passed to a constructor.
			</li>

			<li>Fixed a bug in the demo program conclusion.c that caused
				some informational messages to be printed twice.
			</li>

			<li>Fixed some documentation bugs.</li>
		</ul>
	</li>
	<li>0.1 (4 Dec 2008) &ndash; Original (alpha) version.</li>
</ul>

</body>
</html>