-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES.txt
349 lines (273 loc) · 14.9 KB
/
CHANGES.txt
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
=====================================
Package "Bit::Vector" Version 7.4
=====================================
Copyright (c) 1995 - 2013 by Steffen Beyer.
All rights reserved.
Version history:
----------------
Version 7.4 03.09.2013
+ Modified ToolBox.h to allow bit vectors with more than 2^32 bits
Version 7.3 01.06.2013
+ Fixed t/02_____destroy.t to make it pass on perl-5.17.11
Version 7.2 17.05.2012
+ Changed the definition of the "boolean" data type in ToolBox.h
Version 7.1 29.09.2009
+ Added prefix "BV_" to all global identifiers in "BitVector.c",
"BitVector.h" and "Vector.xs"
Version 7.0 22.08.2009
+ Fixed a bug in "GCD2()" in "BitVector.c" with null-size vectors
+ Added more test cases for "GCD()" in "t/17_________gcd.t"
+ Almost completely rewrote "BitVector_Boot()" in "BitVector.c"
in order to fix the problem that it calculated an unsigned
long to have 33 bits under MacOS X (Darwin), leading to
failing tests in "t/28___chunklist.t"
+ BEWARE that the type "ErrCode", which is part of the inter-
face of the C library "BitVector.c", has been changed!
+ Added more tests and a debugging aid to "t/28___chunklist.t"
+ Removed the two example files showing how to freeze/thaw
"Bit::Vector" objects using "Data::Dumper", because after
closer inspection this proved to be a can of worms
Version 6.9 12.08.2009
+ Replaced "Storable::freeze()" by "Storable::nfreeze()"
+ Added more test cases for "Storable"
+ Added two example files showing how to freeze/thaw
using "Data::Dumper"
Version 6.8 10.08.2009
+ Fixed the bug of "Storable" not reconstructing nested data
structures properly which contain several references to
the same "Bit::Vector" object
+ Fixed hard-coded table size "MASKTABSIZE" in "BitVector.c"
+ Small cosmetic fixes to the documentation
Version 6.7 08.08.2009
+ Replaced "STORABLE_thaw()" by "STORABLE_attach()"
Version 6.6 27.07.2009
+ Made the module thread-safe and MacOS X compatible
+ Prevented "BitVector_Boot()" in "BitVector.c" to leak
memory when called repeatedly
Version 6.5 27.07.2009
+ Added automatic support for module "Storable"
Version 6.4 03.10.2004
+ Added compiler directives for C++.
+ Improved the method "Norm()".
+ Removed "Carp::Clan" from the distribution (available separately).
+ Added "Bit::Vector::String" for generic string import/export functions.
+ Added a new test file "t/40__auxiliary.t" for "Bit::Vector::String".
+ Fixed a bug in method "Copy()" concerning sign (MSB) extension.
Version 6.3 28.09.2002
+ Added "Create_List()" and "GCD2()" in "BitVector.c".
+ "new()" now can optionally return a list of bit vectors.
+ "GCD()" now can optionally return the two integer factors
"x" and "y" for the linear combination of its input values
"a" and "b" so that gcd(a,b) = x * a + y * b.
+ Changed the test files "t/01________new.t" and "t/09_parameters.t"
as well as the documentation accordingly.
+ Added a new test file "t/17________gcd.t".
+ Further simplified the error handlers in "Vector.xs", making the
resulting object library file substantially smaller (about 20%!)
and thus faster to load.
Version 6.2 15.09.2002
+ Fixed missing "\" in regular expression in "t/00____version.t".
+ Overhauled the error handlers in "BitVector.c" and "Vector.xs".
+ Added a demo "examples/test.c" to play around with the C library.
+ Attempted to fix all compiler warnings.
+ Fixed a problem in test "t/01________new.t" with Perl using
64 bit integers; now contains "use integer;" to avoid failure.
+ Synchronized "Carp::Clan" and "ToolBox.h" with "Date::Calc" 5.2.
+ Revealed common method aliases (Or, And, etc.) in the documentation.
+ Fixed GCD(), now GCD(z,0) == GCD(0,z) == z and negative values
are handled correctly.
Version 6.1 08.10.2001
+ Fixed the problem which caused some of the tests with overloaded
operators to fail under Perl 5.7.1 and Perl 5.7.2.
+ Added the module "Carp::Clan" to the distribution.
+ Changed most of the error messages in Bit::Vector::Overload.
+ Changed the test script "t/30_overloaded.t" accordingly.
+ Changed "Makefile.PL" to write a "patchlevel.h" file so that
"Vector.xs" can automatically detect the Perl version and
whether to use the macro PL_na or na, GIMME_V or GIMME.
Tweaking the code before installing is not necessary anymore.
+ Changed the documentation in files README.txt and INSTALL.txt
accordingly.
+ Changed the internal names BitVector_msb and BitVector_lsb to
BitVector_msb_ and BitVector_lsb_ in order to make the (non-
ANSI C-standard-compliant!) VMS linker happy. This does NOT
affect the Perl interface, though.
Version 6.0 08.10.2000
+ Splitted the Vector.pm module; separated XS and overloaded Perl
part for improved performance (reduces loading time for XS part).
+ Corrected the handling of numerical overflow in arithmetic methods
("add()", "subtract()", "Multiply()", "from_Dec()", "new_Dec()").
+ Methods "add()" and "subtract()" now return the carry as well as
the overflow flag if called in list context (only the carry in
scalar context, as before).
+ Added two new methods "inc()" and "dec()", which return the overflow
flag (whereas "increment()" and "decrement()" return the carry flag).
The new methods also allow to copy-and-increment/decrement in addition
to in-place operation.
+ Methods "from_Dec()" and "new_Dec()" now allow you to enter large
positive numbers which will have the MSB set (this was forbidden
previously because these numbers are considered to be negative in
two's complement binary representation).
Version 5.8 14.07.2000
+ Changed "na" to "PL_na" in Vector.xs in order to make the module
ready for Perl 5.6.0.
+ Removed the error messages which appeared at global destruction
time with Perl 5.6.0.
+ Changed the corresponding test script (t/02____destroy.t) accordingly.
+ Optimized the "strEQ" away from the typemap section in Vector.xs.
+ Fixed the misspelled word "whether" in the documentation.
+ Added method "Power()".
+ Added overloaded operator "**" (for exponentiation).
+ Changed method "Copy()"; the two vectors do not need to have the same
size anymore. The method will copy as much as will fit or fill up
with 0's or 1's (depending on the sign of the source) if necessary.
+ Changed the corresponding test script (t/09_parameters.t) accordingly.
Version 5.7 19.05.1999
+ Improved method "Div_Pos()": It now uses only one instead of the
former two (very costly) "shift" operations in its main loop, and
it now depends on the (variable) length of the numbers involved rather
than the (constant) length of their respective bit vectors, making
this method tremendously faster now. The methods "to_Dec()", "Divide()"
and "GCD()" also profit from this change in the same way since they
rely crucially on the "Div_Pos()" method, internally.
+ Added a matrix multiplication method (for "Math::MatrixBool") named
"Product()" which determines paths in matrices representing graphs.
+ Fixed the problems with anchored error messages in the regression
test suite under MacPerl.
Version 5.6 02.11.1998
+ Removed the leading zeros from the output of "to_Hex()".
+ Fixed compiler warning on line 2067 of "BitVector.c".
Version 5.5 21.09.1998
+ Fixed the bug of the uninitialized return code in method "Multiply()".
+ Fixed the failure of tests 96-131 of test script "t/01________new.t"
under HP-UX 10.
Version 5.4 07.09.1998
+ Fixed the bug of the uninitialized return code in method "Divide()".
+ Introduced an additional header "Preface" in the POD documentation to
avoid clobbering of the information displayed by CPAN.pm et al.
+ Added the new attributes to "Makefile.PL" for ActiveState's port
of Perl 5.005 to the Win32 platform.
Version 5.3 12.05.1998
+ Changed "Norm()" to become still a bit more efficient.
+ Ported the "upgrade_BV52" utility to Perl ("upgrade_BV53.pl"),
making it faster, more flexible and easier to read and maintain.
+ Added "upgrade_BV42.pl".
+ Enhanced support for Windows NT/95.
+ Complete rewrite of this "CHANGES.txt" document.
Version 5.2 31.03.1998
+ Changed "Norm()", "<<" and ">>" to become more efficient.
+ Added "new_Hex()", "new_Bin()", "new_Dec()" and "new_Enum()".
+ Made the exception handling in "Vector.pm" more elegant.
Version 5.1 09.03.1998
+ Added systematic exception handling to "Vector.pm".
Version 5.0 01.03.1998
+ "Outsourced" all example modules (now available separately).
+ Added: Word_Bits(), Long_Bits(), Concat(), Concat_List(), Primes(),
Reverse(), Interval_Reverse(), Interval_Copy(), Interval_Substitute(),
Lexicompare(), to_Bin(), from_Bin(), to_Dec(), from_Dec(), Bit_Copy(),
LSB(), MSB(), lsb(), msb(), Insert(), Delete(), add(), subtract(),
Negate(), Absolute(), Sign(), Multiply(), Divide(), GCD(), Block_Store(),
Block_Read(), Word_Size(), Word_Store(), Word_Read(), Word_List_Store(),
Word_List_Read(), Word_Insert(), Word_Delete(), Chunk_Store(),
Chunk_Read(), Chunk_List_Store(), Chunk_List_Read(), Index_List_Remove(),
Index_List_Store(), Index_List_Read(), Transpose().
+ Ported to C: "Version()", "Shadow()", "Clone()", "to_Enum()",
"from_Enum()".
+ Changed: "Compare()" (now assumes bit vectors are SIGNED).
+ Renamed: "to_String()" ==> "to_Hex()", "from_string()" ==> "from_Hex()",
"to_ASCII()" ==> "to_Enum()", "from_ASCII()" ==> "from_Enum()"
(aliases are still available but deprecated).
+ Dropped: "lexorder()", "new_from_String()".
+ Dropped: Module "Set::IntegerFast" (replaced by "Bit::Vector").
+ Definitely abandoned the possibility for subclassing because it doesn't
make any sense in this module (use embedding instead!).
+ Fixed: Module "Set::IntegerRange" version 4.2 broke with "Bit::Vector"
version 5.0. Issued quick fix "Set::IntRange" version 5.0. More
thorough implementation is under construction.
Version 4.2 16.07.1997
+ Added "is_empty()" and "is_full()".
Version 4.1 30.06.1997
+ Added "Move_Left()" and "Move_Right()".
+ Changed "<<" and ">>" to call "Move_Left()" and "Move_Right()" instead.
+ Added "increment()" and "decrement()".
+ Changed "++" and "--" to call "increment()" and "decrement()" instead.
+ Added "Resize()", "Interval_Scan_inc()", "Interval_Scan_dec()" and
"BitVector()" to "Set::IntegerRange".
Version 4.0 23.04.1997
+ Complete rewrite of the "Set::IntegerFast" module.
+ Renamed "Set::IntegerFast" to "Bit::Vector".
+ United the separate C cores and XS files for sets, matrices of booleans
and bit shift operations in a single module.
+ Abandoned the individual version numbers.
+ Dropped the separate "Makefile.PL"s, adopted the solution using
a "lib" subdirectory.
+ Added: Flip(), Interval_Scan_inc(), Interval_Scan_dec(), rotate_left(),
rotate_right(), shift_left(), shift_right(), to_String(), from_string(),
Multiplication(), Closure(), Shadow(), Clone(), new_from_String(),
to_ASCII(), from_ASCII().
+ Added overloaded operators for: emptyness, equality, lexical comparison,
shift register, rotate register, string conversion, union, intersection,
difference, exclusive-or, complement, subset relationship, true subset
relationship, superset relationship, true superset relationship, norm.
Version 3.2 04.02.1997
+ Added "Empty_Interval()", "Fill_Interval()", "Flip_Interval()" and
"Size()" to "Set::IntegerFast" and "Set::IntegerRange".
+ "Set::IntegerFast" and "Set::IntegerRange" both switched to version
number 3.0.
+ Improved the "Math::MatrixBool" module (new version number: 2.0) to
use C routines for matrix multiplication and closure and fixed some
bugs in these methods at the same time.
+ Added "new_from_string()" and "Dim()" to "Math::MatrixBool".
+ Fixed a severe bug in the "kleene()" method of "Math::MatrixReal"
(new version number: 1.1).
Version 3.1 21.01.1997
+ Fixed a bug that caused the initialization routine of the module to fail
on 64 bit machines due to a wrong conditional expression (type "int" and
"size_t" do not necessarily have the same size!).
+ "Set::IntegerFast" switched to version number 2.2.
Version 3.0 12.01.1997
+ Added "flip()" to "Set::IntegerFast" and "Set::IntegerRange".
+ Transformed the "kruskal" demo program to a Perl module "Graph::Kruskal".
+ Added new companion modules: "Math::MatrixBool", "Math::MatrixReal" and
"DFA::Kleene", all with separate "Makefile.PL"s.
+ Added introductory article about theory behind Kleene's algorithm.
+ Introduced independent version numbers for all modules:
"Set::IntegerFast" ==> version 2.1, "Set::IntegerRange" ==> version 2.0.
+ Added overloaded operators to "Set::IntegerRange".
+ Bugfix: Changed "gv_stashpv(class,0)" to "gv_stashpv(class,1)" in the
XS file (caused core dumps in previous versions when "new()" was called
with a nonexistent class name and subclassing enabled).
Version 2.0 14.12.1996
+ Changed "Create()" to "new()".
+ Now supports "$set = new Set::IntegerFast($elements);" instead of
"$set = Set::IntegerFast::Create($elements);".
+ Changed "Destroy()" to "DESTROY()", which doesn't need to (and
shouldn't!) be called explicitly anymore.
+ Fixed the "bad free() ignored" warnings caused by "Destroy()" in
version 1.1 (in conjunction with Perl version 5.002) which led some
of the tests in "make test" to fail.
+ Complete rewrite of the XS part.
+ Changed "lexorder()" and "Compare()" to become more efficient
(complexity n/b instead of n/8).
+ Changed parameters visible externally from "word"/"unit" to "N_int"
in the C core.
+ Complete rewrite of the documentation, now in POD format.
+ Added a new (wrapper) module named "Set::IntegerRange".
Version 1.1 08.01.1996
+ Added "Resize()".
+ Changed "Create()", "Empty()", "Fill()" and "Copy()" to have complexity
n/b rather than n/8.
+ Made interfaces in C core more consistent: Pointer to a set object is
now always the first parameter.
+ Added new paragraphs to the documentation.
+ Added "ExclusiveOr()" (for symmetric difference X = (Y + Z) \ (Y * Z)).
Version 1.0 14.12.1995 First version under UNIX (with Perl module).
+ Initial release as a C library and Perl module.
Version 0.9 01.11.1993 First version of C library under MS-DOS.
+ Ported the Pascal code to C because I thought sets of arbitrary sizes
are always useful to have.
Version 0.1 ??.??.1989 First version in Turbo Pascal under CP/M.
+ I first wrote this library (on my Apple ][+) because I needed more bits
in a set than Turbo Pascal would support in order to calculate "first",
"follow" and "look-ahead" character sets for a compiler-compiler.
----------------------------------------------------------------------------