Version 0.34 (the "Pete Puma" edition) --------------------------------------- We have adopted the new memory management semantics from the (soon to be abandoned, we hope) Evolution fork of libical. Every function that returns a string now has another variant (the same function name but with "_r" appended to it) which returns a string buffer that the caller is responsible for freeing. Version 0.33, 2008-Sep-11 ------------------------- Now merging back together with the KDE-PIM fork of libical. Thanks Allen! Please note that the correct include path for the header is now: #include You can still use for now, but it is deprecated and you will receive a compiler warning. Version 0.30, 2008-Jan-?? ------------------------- Massive merges from Evolution Data Server and other sources. Version 0.27, 2007-Feb-27 ------------------------- Merges some patches from KDE and Citadel. Updates timezone data to tzdata 2007c. Version 0.26, 2005-Sep-14 ------------------------- merges the libical forks from KDE, Evolution and SourceForge. Updates timezone data to tzdata 2005j. 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 --------------------