OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / lib / bitvector / CHANGES.txt
1                     =====================================
2                       Package "Bit::Vector" Version 6.4
3                     =====================================
4
5
6                  Copyright (c) 1995 - 2004 by Steffen Beyer.
7                              All rights reserved.
8
9
10 Version history:
11 ----------------
12
13 Version 6.4   03.10.2004
14
15  +  Added compiler directives for C++.
16  +  Improved the method "Norm()".
17  +  Removed "Carp::Clan" from the distribution (available separately).
18  +  Added "Bit::Vector::String" for generic string import/export functions.
19  +  Added a new test file "t/40__auxiliary.t" for "Bit::Vector::String".
20  +  Fixed a bug in method "Copy()" concerning sign (MSB) extension.
21
22 Version 6.3   28.09.2002
23
24  +  Added "Create_List()" and "GCD2()" in "BitVector.c".
25  +  "new()" now can optionally return a list of bit vectors.
26  +  "GCD()" now can optionally return the two integer factors
27     "x" and "y" for the linear combination of its input values
28     "a" and "b" so that gcd(a,b) = x * a + y * b.
29  +  Changed the test files "t/01________new.t" and "t/09_parameters.t"
30     as well as the documentation accordingly.
31  +  Added a new test file "t/17________gcd.t".
32  +  Further simplified the error handlers in "Vector.xs", making the
33     resulting object library file substantially smaller (about 20%!)
34     and thus faster to load.
35
36 Version 6.2   15.09.2002
37
38  +  Fixed missing "\" in regular expression in "t/00____version.t".
39  +  Overhauled the error handlers in "BitVector.c" and "Vector.xs".
40  +  Added a demo "examples/test.c" to play around with the C library.
41  +  Attempted to fix all compiler warnings.
42  +  Fixed a problem in test "t/01________new.t" with Perl using
43     64 bit integers; now contains "use integer;" to avoid failure.
44  +  Synchronized "Carp::Clan" and "ToolBox.h" with "Date::Calc" 5.2.
45  +  Revealed common method aliases (Or, And, etc.) in the documentation.
46  +  Fixed GCD(), now GCD(z,0) == GCD(0,z) == z and negative values
47     are handled correctly.
48
49 Version 6.1   08.10.2001
50
51  +  Fixed the problem which caused some of the tests with overloaded
52     operators to fail under Perl 5.7.1 and Perl 5.7.2.
53  +  Added the module "Carp::Clan" to the distribution.
54  +  Changed most of the error messages in Bit::Vector::Overload.
55  +  Changed the test script "t/30_overloaded.t" accordingly.
56  +  Changed "Makefile.PL" to write a "patchlevel.h" file so that
57     "Vector.xs" can automatically detect the Perl version and
58     whether to use the macro PL_na or na, GIMME_V or GIMME.
59     Tweaking the code before installing is not necessary anymore.
60  +  Changed the documentation in files README.txt and INSTALL.txt
61     accordingly.
62  +  Changed the internal names BitVector_msb and BitVector_lsb to
63     BitVector_msb_ and BitVector_lsb_ in order to make the (non-
64     ANSI C-standard-compliant!) VMS linker happy. This does NOT
65     affect the Perl interface, though.
66
67 Version 6.0   08.10.2000
68
69  +  Splitted the Vector.pm module; separated XS and overloaded Perl
70     part for improved performance (reduces loading time for XS part).
71  +  Corrected the handling of numerical overflow in arithmetic methods
72     ("add()", "subtract()", "Multiply()", "from_Dec()", "new_Dec()").
73  +  Methods "add()" and "subtract()" now return the carry as well as
74     the overflow flag if called in list context (only the carry in
75     scalar context, as before).
76  +  Added two new methods "inc()" and "dec()", which return the overflow
77     flag (whereas "increment()" and "decrement()" return the carry flag).
78     The new methods also allow to copy-and-increment/decrement in addition
79     to in-place operation.
80  +  Methods "from_Dec()" and "new_Dec()" now allow you to enter large
81     positive numbers which will have the MSB set (this was forbidden
82     previously because these numbers are considered to be negative in
83     two's complement binary representation).
84
85 Version 5.8   14.07.2000
86
87  +  Changed "na" to "PL_na" in Vector.xs in order to make the module
88     ready for Perl 5.6.0.
89  +  Removed the error messages which appeared at global destruction
90     time with Perl 5.6.0.
91  +  Changed the corresponding test script (t/02____destroy.t) accordingly.
92  +  Optimized the "strEQ" away from the typemap section in Vector.xs.
93  +  Fixed the misspelled word "whether" in the documentation.
94  +  Added method "Power()".
95  +  Added overloaded operator "**" (for exponentiation).
96  +  Changed method "Copy()"; the two vectors do not need to have the same
97     size anymore. The method will copy as much as will fit or fill up
98     with 0's or 1's (depending on the sign of the source) if necessary.
99  +  Changed the corresponding test script (t/09_parameters.t) accordingly.
100
101 Version 5.7   19.05.1999
102
103  +  Improved method "Div_Pos()": It now uses only one instead of the
104     former two (very costly) "shift" operations in its main loop, and
105     it now depends on the (variable) length of the numbers involved rather
106     than the (constant) length of their respective bit vectors, making
107     this method tremendously faster now. The methods "to_Dec()", "Divide()"
108     and "GCD()" also profit from this change in the same way since they
109     rely crucially on the "Div_Pos()" method, internally.
110  +  Added a matrix multiplication method (for "Math::MatrixBool") named
111     "Product()" which determines paths in matrices representing graphs.
112  +  Fixed the problems with anchored error messages in the regression
113     test suite under MacPerl.
114
115 Version 5.6   02.11.1998
116
117  +  Removed the leading zeros from the output of "to_Hex()".
118  +  Fixed compiler warning on line 2067 of "BitVector.c".
119
120 Version 5.5   21.09.1998
121
122  +  Fixed the bug of the uninitialized return code in method "Multiply()".
123  +  Fixed the failure of tests 96-131 of test script "t/01________new.t"
124     under HP-UX 10.
125
126 Version 5.4   07.09.1998
127
128  +  Fixed the bug of the uninitialized return code in method "Divide()".
129  +  Introduced an additional header "Preface" in the POD documentation to
130     avoid clobbering of the information displayed by CPAN.pm et al.
131  +  Added the new attributes to "Makefile.PL" for ActiveState's port
132     of Perl 5.005 to the Win32 platform.
133
134 Version 5.3   12.05.1998
135
136  +  Changed "Norm()" to become still a bit more efficient.
137  +  Ported the "upgrade_BV52" utility to Perl ("upgrade_BV53.pl"),
138     making it faster, more flexible and easier to read and maintain.
139  +  Added "upgrade_BV42.pl".
140  +  Enhanced support for Windows NT/95.
141  +  Complete rewrite of this "CHANGES.txt" document.
142
143 Version 5.2   31.03.1998
144
145  +  Changed "Norm()", "<<" and ">>" to become more efficient.
146  +  Added "new_Hex()", "new_Bin()", "new_Dec()" and "new_Enum()".
147  +  Made the exception handling in "Vector.pm" more elegant.
148
149 Version 5.1   09.03.1998
150
151  +  Added systematic exception handling to "Vector.pm".
152
153 Version 5.0   01.03.1998
154
155  +  "Outsourced" all example modules (now available separately).
156  +  Added: Word_Bits(), Long_Bits(), Concat(), Concat_List(), Primes(),
157     Reverse(), Interval_Reverse(), Interval_Copy(), Interval_Substitute(),
158     Lexicompare(), to_Bin(), from_Bin(), to_Dec(), from_Dec(), Bit_Copy(),
159     LSB(), MSB(), lsb(), msb(), Insert(), Delete(), add(), subtract(),
160     Negate(), Absolute(), Sign(), Multiply(), Divide(), GCD(), Block_Store(),
161     Block_Read(), Word_Size(), Word_Store(), Word_Read(), Word_List_Store(),
162     Word_List_Read(), Word_Insert(), Word_Delete(), Chunk_Store(),
163     Chunk_Read(), Chunk_List_Store(), Chunk_List_Read(), Index_List_Remove(),
164     Index_List_Store(), Index_List_Read(), Transpose().
165  +  Ported to C: "Version()", "Shadow()", "Clone()", "to_Enum()",
166     "from_Enum()".
167  +  Changed: "Compare()" (now assumes bit vectors are SIGNED).
168  +  Renamed: "to_String()" ==> "to_Hex()", "from_string()" ==> "from_Hex()",
169     "to_ASCII()" ==> "to_Enum()", "from_ASCII()" ==> "from_Enum()"
170     (aliases are still available but deprecated).
171  +  Dropped: "lexorder()", "new_from_String()".
172  +  Dropped: Module "Set::IntegerFast" (replaced by "Bit::Vector").
173  +  Definitely abandoned the possibility for subclassing because it doesn't
174     make any sense in this module (use embedding instead!).
175  +  Fixed: Module "Set::IntegerRange" version 4.2 broke with "Bit::Vector"
176     version 5.0. Issued quick fix "Set::IntRange" version 5.0. More
177     thorough implementation is under construction.
178
179 Version 4.2   16.07.1997
180
181  +  Added "is_empty()" and "is_full()".
182
183 Version 4.1   30.06.1997
184
185  +  Added "Move_Left()" and "Move_Right()".
186  +  Changed "<<" and ">>" to call "Move_Left()" and "Move_Right()" instead.
187  +  Added "increment()" and "decrement()".
188  +  Changed "++" and "--" to call "increment()" and "decrement()" instead.
189  +  Added "Resize()", "Interval_Scan_inc()", "Interval_Scan_dec()" and
190     "BitVector()" to "Set::IntegerRange".
191
192 Version 4.0   23.04.1997
193
194  +  Complete rewrite of the "Set::IntegerFast" module.
195  +  Renamed "Set::IntegerFast" to "Bit::Vector".
196  +  United the separate C cores and XS files for sets, matrices of booleans
197     and bit shift operations in a single module.
198  +  Abandoned the individual version numbers.
199  +  Dropped the separate "Makefile.PL"s, adopted the solution using
200     a "lib" subdirectory.
201  +  Added: Flip(), Interval_Scan_inc(), Interval_Scan_dec(), rotate_left(),
202     rotate_right(), shift_left(), shift_right(), to_String(), from_string(),
203     Multiplication(), Closure(), Shadow(), Clone(), new_from_String(),
204     to_ASCII(), from_ASCII().
205  +  Added overloaded operators for: emptyness, equality, lexical comparison,
206     shift register, rotate register, string conversion, union, intersection,
207     difference, exclusive-or, complement, subset relationship, true subset
208     relationship, superset relationship, true superset relationship, norm.
209
210 Version 3.2   04.02.1997
211
212  +  Added "Empty_Interval()", "Fill_Interval()", "Flip_Interval()" and
213     "Size()" to "Set::IntegerFast" and "Set::IntegerRange".
214  +  "Set::IntegerFast" and "Set::IntegerRange" both switched to version
215     number 3.0.
216  +  Improved the "Math::MatrixBool" module (new version number: 2.0) to
217     use C routines for matrix multiplication and closure and fixed some
218     bugs in these methods at the same time.
219  +  Added "new_from_string()" and "Dim()" to "Math::MatrixBool".
220  +  Fixed a severe bug in the "kleene()" method of "Math::MatrixReal"
221     (new version number: 1.1).
222
223 Version 3.1   21.01.1997
224
225  +  Fixed a bug that caused the initialization routine of the module to fail
226     on 64 bit machines due to a wrong conditional expression (type "int" and
227     "size_t" do not necessarily have the same size!).
228  +  "Set::IntegerFast" switched to version number 2.2.
229
230 Version 3.0   12.01.1997
231
232  +  Added "flip()" to "Set::IntegerFast" and "Set::IntegerRange".
233  +  Transformed the "kruskal" demo program to a Perl module "Graph::Kruskal".
234  +  Added new companion modules: "Math::MatrixBool", "Math::MatrixReal" and
235     "DFA::Kleene", all with separate "Makefile.PL"s.
236  +  Added introductory article about theory behind Kleene's algorithm.
237  +  Introduced independent version numbers for all modules:
238     "Set::IntegerFast" ==> version 2.1, "Set::IntegerRange" ==> version 2.0.
239  +  Added overloaded operators to "Set::IntegerRange".
240  +  Bugfix: Changed "gv_stashpv(class,0)" to "gv_stashpv(class,1)" in the
241     XS file (caused core dumps in previous versions when "new()" was called
242     with a nonexistent class name and subclassing enabled).
243
244 Version 2.0   14.12.1996
245
246  +  Changed "Create()" to "new()".
247  +  Now supports "$set = new Set::IntegerFast($elements);" instead of
248     "$set = Set::IntegerFast::Create($elements);".
249  +  Changed "Destroy()" to "DESTROY()", which doesn't need to (and
250     shouldn't!) be called explicitly anymore.
251  +  Fixed the "bad free() ignored" warnings caused by "Destroy()" in
252     version 1.1 (in conjunction with Perl version 5.002) which led some
253     of the tests in "make test" to fail.
254  +  Complete rewrite of the XS part.
255  +  Changed "lexorder()" and "Compare()" to become more efficient
256     (complexity n/b instead of n/8).
257  +  Changed parameters visible externally from "word"/"unit" to "N_int"
258     in the C core.
259  +  Complete rewrite of the documentation, now in POD format.
260  +  Added a new (wrapper) module named "Set::IntegerRange".
261
262 Version 1.1   08.01.1996
263
264  +  Added "Resize()".
265  +  Changed "Create()", "Empty()", "Fill()" and "Copy()" to have complexity
266     n/b rather than n/8.
267  +  Made interfaces in C core more consistent: Pointer to a set object is
268     now always the first parameter.
269  +  Added new paragraphs to the documentation.
270  +  Added "ExclusiveOr()" (for symmetric difference X = (Y + Z) \ (Y * Z)).
271
272 Version 1.0   14.12.1995   First version under UNIX (with Perl module).
273
274  +  Initial release as a C library and Perl module.
275
276 Version 0.9   01.11.1993   First version of C library under MS-DOS.
277
278  +  Ported the Pascal code to C because I thought sets of arbitrary sizes
279     are always useful to have.
280
281 Version 0.1   ??.??.1989   First version in Turbo Pascal under CP/M.
282
283  +  I first wrote this library (on my Apple ][+) because I needed more bits
284     in a set than Turbo Pascal would support in order to calculate "first",
285     "follow" and "look-ahead" character sets for a compiler-compiler.
286
287 ----------------------------------------------------------------------------
288