Revision history for Perl extension Set::Infinite.

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