Menu / packages / grdb.swift
grdb.swiftas of v7.11.1 · b83108d1
What it serves, where
| Capability | iOS | macOS | watchOS | tvOS | visionOS | Linux | Catalyst |
|---|---|---|---|---|---|---|---|
| Codable persistence |
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
| Concurrent access |
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.80 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
| Database encryption |
?not verified yet · confidence 0.50 · as of v7.11.1
|
?not verified yet · confidence 0.50 · as of v7.11.1
|
?not verified yet · confidence 0.50 · as of v7.11.1
|
?not verified yet · confidence 0.50 · as of v7.11.1
|
?not verified yet · confidence 0.50 · as of v7.11.1
|
?not verified yet · confidence 0.50 · as of v7.11.1
|
?not verified yet · confidence 0.50 · as of v7.11.1
|
| Full-text search |
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.80 · as of v7.11.1
|
✓serves it · confidence 0.75 · as of v7.11.1
|
✓serves it · confidence 0.80 · as of v7.11.1
|
| In-memory database |
?not verified yet · confidence 0.30 · as of v7.11.1
|
?not verified yet · confidence 0.30 · as of v7.11.1
|
?not verified yet · confidence 0.30 · as of v7.11.1
|
?not verified yet · confidence 0.30 · as of v7.11.1
|
?not verified yet · confidence 0.30 · as of v7.11.1
|
?not verified yet · confidence 0.30 · as of v7.11.1
|
?not verified yet · confidence 0.30 · as of v7.11.1
|
| Schema migrations |
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
| Reactive queries / change tracking |
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.80 · as of v7.11.1
|
✓serves it · confidence 0.80 · as of v7.11.1
|
✓serves it · confidence 0.80 · as of v7.11.1
|
| Type-safe queries |
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
| SQLite access |
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.90 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓serves it · confidence 0.85 · as of v7.11.1
|
✓ serves it · ◐ with conditions · ✕ not served (proven) · ? not verified yet — hover any verdict for the receipt, click to pin it
Notes
Codable persistence: Codable bridging is first-class: FetchableRecordDecoder (the Decodable row decoder) plus the FetchableRecord / PersistableRecord / EncodableRecord protocols are unconditional on all platforms. Codable structs conforming to these protocols get persistence and fetching for free (as shown in the README quick start).
Concurrent access: WAL-based DatabasePool (anchored via DatabasePool.path; the class decl itself fell outside the truncated digest), DatabaseSnapshot and reader/writer protocols are unconditional on all platforms. DatabasePool.makeSnapshotPool is gated behind SQLITE_ENABLE_SNAPSHOT && !SQLITE_DISABLE_SNAPSHOT, and Package.swift defines SQLITE_DISABLE_SNAPSHOT on .linux (Package.swift:19), so snapshot pools are unavailable on Linux — a peripheral feature; core concurrent access remains, with Linux confidence reduced accordingly.
Database encryption: SQLCipher API (usePassphrase, changePassphrase, SQLCipher log configuration) exists in the surface but every declaration is gated behind SQLITE_HAS_CODEC, which the standard SwiftPM build never defines; encryption requires a SQLCipher-enabled distribution (e.g. the GRDB.swift/SQLCipher CocoaPods flavor or a custom build). No platform has an unconditionally present encryption symbol, so status is unknown on all platforms with all-conditional evidence (confidence capped at 0.6).
Full-text search: FTS3/FTS4 virtual table modules and pattern API are unconditional on every platform. FTS5 (FTS5 struct, FTS5Pattern, tokenizers) is entirely gated behind SQLITE_ENABLE_FTS5 and is only available with custom SQLite / SQLCipher builds; supported status here rests on FTS3/FTS4. Linux confidence lower because runtime FTS availability depends on the linked system SQLite build.
In-memory database: GRDB documents in-memory databases (DatabaseQueue(named:) / DatabaseQueue() in the checkout at GRDB/Core/DatabaseQueue.swift), but no DatabaseQueue declaration made it into the truncated surface digest (800/2706 decls), so no symbol anchor is available. README-only evidence: status unknown, confidence capped at 0.3.
Schema migrations: DatabaseMigrator is unconditional on all platforms. Only the Combine convenience DatabaseMigrator.migratePublisher (DatabaseMigrator.swift:678, canImport(Combine)) is absent on Linux; that is a peripheral convenience and does not affect the core migration capability.
Reactive queries / change tracking: ValueObservation machinery (shared/async observation, schedulers) and transaction observation types are unconditional on all platforms. Combine publishers (ValueObservation.publisher, DatabaseRegionObservation.publisher, canImport(Combine)) are absent on Linux, but async-sequence and callback observation remain. The ValueObservation base type itself is not in the truncated digest (800/2706 decls); anchors are its sibling observation types, hence confidence slightly reduced.
Type-safe queries: Query interface DSL (QueryInterfaceRequest, Column, TableRecord) and type-safe SQLRequest are unconditional on all platforms in the surface. A few peripheral request methods (e.g. QueryInterfaceRequest.deleteAndFetchStatement) are gated behind GRDBCUSTOMSQLITE || SQLITE_HAS_CODEC; the core builder is not.
SQLite access: Core SQLite access API (Database, execute, reader/writer protocols) is unconditional across the surface. Package.swift declares iOS 13 / macOS 10.15 / tvOS 13 / watchOS 7 floors and explicitly configures the .linux platform (SQLITE_DISABLE_SNAPSHOT define, Package.swift:19), so Linux is a maintained platform. Digest truncated (800/2706 decls) and 9 ObjC files unparsed; confidence held below cap accordingly.
Badges for your README
Maintainer of grdb.swift? These are yours — verified claims, linked to the receipts. Wrong verdict? That's a fix we want; see contribute.