forked from ilanschnell/bitarray
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGE_LOG
489 lines (375 loc) · 15.5 KB
/
CHANGE_LOG
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
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
2021-XX-XX 2.1.1:
-------------------
* add tests
2021-05-05 2.1.0:
-------------------
* add `.find()` method, see #122
* `.find()`, `.index()`, `.search()` and `.itersearch()` now all except
both (sub-) bitarray as well as bool items to be searched for
* improve encode/decode error messages
* add [lexicographical permutations example](../examples/lexico.py)
* add tests
2021-04-19 2.0.1:
-------------------
* update documentation
* improve some error messages
2021-04-14 2.0.0:
-------------------
* require more specific objects, int (0 or 1) or bool, see #119
* items are always returned as int 0 or 1, #119
* remove `.length()` method (deprecated since 1.5.1 - use `len()`)
* in `.unpack()` the `one` argument now defaults to 0x01 (was 0xff)
* `.tolist()` now always returns a list of integers (0 or 1)
* fix frozenbitarray hash function, see #121
* fix frozenbitarray being mutable by `<<=` and `>>=`
* support sequence protocol in `.extend()` (and bitarray creation)
* improve OverflowError messages from `util.int2ba()`
* add [hexadecimal example](../examples/hexadecimal.py)
2021-04-10 1.9.2:
-------------------
* update pythoncapi_compat: Fix support with PyPy 3.7, #120
* update readme
2021-04-05 1.9.1:
-------------------
* switch documentation from markdown to reStructuredText
* add tests
2021-04-03 1.9.0:
-------------------
* add shift operations (`<<`, `>>`, `<<=`, `>>=`), see #117
* add `bitarray.util.ba2base()` and `bitarray.util.base2ba()`,
see last paragraph in [Bitarray representations](represent.rst)
* documentation and tests
2021-03-31 1.8.2:
-------------------
* fix crash caused by unsupported types in binary operations, #116
* speedup initializing or extending a bitarray from another with different
bit endianness
* add formatting options to `bitarray.util.pprint()`
* add documentation on [bitarray representations](represent.rst)
* add and improve tests (all 291 tests run in less than half a second on
a modern machine)
2021-03-25 1.8.1:
-------------------
* moved implementation of and `hex2ba()` and `ba2hex()` to C-level
* add `bitarray.util.parity()`
2021-03-21 1.8.0:
-------------------
* add `bitarray.util.serialize()` and `bitarray.util.deserialize()`
* allow whitespace (ignore space and `\n\r\t\v`) in input strings,
e.g. `bitarray('01 11')` or `a += '10 00'`
* add `bitarray.util.pprint()`
* When initializing a bitarray from another with different bit endianness,
e.g. `a = bitarray('110', 'little')` and `b = bitarray(a, 'big')`,
the buffer used to be simply copied, with consequence that `a == b` would
result in `False`. This is fixed now, that is `a == b` will always
evaluate to `True`.
* add test for loading existing pickle file (created using bitarray 1.5.0)
* add example showing how to [jsonize bitarrays](../examples/extend_json.py)
* add tests
2021-03-12 1.7.1:
-------------------
* fix issue #114, raise TypeError when incorrect index is used during
assignment, e.g. `a[1.5] = 1`
* raise TypeError (not IndexError) when assigning slice to incorrect type,
e.g. `a[1:4] = 1.2`
* improve some docstrings and tests
2021-02-27 1.7.0:
-------------------
* add `bitarray.util.urandom()`
* raise TypeError when trying to extend bitarrays from bytes on Python 3,
ie. `bitarray(b'011')` and `.extend(b'110')`. (Deprecated since 1.4.1)
2021-01-20 1.6.3:
-------------------
* add missing .h files to sdist tarball, #113
2021-01-20 1.6.2:
-------------------
* use `Py_SET_TYPE()` and `Py_SET_SIZE()` for Python 3.10, #109
* add official Python 3.10 support
* fix slice assignment to same object,
e.g. `a[2::] = a` or `a[::-1] = a`, #112
* add bitarray.h, #110
2020-11-05 1.6.1:
-------------------
* use PyType_Ready for all types: bitarray, bitarrayiterator,
decodeiterator, decodetree, searchiterator
2020-10-17 1.6.0:
-------------------
* add `decodetree` object, for speeding up consecutive calls
to `.decode()` and `.iterdecode()`, in particular when dealing
with large prefix codes, see #103
* add optional parameter to `.tolist()` which changes the items in the
returned list to integers (0 or 1), as opposed to Booleans
* remove deprecated `bitdiff()`, which has been deprecated since version
1.2.0, use `bitarray.util.count_xor()` instead
* drop Python 2.6 support
* update license file, #104
2020-08-24 1.5.3:
-------------------
* add optional index parameter to `.index()` to invert single bit
* fix `sys.getsizeof(bitarray)` by adding `.__sizeof__()`, see issue #100
2020-08-16 1.5.2:
-------------------
* add PyType_Ready usage, issue #66
* speedup search() for bitarrays with length 1 in sparse bitarrays,
see issue #67
* add tests
2020-08-10 1.5.1:
-------------------
* support signed integers in `util.ba2int()` and `util.int2ba()`,
see issue #85
* deprecate `.length()` in favor of `len()`
2020-08-05 1.5.0:
-------------------
* Use `Py_ssize_t` for bitarray index. This means that on 32bit
systems, the maximum number of elements in a bitarray is 2 GBits.
We used to have a special 64bit index type for all architectures, but
this prevented us from using Python's sequence, mapping and number
methods, and made those method lookups slow.
* speedup slice operations when step size = 1 (if alignment allows
copying whole bytes)
* Require equal endianness for operations: `&`, `|`, `^`, `&=`, `|=`, `^=`.
This should have always been the case but was overlooked in the past.
* raise TypeError when trying to create bitarray from boolean
* This will be last release to still support Python 2.6 (which was retired
in 2013). We do NOT plan to stop support for Python 2.7 anytime soon.
2020-07-15 1.4.2:
-------------------
* add more tests
* C-level:
- simplify pack/unpack code
- fix memory leak in `~` operation (bitarray_cpinvert)
2020-07-14 1.4.1:
-------------------
* add official Python 3.9 support
* improve many docstrings
* add DeprecationWarning for `bitdiff()`
* add DeprecationWarning when trying to extend bitarrays
from bytes on Python 3 (`bitarray(b'011')` and `.extend(b'110')`)
* C-level:
- Rewrote `.fromfile()` and `.tofile()` implementation,
such that now the same code is used for Python 2 and 3.
The new implementation is more memory efficient on
Python 3.
- use `memcmp()` in `richcompare()` to shortcut EQ/NE, when
comparing two very large bitarrays for equality the
speedup can easily be 100x
- simplify how unpacking is handled
* add more tests
2020-07-11 1.4.0:
-------------------
* add `.clear()` method (Python 3.3 added this method to lists)
* avoid over-allocation when bitarray objects are initially created
* raise BufferError when resizing bitarrays which is exporting buffers
* add example to study the resize() function
* improve some error messages
* add more tests
* raise `NotImplementedError` with (useful message) when trying to call
the `.fromstring()` or `.tostring()` methods, which have been removed
in the last release
2020-07-06 1.3.0:
-------------------
* add `bitarray.util.make_endian()`
* `util.ba2hex()` and `util.hex2ba()` now also support little-endian
* add `bitarray.get_default_endian()`
* made first argument of initializer a positional-only parameter
* remove `.fromstring()` and `.tostring()` methods, these have been
deprecated 8 years ago, since version 0.4.0
* add `__all__` in `bitarray/__init__.py`
* drop Python 3.3 and 3.4 support
2020-05-18 1.2.2:
-------------------
* `util.ba2hex()` now always return a string object (instead of bytes
object for Python 3), see issue #94
* `util.hex2ba` allows a unicode object as input on Python 2
* Determine 64-bitness of interpreter in a cross-platform fashion #91,
in order to better support PyPy
2020-01-06 1.2.1:
-------------------
* simplify markdown of readme so PyPI renders better
* make tests for bitarray.util required (instead of warning when
they cannot be imported)
2019-12-06 1.2.0:
-------------------
* add bitarray.util module which provides useful utility functions
* deprecate `bitarray.bitdiff()` in favor of `bitarray.util.count_xor`
* use markdown for documentation
* fix bug in `.count()` on 32bit systems in special cases when array size
is 2^29 bits or larger
* simplified tests by using bytes syntax
* update smallints and sieve example to use new utility module
* simplified mandel example to use numba
* use file context managers in tests
2019-11-07 1.1.0:
-------------------
* add frozenbitarray object
* add optional start and stop parameters to .count() method
* add official Python 3.8 support
* optimize `setrange()` C-function by using `memset()`
* fix issue #74, bitarray is hashable on Python 2
* fix issue #68, `unittest.TestCase.assert_` deprecated
* improved test suite - tests should run in about 1 second
* update documentation to use positional-only syntax in docstrings
* update readme to pass Python 3 doctest
* add utils module to examples
2019-07-19 1.0.1:
-------------------
* fix readme to pass `twine check`
2019-07-15 1.0.0:
-------------------
* fix bitarrays beings created from unicode in Python 2
* use `PyBytes_*` in C code, treating the Py3k function names as default,
which also removes all redefinitions of `PyString_*`
* handle negative arguments of .index() method consistently with how
they are treated for lists
* add a few more comments to the C code
* move imports outside tests: pickle, io, etc.
* drop Python 2.5 support
2019-05-20 0.9.3:
-------------------
* refactor resize() - only shrink allocated memory if new size falls
lower than half the allocated size
* improve error message when trying to initialize from float or complex
2019-04-29 0.9.2:
-------------------
* fix to compile on Windows with VS 2015, issue #72
2019-04-28 0.9.1:
-------------------
* fix types to actually be types, #29
* check for ambiguous prefix codes when building binary tree for decoding
* remove Python level methods: encode, decode, iterdecode (in favor of
having these implemented on the C-level along with check_codedict)
* fix self tests for Python 2.5 and 2.6
* move all Huffman code related example code into examples/huffman
* add code to generate graphviz .dot file of Huffman tree to examples
2019-04-22 0.9.0:
-------------------
* more efficient decode and iterdecode by using C-level binary tree
instead of a python one, #54
* added buffer protocol support for Python 3, #55
* fixed invalid pointer exceptions in pypy, #47
* made all examples Py3k compatible
* add gene sequence example
* add official Python 3.7 support
* drop Python 2.4, 3.1 and 3.2 support
2018-07-06 0.8.3:
-------------------
* add exception to setup.py when README.rst cannot be opened
2018-05-30 0.8.2:
-------------------
* add official Python 3.6 support (although it was already working)
* fix description of `fill()`, #52
* handle extending self correctly, #28
* copy_n: fast copy with memmove fixed, #43
* minor clarity/wording changes to README, #23
2013-03-30 0.8.1:
-------------------
* fix issue #10, i.e. `int(bitarray())` segfault
* added tests for using a bitarray object as an argument to functions
like int, long (on Python 2), float, list, tuple, dict
2012-04-04 0.8.0:
-------------------
* add Python 2.4 support
* add (module level) function bitdiff for calculating the difference
between two bitarrays
2012-02-15 0.7.0:
-------------------
* add iterdecode method (C level), which returns an iterator but is
otherwise like the decode method
* improve memory efficiency and speed of pickling large bitarray objects
2012-02-06 0.6.0:
-------------------
* add buffer protocol to bitarray objects (Python 2.7 only)
* allow slice assignment to 0 or 1, e.g. `a[::3] = 0` (in addition to
booleans)
* moved implementation of itersearch method to C level (Lluis Pamies)
* search, itersearch now only except bitarray objects,
whereas `__contains__` excepts either booleans or bitarrays
* use a priority queue for Huffman tree example (thanks to Ushma Bhatt)
* improve documentation
2012-02-02 0.5.2:
-------------------
* fixed MSVC compile error on Python 3 (thanks to Chris Gohlke)
* add missing start and stop optional parameters to index() method
* add examples/compress.py
2012-01-31 0.5.1:
-------------------
* update documentation to use tobytes and frombytes, rather than tostring
and fromstring (which are now deprecated)
* simplified how tests are run
2012-01-23 0.5.0:
-------------------
* added itersearch method
* added Bloom filter example
* minor fixes in docstrings, added more tests
2011-12-29 0.4.0:
-------------------
* porting to Python 3.x (Roland Puntaier)
* introduced tobytes, frombytes (tostring, fromstring are now deprecated)
* updated development status
* added sieve prime number example
* moved project to github: https://github.com/ilanschnell/bitarray
2009-04-06 0.3.5:
-------------------
* fixed reference counts bugs
* added possibility to slice assign to True or False, e.g. a[::3] = True
will set every third element to True
2009-01-15 0.3.4:
-------------------
* Made C code less ambiguous, such that the package compiles on
Visual Studio, with all tests passing.
2008-12-14 0.3.3:
-------------------
* Made changes to the C code to allow compilation with more compilers.
Compiles on Visual Studio, although there are still a few tests failing.
2008-10-19 0.3.2:
-------------------
* Added sequential search method.
* The special method `__contains__` now also takes advantage of the
sequential search.
2008-10-12 0.3.1:
-------------------
* Simplified state information for pickling. Argument for count is now
optional, defaults to True. Fixed typos.
2008-09-30 0.3.0:
-------------------
* Fixed a severe bug for 64-bit machines. Implemented all methods in C,
improved tests.
* Removed deprecated methods from01 and fromlist.
2008-09-23 0.2.5:
-------------------
* Added section in README about prefix codes. Implemented _multiply method
for faster __mul__ and __imul__. Fixed some typos.
2008-09-22 0.2.4:
-------------------
* Implemented encode and decode method (in C) for variable-length prefix
codes.
* Added more examples, wrote README for the examples.
* Added more tests, fixed some typos.
2008-09-16 0.2.3:
-------------------
* Fixed a memory leak, implemented a number of methods in C.
These include __getitem__, __setitem__, __delitem__, pop, remove,
insert. The methods implemented on the Python level is very limit now.
* Implemented bitwise operations.
2008-09-09 0.2.2:
-------------------
* Rewrote parts of the README
* Implemented memory efficient algorithm for the reverse method
* Fixed typos, added a few tests, more C refactoring.
2008-09-07 0.2.1:
-------------------
* Improved tests, in particular added checking for memory leaks.
* Refactored many things on the C level.
* Implemented a few more methods.
2008-09-02 0.2.0:
-------------------
* Added bit endianness property to the bitarray object
* Added the examples to the release package.
2008-08-17 0.1.0:
-------------------
* First official release; put project to
http://pypi.python.org/pypi/bitarray/
May 2008:
---------
Wrote the initial code, and put it on my personal web-site:
http://ilan.schnell-web.net/prog/