Revision history for Perl extension Set::Infinite.
0.61 2004-11-03
- some optimization of intersected_spans()
- bugfix: complement of the universal set is the empty set
0.60 2004-10-28
- _cleanup() / _no_cleanup() are obsolete
- easier syntax to iterate()
0.59 2004-07-01
- added experimental argument "backtrack_callback" to
iterate()
0.58 2004-06-14
- intersected_spans was wrong when intersecting with
an open set. bug report & tests by Peter Oliver
0.57 2004-04-03
- CPAN update
0.5602 2004-03-25
- fixed a test in t/select.t - Reported by David Dyck.
- simplified "offset"; fixed "fixtype"
- added "separators" test in t/infinite.t
- is_proper_subset / is_disjoint may return 'undef'
- variables $a, $b renamed
0.5601 2004-03-20
- iterate() first/last can deal with multiple spans
- removed todo: "provide a constructor to build open sets"
because this is already documented in new().
- fixed "separators" OO
- New methods:
is_span
is_singleton
is_subset
is_proper_subset
is_disjoint
universal_set
empty_set
minus / difference (same as "complement")
simmetric_difference
0.56 2004-03-17
- New method: clone (same as "copy")
- More tests & fixes: intersected_spans
0.5503 2004-03-15
- New method: intersected_spans
Suggested by Reinhold May
Name suggested by Dave Rolsky
- bugfix: first/last() of a union will try harder not to split spans.
0.5502 2004-03-14
- New methods: start_set / end_set
These are the inverse of the "until" method.
Suggested by Reinhold May
0.5501
refactored _backtrack method
0.55 2003-11-16
- bug fix: $set = Set::Infinite->new( -10, 0 );
created a set with "-10" instead of [-10..0]
- documents that the parameters to new() must be sorted.
Reported by Jim Cromie
0.5401 2003-10-21
specifying start > end in a constructor is a fatal error.
0.54
0.5308 2003-10-16
clears mod_perl warnings - change the order of modules and constants.
Patch by Dan Kubb
0.5307
backtracking "iterate" uses a larger span
0.5306
fix bug in test "inf" -> "$inf". Thanks Kingpin
0.5305
%_first and %_last are declared with 'use vars'
0.5304
added more tests: intersects/until/select
optimized select()
refactored quantize()
0.5303
removed Set::Infinite::Date
removed /_eg directory
simplified README
0.5302
select( freq => $n ) is removed.
- breaks Date::Set 0.28 (Date::Set 0.29 is ok)
select( by => [] ) default is changed to 'All'.
- in order to have the same behaviour as when 'freq' was omitted.
0.5301
refactored methods: min, max, first, last, until, iterate, offset
removed obsolete method: compact
renamed internal methods with _underline
removed obsolete 'date' docs
0.53 2003-09-05
fixes a test that fails under 5.00503
does not export 'new'
0.52 2003-09-04
change tests to run under (a broken) Perl 5.9.0
- infinity string contains spaces
0.51 2003-09-02
passes all tests under 5.00503.
- changed ' $var=\@_ ' to ' $var=[@_] '
compiles under Perl 5.00503. Patch by Mathieu Arnold.
0.50
count()
fixed: size() does not try to add 'zero' to object.
tests for count() and size()
0.49
fixed: "first/last" of intersection between recurrences
0.48
fixed: backtracking on a partially defined set.
fixed: first of a union with an empty set.
0.47
until allows start_set == end_set
0.46_01
upload to perl-date-time CVS
0.46
more docs
0.45
last works, but not for union/quantize/select/offset
0.44_03
last() can union/intersect/complement/offset
0.44_02
last() can iterate/complement
0.44_01
first(n) deprecated
S::I::Basic::last() enabled
0.44
CPAN release
0.43_01
'iterate' generates 'first' code
0.43
CPAN release
implemented max() of 'iterate'
0.42_05
implemented min() of 'iterate'
fixed complex union with empty set
0.42_04
finished removing 'our'
0.42_03 / 0.42_02
(idem)
0.42_01
more methods inherited from Set::Infinite::Basic
0.42_00
Set::Infinite.pm refactored into Set::Infinite::Basic
Set::Infinite::_Simple removed.
0.41_03
can intersects() to an object (it checks the reference type)
0.41_02
fixed copy() - copying array refs
0.41_01
Fixed type() inheritance problems
as a side effect, type() must be called with '->' syntax
Fixed eg/recurring.pl
0.41
'todo' directory renamed to _todo for Win* compatibility
(clashes with TODO)
0.40
LICENSE file
0.39_05
fixed 'until' test warnings (caused by malformed offset() output)
0.39_04
'until' works with empty sets
'until' has first()
0.39_03
'until' backtracks (slowly)
left a hack in max() - might remove it when last() works...
0.39_02
'offset' has 'first'
'until' has '_quantize_span'
0.39_01
new method 'until' -- makes it possible to join RRULEs in Date::Set::Timezone
hacked a fix a problem when offset-begin backtracks (offset-begin reduces
a set to a single element, which backtracks wrongly if the set were
quantized)
better handling of backtrack-offset values
fixed spaceship (again)
contains works better for unbounded sets
0.39
fixed a bug in spaceship() that affected Date::Set::Timezone
0.38 - changes to 0.37:
new method first()
min() and max() improved
fixed some bugs: intersection -inf with (-inf..15); "<=>"; more tests
new $PRETTY_PRINT global option; better TRACE
about 20% faster than 0.37; uses less memoization
0.37_71
trace works on a copy of the variables, so that autovivification
and cleanups don't interfere with the program.
0.37_69
new method _quantize_span helps some internal calculations
0.37_68
fixed a bug in intersection -inf with (-inf..15)
0.37_67
t/first.t passes all tests
first-select is leaking
0.37_63
last-quantize started
0.37_62
all tests pass
fixed Element_Inf dependency in Set::Infinite::Date.pm
0.37_61
tests pass
select should use count=> to bound set
0.37_60
first/unknown/union recursion fixed
0.37_59
first() has a cache
0.37_57
new $PRETTY_PRINT global option
0.37_54
quantize() is 'first-compatible'
0.37_51
min is 'more exact'
first-intersection uses limited recursion
0.37_49
trace() has 'tab-levels' - trace_open/trace_close
0.37_48
first complement/intersection works
last() removed
0.37_47
started last()
started first/last + complement
new t/first.t
0.37_44
fixed a bug in <=>
0.37_43
first/intersection code started (commented out)
0.37_42
allows inherited methods to use first()
0.37_41
passes tests
0.37_40
select/first works with freq+count or count
(some tests fail)
0.37_38
first works for union/select/quantize
0.37_37
first for union()
0.37_36
select() freq default is 1 if we have a count
0.37_35
first/tail works for quantize(), select(by[])
0.37_26
compact() is a no-op
0.37_23
quantize() is no longer tied; no longer generates 'undef'
subset values.
3 tests didn't pass; removed! (expected null subset values)
Quantize_Date.pm removed
Function.pm removed
0.37_19
removed global-cache in quantize (access was too difficult,
took too much time).
0.37_18
removed cacheing in Set::Infinite::Date (problems with 'mode'
internal variable).
0.37_16
quantize 'weekyears' internal indexes fixed
new tests added
0.37_11
Set::Infinite::Arithmetic docs revised
0.37_10
select() is no longer "tied"
lib\Set\Infinite\Select.pm removed.
offset doesn't use gmtime if doesn't have to.
0.37_06
Backtracks on complement()
EXCLUDE_EXT string/array correction in Makefile.PL
(thanks Mark Veltzer for pointing this out)
0.37_05
Offset.pm moved into Arithmetic.pm
0.37_04
removed eg/ical.pl
(thanks Mike Castle for pointing these out)
changed obsolete 'add' method to 'union' in eg/*.pl
removed null() docs
0.37_03
faster Offset.pm
0.37
0.36_50
use warnings in Set::Infinite::_Simple
0.36_49
remove module Set::Infinite::Element_Inf
0.36_48
uses native "Infinity" stringification
0.36_47
fixed some warnings
0.36_46
size return correct value for open integer sets
intersects/contains return undef if too_complex
0.36_45
min/max are cached
min/max work with union/intersection
select(), complement() not implemented (should carp!)
0.36_43
integer/real/tolerance are functions
min/max work with integer()
0.36_42
min/max work for offset();
0.36_41
min/max fixed for quantize()
t/backtrack.t tests 2,3 fixed; more tests
new methods (undocumented):
min_a(), max_a() return a list: (value, open-state)
0.36_40
internal inf == Perl Inf
0.36_36
complement backtracks, although not it might fail for some sets
(not tested at all!)
min/max/span/size are estimated for complex sets
might work for select() too.
list(), <=> carp for unbounded sets
0.36_11
backtrack method call is cleaner
0.36_10
_simple_intersection removed.
_simple_complement with parameter removed.
0.36_09
offset strict option removed. Was never used.
0.36_08
Set::Infinite::ICalset and S::I::ICal removed. use Date::Set instead.
0.36_07
Simple class renamed to _Simple; creates methods inside Set::Infinite
$self->new() creates an empty set, and copies private variables
from $self. This makes new() inheritance easier.
0.36
added 'copy' in order to allow 'subroutine-style' programming
instead of only 'functional' programming
added 'is_too_complex'
obsoleted modules: Set::Infinite::Date, Set::Infinite::ICal, Set::Infinite::ICalSet
use Date::Set instead.
added make_htmldoc.pl and make_readme.pl
0.34
added 'weekdays' option to 'offset'
0.31-0.33
some optimizations
offset is no longer 'tied' in order to try to make it faster
offset now *always* return an ordered set
quantize has better memoization control
0.30
optimized 'is_null' - avoids converting data to string
fixed examples - foreach needs ->list
fixed tests - thanks CPAN testers!
move 'type', 'tolerance', 'real', 'integer' from Simple.pm to Set::Infinite.pm
simpler 'contains'
removed tie code from Infinite.pm and Infinite::Simple.pm
0.29
new method 'compact'
offset option 'mode=>circle'
new method 'list'
new method 'no_cleanup'
offset can handle months, years
offset value must be array with even number of elements
select 'freq' default is set-size instead of 1.
removed internal 'compact_array'
join (" ", $a) no longer works. use join (" ", $a->list) instead.
quantize(10) no longer works. use quantize(quant=>10) instead.
ical_2: BYMONTHDAY did not instantiate in ical_2 unless 'print'
-- offset can't return array.
0.28
'strict' option in offset, select.
'strict=>0' option in quantize.
offset can handle 'negative counts from end'
0.27
offset 'value' can handle multiple value-pairs
optimized $class->new() instead of $class->new($self) in select, offset, quantize.
0.26
lots of problems due to $a->{list}->[$ia]->{a}
-- used a temp variable to split in smaller parts
new eg/ical.pl oo demo
marked 'select{interval}' option to be deleted in next release
select now properly handles negative by[]; checks parent index boundaries
masked errors in select by using a dummy variable.
cache Quantize_Date::FETCH (local to object)
user can 'push' new methods into 'quantize'
new 'iterate' method
better oo in Infinite.pm - most methods can now be overriden
array syntax corrected in Infinite.pm
new TRACE/trace and DEBUG_BT to help debug
0.25
backtracking fully implemented in: intersection, intersects, union, offset.
backtracking partially implemented in: quantize, select
backtracking is NOT implemented in: complement, size, span, max, min
See: backtrack.t
'epoch' support in core module. Doesn't need Date or ICal.
intersection was missing 'my $b;'
Date::sub propagates {mode}
use hash-subs to initialize quantize units
'quantize_date' uses 'one' as default unit
doesn't use Quantize.pm anymore, since Quantize_Date.pm is a superset.
doesn't need 'quantizer, selector, offsetter' either.
remove 'cmp' (thanks Martijn)
internal cache for Date and ICal object
0.24
offset has 'unit' parameter
'epoch' removed. use 0+ instead.
Quantize_Date is an extension of Quantize.
quantize, select, offset return a compact array of Set::Infinite instead of a sparse array of Set::Infinite::Simple
- no longer needs to test for null elements.
0.23
changed localtime to gmtime everywhere
new object type: ICal. Requires Date::ICal; marked as experimental
This module will not be tested if it can't find Date::ICal
new date method: epoch
0.22.05
doesn't need HTTP::Date
offset supports hours, in 'Date' type
put "eg/recurring.pl" in distribution. (should be there since 0.21)
new "Function.pm" base class for functions.
Used Funtion.pm for "Select.pm" and "Offset.pm"
Much better algorithm for "Select.pm"
stricter language for "quantize" - only hash allowed.
reduced "Simple.pm" - may be deprecated someday
Faster cleanup, max, min
Cleaner (faster?) union
0.21
new methods: "select" and "offset".
syntax changed: "quantize":
quantize( 1 ); # old syntax, still works
quantize( quant => 1 );
quantize( 'months', 1 ); # old syntax for quantize_date, still works
quantize( unit => 'seconds', quant => 1 ); # quantize_date
internal: quantize parameter order is different.
fixed: Quantize_Date returned Set::Infinite instead of Set::Infinite::Simple
fixed: Date::Add lost format
new: Set::Infinite::Date::day_size()
added: recursive test for quantize
changed: empty return value for quantize is "null" instead of ""; then
changed "null" name to "" :)
0.20
local "type"
0.18, 0.19
Set::Infinite::Element not used anymore.
2.3x speed improvement in tests over version 0.14.
0.17
Correction in Simple.pm line-ending, and TODO filename on Windows
Element_Inf and Date.pm test for undefined parameters on OpenBSD
0.16
40% speed improvement in tests over version 0.14.
0.15
20% speed improvement in tests over version 0.14.
bigint.t fails; moved to 'todo' directory.
`Date' fails in OpenBSD. Doesn't fail in linux or Windows.
0.14
Problems with Bigfloat tests - can't fix them. Moved to `todo' directory.
Fixed Bigint tests and warnings in other tests.
0.13
Simple.pm and Element.pm:
Corrected many warnings related to testing undef values on hash
Quantize.pm and Quantize_Date.pm
work on real sized chunks too - don't use `%' integer module operation.
Infinite.pm
quantize returns tied array. It can be used directly with `foreach'.
Pod and tests corrected.
Infinite.pm
Accepts slices as input. There are syntax problems - see "CAVEATS" in pod.
tests added.
Simple.pm
Will not cleanup if acessed as tied array, until both a and b are defined or a method is called,
so that we can set a, then b.
0.12
Correction in Set::Infinite::Simple::intersection
[5..5) is null
New function: quantize
0.11
Set::Infinite
Copyright message
Set::Infinite Line 8:
# use AutoLoader qw(AUTOLOAD);
Deep recursion on subroutine "Set::Infinite::add" at h:/util/Perl/site/lib/Set/Infinite.pm line 318.
Deep recursion on subroutine "Set::Infinite::Simple::new" at h:/util/Perl/site/lib/Set/Infinite.pm line 184.
solution:
Set::Infinite::Element->type and
Set::Infinite::Date->date_format
use `pop' instead of `shift', or read parameters
0.01 Mon May 14 14:43:09 2001
- made Makefile.PL; v.0.010