Version 0.24, XX Xxx 2002 ( cvs tag libical-0-24 )
--------------------------------------------------

**** Incompatibilities with previous version ****

CSTP client/server code has been removed from libicalss.
Future versions will eventually contain a full CAP 6.0
client/server implementation.

icalproperty_get_name() is deprecated and will change
in a future release.  Use icalproperty_get_icalproperty_name()
instead.

icalcomponent_get_span() is deprecated in this release
because it does not handle recurring events.  See
icalcomponent_foreach_recurrence() for an alternate
interface.

The icalproperty_remove_parameter() call is deprecated 
because it improperly deals with extended parameters.
See icalproperty_remove_parameter_by_kind() for a 
compatible call.

Code that deals with the TRANSPARENT property now
uses enumeration values to get/set values instead of
strings.

The code for dealing with icalsets was overhauled.  You
will want to use the common icalset_* routines
directly instead of calling into the icalfileset_* or
icaldirset_* routines.

A number of routines now expect to be called with
const arguments.  A number of routines now
return pointers to const data.


**** New Features ****

Major cleanup of the time-handling routines.  New API is
available that deals with timezones much more cleanly.

The regression routines in src/test are much cleaner.  
Test runs summarize which tests fail and do not
immediately abort() like the old set of tests.  A 
number of old, commented tests were resurrected.

C++ Interface: New libraries libical_cxx.la and libicalss_cxx.la
are build when you configure with the --enable-cxx option.

Java Interface: A JNI interface to libical is build when
you configure with the --enable-java option.

Most of libical is now reentrant and thread safe.  The Lex/Yacc
query parser is pre-built with flex 2.5.8 and bison 1.34.   To
rebuild these files you will need to specify the --with-devel
option.  The --enable-reentrant option also adds the -D_REENTRANT
flag for systems that require it.  The build system attempts to
add the pthread libraries to support a thread safe memory allocator
and thread-safe error handling.

A new storage mechanism for Berkeley DB 4.0 was contributed
by Critical Path.  Specify the --with-bdb4 and --with-bdb4-dir
options to enable.

Embedded code comments are slowly being migrated to be
doxygen compliant.  See http://www.doxygen.org/ for
more on this wonderful tool. 

The code should now compile with non-gcc compilers.  Certain
parts of the autogenerated code were causing problems.  The
code base has also been ported to the windows Visual C 
environment.


Version 0.23, 26 Mar 01 ( cvs tag libical-0-23 )
------------------------------------------------

**** Incompatibilities with previous versions ****

icalparameter_new_rsvp
icalparameter_get_rsvp
icalparameter_set_rsvp

	These routines now take and return ICAL_RSVP_TRUE and
	ICAL_RSVP_FALSE instead of 0 and 1
	
icalenum_*_to_*

	These routines have been moved to icalproperty, icalparameter
	or icalvalue



Python interface: An alpha level python interface is available in
src/python.

Perl interface: A pre-alpha level interface is available in
src/Net-ICal-Libical

Code Autogeneration: Converted all of the important files in
design-data/ to .csv files and improved the code that is generated
from them. Now all of the enumerations for property, parameters and
values are generated from thes files, as are the string
representations for the enumerations. You can add a new property or
parameter to the system simply by adding a line to the appropriate
file in design-data/

Recurrences: Improved the recurrence code by fixing bugs in MONTHLY
recurrences and completely re-implementing expand_year_days() for
YEARLY recurrences. Hubert V's aided in testing. 

Build system: JP Rosevear made several improvements to the build
system. Now checking out the code from cvs should give to a complete
but minimal distribution, without any of the autognerated files.

Interface changes: Nearly all of the icalenum routines for converting
between strings and enumerations have been moved out of icalenum into
icalproperty, icalparameter and icalvalue. This means that their names
have changed, although #defines have been added to icalenum.h to map
back to the old names.
 
Added src/libical/icllangbind.c that has some functions to make it
easier to bind libical to other languages.


Version 0.22, 15 Jan 01 ( cvs tag libical-0-22)
----------------------------------------------

Many improvements to the time routines in icaltime.c. I think that
they actually make sense now. Note that there is an interface change
with icaltime_from_timet() -- I removed the is_utc parameter, since
all timet values are in UTC. Use icaltime_from_int() if you really
want the old interface

Major improvements to icalfileset. icalfileset_select now works and so
does file locking.

Minor revision to the documentation, but it does include a new section
on file storage ( icalfileset ) and time ( icaltime.c)

Lots of bug fixes and small patches. 

I improved the regression test in src/test/regression.c. It now have
command line switches to select specific tests ( undocumentated, of
course ) and more of the tests include asserts, so you can just run it
without looking at the output. If the test runs without crashing, it
is mostly OK.



