Bug Fixes
Swift 6 Concurrency Safety
Fixed task-local value binding issues that could cause runtime errors with Swift 6's strict concurrency checking.
Technical Changes:
- Fixed dependency value capture in async rendering tasks (iOS & macOS)
- Enabled StrictConcurrency feature flag on HtmlToPdfLive target
- Added comprehensive Swift6ConcurrencyTests suite (6 test cases)
- Replaced intermediate reference variables with proper capture lists
- Verified full compliance with Swift 6 strict concurrency mode
Impact:
- Eliminates potential runtime crashes when using @dependency in concurrent contexts
- Provides regression testing for task-local binding edge cases
- Ensures library remains forward-compatible with future Swift concurrency improvements
Resolves #16. Thank you @YasserB94 for identifying and fixing this critical concurrency issue.
Improvements
iOS CI Testing Infrastructure
Added comprehensive iOS simulator testing to continuous integration.
Technical Changes:
- iOS Debug builds tested on every PR/push
- iOS Release builds with strict concurrency verification
- Dynamic simulator selection (first available iPhone)
- Matches macOS test coverage (skips Performance/Stress/Memory tests)
- Platform-agnostic test suite (no hardcoded platform references)
Benefits:
- Catches iOS-specific regressions before release
- Ensures UIKit codepath (UIPrintPageRenderer, WKWebView) works correctly
- Verifies cross-platform compatibility of rendering logic
CI/CD & Tooling
- Pinned SwiftLint to 0.62.2 for consistency
- Improved GitHub Actions caching strategy
- Added Swift 6.2 as minimum required version
- Enhanced API breaking change detection workflow
- Migrated formatting workflows to Linux runners for performance
Internal Changes
- Code formatting improvements (swift-format)
- Documentation accuracy improvements
- SwiftLint configuration refinements
- Removed obsolete Package@swift-6.0.swift file
- Enhanced test isolation and reliability
Verification
All changes tested on:
- macOS 14+ (Debug & Release, Xcode 26.0, Swift 6.2)
- iOS 17+ (Debug & Release, iOS Simulator, Swift 6.2)
- Swift 6 Strict Concurrency Mode enabled
Contributors
Thank you @YasserB94 for #17.
Full Changelog: 1.0.2...1.0.3