By: Tom Sydney Kerckhove <syd@cs-syd.eu>
ical-recurrence: exclude exception dates by instant as well as by spelling [section 3.8.5.1](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.1) @ Property Parameters: IANA, non-standard, value data type, and time zone identifier property parameters can be specified on this property. @ @ The final recurrence set is generated by gathering all of the start DATE-TIME values generated by any of the specified "RRULE" and "RDATE" properties, and then excluding any start DATE-TIME values specified by "EXDATE" properties. @ A time zone identifier is allowed on an EXDATE and nothing ties it to the one DTSTART uses, so a conforming exception can name an instance in another time zone from the one the instance itself is written in. Comparing the values as written misses those. Compare what they resolve to. This runs on top of the comparison of the written values rather than replacing it, so an exception or an occurrence whose time zone the calendar does not define is still excluded on the strength of its spelling. Nothing that used to be excluded stops being excluded, and nothing starts failing for want of a time zone, which matters because removeExceptionDatetimesSet runs for every event.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 2s | 1s | 1s | 3s | 2s |
| Eval | 3s | 12s | 12s | 15s | 0s |
| Build | 14s | 4m29s | 2m56s | 3m11s | 1m33s |
| Suite | 2s | 4m42s | 3m08s | 3m11s | 1m36s |