Version 0.21, 20 Nov 00 ( cvs tag libical-0-21)
----------------------------------------------

        * icalmessage.c Many routines to create new ical messages. 

	* icalspanlist.c Code to generate a list of the busy time f the
 	VEVENTS in a set. Also includes routiens to generate free and busy
 	lists from the spanlist, and to find the next free time after a
 	given time.

	* icalvalue.c The STATUS property now has its own value type,
 	STATUS, which holds the enumeration icalproperty_status.

	* icalrestriction.c Added more restrictions. Now handles mutual
 	and exclusive consitions, and checks for the reight values in
 	STATUS properties
	
	* icaltypes.c Added routine to create durationtype from string:
 	icaldurationtype_from_string


	* icalcomponet.c Add sever get/set convienience routines to access
 	and manipulate common component propoerties from the component
 	interface. This eliminates the need to create a lot of temporary
 	variables if you just want to change the start time of and event.


	* icalcomponent.c Added new routines to icalcomponent:
	_get_span -- returns the start and end times of the event in UTC
	_get_first_real_component -- return ref to VTODO, VEVENT or VJOURNAL

	* icalspanlist.c Added new class, icalspanlist, that generates a
 	list of alternating busy and free times from an icalset. The class
 	includes routines to gnerate rfc2445 busy and free lists, and to
 	get the next avaliable busy or free time after a given time.


Version 0.20D 3 Nov 00
-----------------------

Many miscelaneous tweaks to the build system

More work to icalclassify.

Aded routines to icaltime.c to convert to and from specific timezones
in Olsen format ("America/Los_Angeles")


Version 0.20 7 Sept 00 (cvs tag libical-0-20 )
----------------------------------------------

Addedd icalclassify() which looks at a message and determine how to
process it.

Misc bug fixes and tweaks. 

Version 0.19 6 August 00 (cvs tag libical-0-19)
-----------------------------------------------

Created a MIME parser in icalmime.c. This will take any complex MIME
encapsulated message and return an icalcomponent with the same
structure. Each MIME part is represented by a component of type
X-LIC-MIMEPART.

Added MIME partsing to stow.c

Added external iterators to icalcomponent. See test_iterators() in
test/regression.c

Refactored icalcluster and icalstore into icalset, icalfileset and
icaldirset, which have a pseudo inheritance relationship between them.

Fixed more memory leaks. 

Version 0.18a 10 June 00 ( cvs tag libical-0-18a )
-----------------------------------------------

Did the final tweaks to stow.c, a program to recieve and store iMIP
messages.


Version 0.18 10 June 00 ( cvs tag libical-0-18 )
-----------------------------------------------

Added libicalvcal, which includes the Versit code for parsing vCal
files and a routine (icalvcal_convert() ) that converts a vCal object
to an iCal object. The test program is src/test/testvcal.

Added marginally functional recurrence code. The curent code does not
handle all of the examples in rfc2445 ( which are extracted in
test-data/recur.txt ) but it can do all of the obvious cases. See the
test program in src/test/recur.c for an example. In particular, the
code cannot handle the integer values in BYDAY, nor negative integers
in BYMONTH or BYMONTHDAY. It also cannot handle BYSETPOS.

Moved some code to the examples directory and improved the comments. 

Did a little more work on the documentation in the doc directory. The
documentation is in LyX source, but there is a text version in
UsingLibical.txt


Version 0.17 15 May 00  (cvs tag libical-0-17 ) 
---------------------------------------------

Fixed two bugs that added extraneous '/' to test values

Fixed type in internal string for the COUNTER method

Eliminated a memory leak in icalparser.c


Version 0.16a 29 April 00
----------------------------------------------

Fixed bug in icalvalue_new_from_string that caused METHOD value to
choke on non standard input.

Fixed a memory leak in icalparser_add_line -- failed to free 'line'


Version 0.16 5 April 00 ( cvs tag libical-0-16)
----------------------------------------------

Now using automake. 

Substantial changes to the parser. New interfaces let you parser
multiple components from a single stream by feading the parser object
one line at a time.

Added a STRING value type. this type is like TEXT, but does not
backslash magic characters. It is used in PRODID and REQUEST-STATUS,
where the '/' and ';' are literal.

Added several convience functions for REQUEST-STATUS to icalenums.c

Addedd a routine to icalcomponent to convert X-LIC errors to
REQUEST-STATUS return values.

Version 0.15a  5 Mar 00 (cvs tag libical-0-15a)
---------------------

Experimented with CVS

Fixed icalvalue_set_text to convert escaped characters into the proper
values.

Other minor code tweaks. 


Version 0.15 7 Feb 00
---------------------

Split the storage classess ( icalstore, icalcluster, icalcalendar )
into a seperate library, libicalss

