Embedded Swift support for SQLiteKit - #5
Draft
scottmarchant wants to merge 1 commit into
Draft
Conversation
Elide the declarations Embedded Swift cannot express. Every gate is `#if hasFeature(Embedded)` or `#if canImport(Foundation)`, so no other target changes. - `SQLiteConfiguration.Storage.memory` derives its identifier from system randomness where `Foundation.UUID` is unavailable. - `SQLiteDatabaseVersion`'s `isEqual(to:)`/`isOlder(than:)` use `as? Self`, a cast to a generic type Embedded Swift forbids; there the `SQLDatabaseReportedVersion` protocol's `stringValue`-based defaults apply. - Query logging omits the interpolated bind list under Embedded Swift, which has no reflection. - The `Decodable` row-decoding entry points in `SQLiteRow+SQLRow` are elided, matching SQLKit's `SQLRow` protocol on that target. - `SQLiteDataDecoder` and `SQLiteDataEncoder` get Embedded-only variants: the decoder becomes an API-compatible placeholder (there is no Codable engine to drive), and the encoder maps SQLKit's driver-neutral `SQLDataValue` cases straight onto `SQLiteData`. Building for `wasm32-unknown-wasip1-embedded` additionally requires an Embedded-clean `apple/swift-log`; see the pull request description. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes SQLiteKit compile under Embedded Swift. Stacked on #4 (
feat/wasi-nio-free) so this diff shows only the Embedded work — 5 files, +67/−0, purely additive. It retargets tobase/vapor-mainonce that merges.Research-grade and lower priority than the WASI PR underneath it. Of the three repos this is the last to land, and it also depends on the sql-kit Embedded PR, since the Embedded
SQLiteDataEncoderconsumes SQLKit'sSQLBindValue/SQLDataValue.What changed
One commit. Every gate is
#if hasFeature(Embedded)or#if canImport(Foundation).SQLiteConfiguration.Storage.memoryderives its identifier from system randomness whereFoundation.UUIDis unavailable.SQLiteDatabaseVersion'sisEqual(to:)/isOlder(than:)useas? Self, a cast to a generic type Embedded forbids; there SQLKit'sstringValue-based protocol defaults apply instead.Decodablerow-decoding entry points inSQLiteRow+SQLRoware elided, matching what SQLKit'sSQLRowprotocol exposes on that target.SQLiteDataDecoderandSQLiteDataEncoderget Embedded-only variants: the decoder becomes an API-compatible placeholder (there's no Codable engine to drive), and the encoder maps SQLKit's driver-neutralSQLDataValuecases straight ontoSQLiteData.Upstream prerequisites
Two, both outside this repo:
SQLBindValue/SQLDataValue.apple/swift-log. Upstream 1.14.0 doesn't compile under Embedded Swift and the build dies inLoggingbefore reaching SQLiteKit. Verified against a locally patched clone — that override is not committed here, and the manifest still points at upstream.Verification
Embedded wasi (
swiftly run +main-snapshot-2026-06-12 ... --swift-sdk DEVELOPMENT-SNAPSHOT-2026-06-12-a-wasm32-unknown-wasip1-embedded), with the patched swift-log and the sibling Embedded branches wired viaswift package edit --path: green.Native and regular-wasi behaviour is unchanged by construction — every gate here is false off Embedded — and the parent PR's results (9/9 native, no API breakage, zero NIO on wasi) carry over.