summaryrefslogtreecommitdiff
path: root/ReleaseNotes.txt
blob: bf654dd19c0d0d21fda630695dccf0c0ed3ccfa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
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 <libical-glib/libical-glib.h>
 * 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):
----------------------------

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 <libical-glib/libical-glib.h> 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 <CR>?<LF> 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