Implemented restriction checking in file icalrestrictions.c. The
checking is not complete, but can handle the bulk of the restrictions
described in RFC 2446.

Created a new value type, METHOD. Changed METHOD property to use the
new value. The METHOD value uses an enumeration.


Version 0.14b 
-------------

Implemented parsing of RECUR values, although it does not handle BYDAY
specs with numbers.

Fixed error in icalparser_next_line that mangled lines longer than the
temp buffer (1024 chars.) The temp buffer is now 80 chars, and it can
handle (apparently) arbitrary length lines

Fixed severe brokenness in a value, but I forgot which one. 

Cleaned cruft out of the distribution, so the tarfile is smaller. 


Version 0.14a 14 Jan 00
-----------------------

Fixed bug in ROLE parameter -- missing '-' in the text of allowed values

Fixed bug in X-parameters

Version 0.14 11 Jan 00
----------------------

Fixed wrong value type for TRIGGER property

Added Calendar object. Calendar is an aggregate of two stores and two
clusters, and can store all of the inforamation associated with a
calendar.

icalcomponent_add_property and icalcomponent_add_component will
complain if you try to add a component or property that is already
part of an other component. The *_free routines wil complain if you try
to free a linked component or property.

More improvements to error handling. 

Parser is much more robust. 

Minor memory enhancements. 

Regression test runs without memory leaks. 

Version 0.13d 21Dec99
---------------------

Seperated perl interface and library

Added autoconf support

Scripts that generate derived properties, values and parameters now
change source and header files inline.

Changed icalstore to cluster all components with DTSTART in a month
into a single file. This should reduce number of file accesses by a
factor of 60.

Ran code through Purify and fixed memory leaks. 


Version 0.13 16Nov99
---------------------

Yet more bug fixes! Yeah!

Added better error handling. The Parser inserts X-LIC-*ERROR
properties to warn of parsing errors.

The imip source/sink programs in /src/imip is demonstrably functional. 

Version 0.12b 17Oct99
---------------------

More bug fixes, particularily in parse from string routines

ICal::Store is mostly functional

This is version is a checkpoint, not a release. 

Version 0.12a 10Oct99
---------------------

Expanded perl interface: 
	Added 1/2 of Store module
	Fixed bugs
	Implemeted get_{first,next}_property

Extended C interface
	Made get_{first,next}_property work properly
	Fixed bugs


This is version is a checkpoint, not a release. 

Version 0.12 27Aug99
--------------------

Added a rudimentatry perl interface

This is version is a checkpoint, not a release. 


Version 0.11 11Aug99
--------------------

Eliminated most use of flex/bison -- all parsing, except for the
values, is done in C.

Cleaned up memory leaks. Purify claims that I got them all. 

Moved all derived component/prop/param/value code ( in .inc / .h
files) into main files ( icalcomponent.{c,h}, icalproperty.{c,h}, etc/
) 

Implemented *_clone routines. 

Fixed a lot of bugs. 

Implemented more value types. Still unimplemeneted are BINARY and RECUR

Included MacOS/Code Warior files from Graham Davison


Version 0.10 8Jul99
-------------------

Eliminated shift/reduce and reduce/reduce conflicts in the parser.
This version is almost feature complete -- it has the basic structure
for all of the library's functionality, and it will only require
implementing procedure shells and fixing bugs. I think that all of the
hard work is done...

Version 0.09a,b 3,7 Jul99
-------------------------

Various improvements to the parser, added some functionality. The parser code
is mostly complete, and should be fully functional, except for a horde of
bugs. Also added support for X-Properties. 

Version 0.09 25Jun99
--------------------

Added a parser in files src/comp/icalitip.{y,l} The lexer is mostly 
functional, but the parser is not. 


Version 0.08 2Jun99
--------------------

All files now have MPL licensing

Implement enough of the code to perform some rudimentary testing


Version 0.07 14May99
--------------------

Remove all interfaces that construct object from a string

Moved most code back into comp directory

Implemented C files for most headers -- usecases.c now links. 

Many improvements to generation scripts. 



Version 0.06 25Apr99
--------------------

Expanded distribution to include:
	Directory structure that can accomodate future expansion
	Several levels of Makefiles
	This CHANGES file

Added headers for irip and parse modules

Added several files with design information

Added scripts that I had used to generate much of the ical header code. 

Split C headers from CC headers

Added data for iTIP and iCAL component restrictions in restrictions.csv

Version 0.05 11Apr99
----------------------

Changes to ical headers

       Added derived Property classes.

       Improved the interface to the derived property and parameter classes

        Added derived component classes. 

        Created usecases.c and ccusecases.cc to demonstrate use

        C++ interface compile 


Version 0.04 5Apr99
-------------------

Version 0.02 30Mar99
--------------------
