DroppyKitBuild
Version constants of this DroppyKit build.
enum DroppyKitBuild
Type properties
abi
static let abi: Int
The binary interface generation this DroppyKit was built as.
apiVersion
static let apiVersion: SemanticVersion
The additive API version of this DroppyKit.
This is the version the repository is tagged at, and the two move together even when a release adds no API. A tag and a constant that disagree is the sort of thing nobody notices until they are debugging a handshake, at which point it is the first thing they distrust.
1.0.1 stated @Sendable on the main-actor closure parameters that were relying on it being inferred. A host compiled with approachable concurrency (SE-0434) already treats a global-actor-isolated function type as @Sendable, while this module's interface is emitted without that feature, so the two spellings of the same type disagreed across the module boundary and Droppy could not conform to its own services.
1.0.2 is documentation: the pages no longer describe an install flow and an auto-update the host does not have.
supportedABIRange
static let supportedABIRange: ClosedRange<Int>
The ABI generations a host built against this DroppyKit should advertise: this generation plus the one before it, once one exists.
The handshake has always taken a range so a host can hold the previous generation through a transition, and the shipping host has always advertised abi...abi, which is one generation. That mismatch is invisible while ABI is 1 and becomes load-bearing on the day ABI becomes 2, which is the day it is too late to notice. Hosts advertise this constant instead of building their own range, so the policy arrives with the bump rather than after it.
At ABI 1 this is 1...1, because there is no earlier generation to hold. At ABI 2 it becomes 1...2 with no host change.