Releases: SwiftKitz/Datez
Releases · SwiftKitz/Datez
5.3.0
What's Changed
- Platform minimums: Bumped watchOS from 8 to 9 and tvOS from 15 to 16. Both platforms require these versions for
Task.sleep(for:)used inDiscreteTimer. - Platform verification: Added
scripts/verify-platforms.sh— builds the library against all declared platform targets (iOS, macOS, tvOS, watchOS) to catch deployment target mismatches early.
Supported Platforms
| Platform | Minimum |
|---|---|
| iOS | 16+ |
| macOS | 13+ |
| tvOS | 16+ |
| watchOS | 9+ |
5.2.0
What's Changed
- DiscreteTimer: Removed
@MainActorrequirement — the class is now naturallySendableby using a staticrunLoopmethod, makingtimerTaskaletconstant with no mutable state. - Tests: Migrated all 14 test suites from XCTest to Swift Testing (
@Suite,@Test,#expect,#require,confirmation). - DiscreteTimer tests: Expanded from 1 to 5 tests — added coverage for minute time unit, date truncation, dealloc cancellation, and sequential tick firing.
5.1.1
5.1.0
What's Changed
-
Modernized
DiscreteTimerwith@MainActorand structured concurrency- Replaced
@unchecked Sendablewith@MainActorfor correct isolation - Replaced recursive
DispatchQueue.main.asyncAfterwith aTask-based loop usingTask.sleep(for:)for proper cancellation support - Timer task is now automatically cancelled in
deinit
- Replaced
-
Bumped macOS minimum to 13 to support the
Task.sleep(for:)API
Platform Minimums
| Platform | Minimum |
|---|---|
| iOS | 15+ |
| macOS | 13+ |
| tvOS | 15+ |
| watchOS | 8+ |
v5.0.0
Swift 6 & Modernization
A major upgrade bringing full Swift 6 compatibility and modern platform support.
Breaking Changes
- Swift 6 language mode enabled with strict concurrency checking
- Platform minimums raised: iOS 15+, macOS 12+, tvOS 15+, watchOS 8+
- CocoaPods support removed — use Swift Package Manager
CalendarComponentsEquatablenow compares all fields (includingweekOfYearandweekOfMonth, previously omitted)
Concurrency Safety
CalendarComponentsandDateViewconform toSendableDiscreteTimermarked@unchecked Sendablewith@SendableclosuresDiscreteTimer.TimeUnitconforms toSendable
Improvements
- Replaced force unwrap with
guard/preconditionFailurein date arithmetic - Switch expressions in
DiscreteTimer - Replaced deprecated
NSTimeZone.defaultusage in tests - Updated CI to
actions/checkout@v4 - Fixed file headers referencing old project name
Mark Your Calendars
The library has been in private beta, and only made public after shipping it with my apps to the AppStore. You can rest assured it is battle tested.