Performance and dependency release of BaziCore — identical charts and throughput, less work on the cold and batch paths.
✨ Highlights
- Shared solar-term cache —
AstronomicalSolarTermProvider.sharedwithprewarm(gregorianYear:)/prewarm(gregorianYears:)lets batch and concurrent workloads reuse high-precision roots instead of recomputing them. - Single cold solve — concurrent cold lookups for the same term de-duplicate; one solve populates every waiter.
- Child-limit fast path — natural providers resolve the adjacent 节 boundary from the birth month, replacing the three-year solar-term scan.
- Lighter true-solar shift — clock correction uses integer day arithmetic instead of
Calendar/DateComponentsallocation. - AstroCore v3 — solar longitude and equation-of-time now route through the v3 native Julian Day APIs.
🔬 Validated
All 179 tests pass; golden fixtures and reference-provider parity are unchanged — published charts and performance numbers match 1.0.0.
📋 Requirements
Swift 6.0+ · iOS 15+ · macOS 12+ · tvOS 15+ · watchOS 8+ · visionOS 1+
📦 Install
.package(url: "https://github.com/wbx1-Ltd/BaziCore-Swift.git", from: "1.1.0")