Release Highlights ================== Version 3.1.0 (NOT RELEASED YET): -------------------------------- * REUSE compliant licensing * Requires MSVC 2013 or higher (when building on Windows with MSVC) * Requires CMake v3.11.0 or higher * For the C++ bindings, requires a C++11 compliant compiler * The old src/python code is removed in favor of the glib-introspection generated Python bindings. Requires building with -DGOBJECT_INTROSPECTION=ON * New CMake option "LIBICAL_ENABLE_64BIT_ICALTIME_T" to use 64-bit time_t implementations on 32-bit systems (where available and supported. Windows-only so far) * libical-glib requires glib 2.38 or higher * libical-glib requires a C11 compliant compiler * draft-ietf-calext-eventpub-extensions-19 (RFC 9073) support added * draft-ietf-calext-valarm-extensions-07 (RFC 9074) support added * libical-glib API is considered stable; no longer need to define LIBICAL_GLIB_UNSTABLE_API=1 before including * Allow previous recurrence iteration * Improved performance of recurrence iterators * GEO property has arbitrary precision (values are internally stored as strings, not doubles) * All ical*_new_clone() functions have been deprecated in favour of ical*_clone() * Added support for Event Publishing (RFC 9073) and VALARM (RFC 9074) Extensions * icaltzutil_get_zone_directory() can use the TZDIR environment to find system zoneinfo * New publicly available functions: + icalrecurrencetype_encode_day + icalrecurrencetype_encode_month + icaltzutil_set_zone_directory + icalcomponent_clone + icalproperty_clone + icalparameter_clone + icalvalue_clone + icalcluster_clone + icalrecur_iterator_prev + icalcomponent_set_x_name + icalcomponent_get_x_name + icalcomponent_get_component_name + icalcomponent_get_component_name_r + ical_set_invalid_rrule_handling_setting + ical_get_invalid_rrule_handling_setting * Deprecated functions: + caldat (replaced by internal function icaldat_int()) + juldat (replaced by internal function juldat_int()) + icalcomponent_new_clone + icalproperty_new_clone + icalparameter_new_clone + icalvalue_new_clone + icalcluster_new_clone * No longer publicly available functions: + icaltzutil_fetch_timezone * Removed unused declarations: (were in the public headers but not used at all) + struct icaltimezonetype + struct icaltimezonephase Version 3.0.17 (UNRELEASED): ---------------------------- * Improved Android support * Escape commas in x-property TEXT values * New publicly available functions: + get_zone_directory() Version 3.0.16 (17 October 2022): --------------------------------- * Fix regressions in 3.0.15 due to improperly tested fuzz fixes * Fix argument guards in icaltime_as_timet to match documentation and tests Version 3.0.15 (06 October 2022): --------------------------------- * Add missing property parameters into libical-glib * Fix CMake option USE_32BIT_TIME_T actually uses a 32-bit time_t value * Fix icaltime_as_timet, which returned incorrect results for years >= 2100, to work properly between years 1902 and 10k. * Fix x-property comma handling and escaping * Built-in timezones updated to tzdata2022d (now with a VTIMEZONE for each time zone alias) * Fix a fuzzer issue * Handle unreachable-code compile warnings with clang * Ensure all vanew_foo() calls finish with (void*)0 (not 0) Version 3.0.14 (05 February 2022): ---------------------------------- * icalvalue: Reset non-UTC icaltimetype::zone on set * Fix icalcomponent_set_due not removing TZID when necessary Version 3.0.13 (17 January 2022): --------------------------------- * icalcomponent_get_dtend() return icaltime_null_time(), unless called on VEVENT, VAVAILABILITY or VFREEBUSY * icalcomponent_get_duration() for VTODO calculate with DUE instead of DTEND * Replace CMake FindBDB with FindBerleyDB (https://github.com/sum01/FindBerkeleyDB) * Fix finding ICU and BerkeleyDB on Mac (look for homebrew installs first) Version 3.0.12 (08 December 2021): ---------------------------------- * Fix a libicalval crash in cleanVObject * METHOD:DECLINECOUNTER must have DTEND or DURATION * Handle if DTEND and DURATION are both missing * Improved FindICU (copied from official CMake. see files in cmake/Kitware) * Buildsystem fixes (especially for the Ninja generator) * Built-in timezones updated to tzdata2021e Version 3.0.11 (09 October 2021): --------------------------------- * Fix icalrecur_iterator_set_start() for hourly, minutely, and secondly recurrences * Fix build for Berkeley DB version greater than 5 * Fix vcal for some architectures (like aarch64, ppc64le and s390x) * Fix memory leaks in vcal * Prevent crash when looking for tzid in initialize_rscale * Adjust libdir and includedir in generated pkgconfig files * Built-in timezones updated to tzdata2021c Version 3.0.10 (17 April 2021): ------------------------------- * Fix building -DSTATIC_ONLY=True with Ninja * Fix generating wrong recurrence rules (#478) * Fix a bug computing transitions in tzfiles * Fix reading TZif files to use TZ string in the footer as the last (non-terminating) transitions * Fix reading TZif files to use more RRULEs and/or RDATEs whevever possible * Built-in timezones updated to tzdata2021a Version 3.0.9 (16 January 2021): -------------------------------- * Add support for empty parameters, e.g. CN="" * Accept VTIMEZONE with more than one X- property * Several fixes for recurrences containing BYWEEKNO * icalrecurrencetype_from_string() will reject any RRULE that contains a rule-part that occurs more than once * Improve thread safety * Fix compiled-in path for the built-in timezone data * Fix reading TZif files with empty v1 data (use v2+ whenever possible) * Add backwards compatibility for previous TZIDs * Built-in timezones updated to tzdata2020d * icalrecurrencetype_from_string() will reject any RRULE that contains a rule-part that occurs more than once * Fix build with newer libicu * Fix cross-compile support in libical-glib Version 3.0.8 (07 March 2020): ------------------------------ * Fix for icalattach_new_from_data() and the 'free_fn' argument * Fix if recurrencetype contains both COUNT and UNTIL (only output UNTIL in the RRULE) Version 3.0.7 (15 December 2019): --------------------------------- * libical-glib: Fix ICalAttach handling of the icalattach native structure * Let icalattach_new_from_data() use the 'free_fn' argument again * Fix memory leaks in attachment handling and elsewhere * Fix a multithreading race condition * More fuzzification fixes Version 3.0.6 (14 Sept 2019): ----------------------------- * Handle both COUNT and UNTIL in RRULEs * Fix RRULE BYDAY with INTERVAL=2 conflict * Various fuzzification fixes * New publicly available function: + icaltimezone_truncate_vtimezone() * Add option to disable building the test suite * Built-in timezones updated to tzdata2019c Version 3.0.5 (14 May 2019): ---------------------------- * New publicly available function: + icalproperty_get_datetime_with_component() * Allow reset DATE/DATE-TIME VALUE parameter for all-day events * icalproperty_get_datetime_with_component() will use location as TZID fallback. * New CMake option ENABLE_GTK_DOC for disabling the libical-glib developer documentation * GObject Introspection - use $MAJOR-0 versioning * libical-glib API is considered unstable, define LIBICAL_GLIB_UNSTABLE_API=1 before including to be able to use it. * Built-in timezones updated to tzdata2019a * De-fuzzifications and Coverity fixes Version 3.0.4 (14 Aug 2018): ---------------------------- * Silently fail RSCALE recurrence clauses when RSCALE is disabled * Fixed icalcomponent_set_comment() and icalcomponent_set_uid() * fix FREQ=MONTHLY;BYMONTH * Skip UTF-8 marker when parsing * Fix parsing ? in VCF files produced by Outlook * Fix TZID on DATE-TIME value can override time specified in UTC * CMake discovery module for ICU uses pkg-config now * New publicly available function: + icalparameter_kind_is_valid() * Built-in timezones updated to tzdata2018e Version 3.0.3 (27 Feb 2018): ---------------------------- * VTODO COMPLETED property can be a DATE-TIME or DATE (for backward compatibility) * Improved recurrence iteration Version 3.0.2 (17 Feb 2018): ---------------------------- * No longer attempt to detect the need for -DUSE_32BIT_TIME_T with MSVC * New CMake option ICAL_BUILD_DOCS which can be used to disable the docs target * Fix threading hang in BSD type systems (OpenBSD, MacOS,...) * Build with Ninja improvements Version 3.0.1 (18 Nov 2017): ---------------------------- * Built-in timezones updated to tzdata2017c * Fix a multi-threaded deadlock in icaltimezone_load_builtin_timezone() * Fix a CMake problem with parallel builds Version 3.0.0 (28 Oct 2017): ---------------------------- * Relicense from MPL 1.0 to MPL 2.0 (keep dual license for LGPL v2.1) * Requires CMake v3.1.0 or higher along with various CMake and buildsystem fixes * Added a 'make uninstall' * Fixed use-after-free issues and some memory leaks * Built-in timezones updated to tzdata2017b * More accurate VTIMEZONE generation when using the system time zone data (when USE_BUILTIN_TZDATA=False) * icalvalue_as_ical_string() returns "TRUE" (non-zero) or "FALSE" (zero) values only. * New icalvalue.h convenience macros: ICAL_BOOLEAN_TRUE and ICAL_BOOLEAN_FALSE * Better value type checking of property values when parsing * icalvalue_new/set_date and icalvalue_new/set_datetime now enforce DATE and DATE-TIME values respectively * draft-ietf-calext-extensions (RFC 7986) support added * Parameter values are now en/decoded per RFC 6868 * Removed is_utc from icaltimetype struct * Set icaltimetype.zone to icaltimezone_get_utc_timezone() to change a time to UTC * Use icaltime_is_utc() to check if a time is in UTC * Added support for VPATCH component * New publicly available functions: + icalproperty_set_parent (icalproperty_get_parent was already public) + icalvalue_get_parent (icalvalue_set_parent was already public) + icalparameter_set_parent + icalparameter_get_parent + icalvalue_new_datetimedate (DATE or DATE-TIME) + icalvalue_set_datetimedate + icalvalue_get_datetimedate + icalrecur_iterator_set_start + icalcomponent_normalize() + icalproperty_normalize() * Removed deprecated functions: + icaltime_from_timet (use icaltime_from_timet_with_zone) + icaltime_start_day_of_week (use icaltime_start_day_week) + icalproperty_remove_parameter (use icalproperty_remove_parameter_by_kind) + icalproperty_string_to_enum (use icalproperty_kind_and_string_to_enum) * Signature changed for functions: + VObject *Parse_MIME_FromFileName(const char *fname) + icalgauge *icalgauge_new_from_sql(const char *sql, int expand) + const char *icallangbind_property_eval_string(icalproperty *prop, const char *sep) + const char *icallangbind_property_eval_string_r(icalproperty *prop, const char *sep) + void set_zone_directory(const char *path) + icalcalendar *icalcalendar_new(const char *dir) + int icalrecur_expand_recurrence(const char *rule, time_t start, int count, time_t *array) Version 2.0.0 (28 Dec 2015): ---------------------------- * WARNING: Version 2 IS NOT Binary Compatible with Older Versions * Version 2 is Source Compatible with Older Versions * Lots of source code scrubbing * [New] RSCALE support (requires libicu from http://www.icu-project.org) * [New] CalDAV attachment support (draft-ietf-calext-caldav-attachments) * [New] Resurrect the Berkeley DB storage support * [Bug] issue83: Incorrect recurrence generation for weekly pattern * Handle RRULEs better * Handle threading better Version 1.0.1 (11 Oct 2014): ---------------------------- * [Bug] issue74: Do not escape double quote character * [Bug] issue80,issue92: fix crashes using icaltimezone_load_builtin_timezone() recursively * [Bug] Fix icalcomponent_foreach_recurrence() and large durations between recurrences (e.g. FREQ=YEARLY) * [Bug] Properly handle UTCOFFSETs of the form +/-00mmss * [Bug] Properly skip bogus dates (e.g. 2/30, 4/31) in RRULE:FREQ=MONTHLY * [Bug] Properly handle RRULE:FREQ=MONTHLY;BYDAY;BYMONTHDAY when DTSTART isn't on BYDAY * [Bug] Fix RRULE:FREQ=YEARLY;BYDAY;BYWEEKNO - MUST use ISO weeks * [Bug] Properly skip bogus dates (e.g. 2/29) in RRULE:FREQ=YEARLY[;BYMONTH][;BYMONTHDAY] * [New] Update tzdata to version 2014g * [New] Support added for schedule params: agent, status, force-send * [New] Added a UID to the VFREEBUSY component * [New] Allow dates > 2038 if sizeof(time_t) > 4 * [New] Add properties from draft-ietf-tzdist-service * [New] Add support for RRULE:FREQ=YEARLY;BYDAY;BYYEARDAY and fixed RRULE:FREQ=YEARLY;BYYEARDAY with negative days * [Build] Autotools build system is removed * [Build] CMake version 2.8.9 (or higher) is required (was CMake version 2.4.0) * [Build] Add new -DSHARED_ONLY and -DSTATIC_ONLY CMake options * [Build] Remove -DSTATIC_LIBRARY CMake option * [Build] MSYS2 builds (fixed instructions) * [Build/Doc] Now can build api documentation with make docs * [Quality] More regression tests added, in particular for recurrence * [Quality] Almost all compile warnings silenced * [Quality] A bunch of Coverity Scan warnings silenced Version 1.0.0 (28 Jun 2014): ---------------------------- * Reborn