Description
The work on next major version GRDB 4 has started. It is an opportunity to upgrade SQLCipher.
See Upgrading to SQLCipher 4 for more information about the breaking changes introduced by SQLCipher 4.
The SQLCipher 4 repository no longer contains any Xcode project (sqlcipher/sqlcipher#292). This has a big impact on the techniques documented by GRDB for embedding SQLCipher.
-
CocoaPods: OK. Upgrading the GRDBCipher podspec so that it depends on SQLCipher 4 should be straightforward.
-
Manual installation: NOT OK. The GRDBCipher.xcodeproj project contained in the GRDB repository can no longer embed the non-existing SQLCipher Xcode project.
-
Carthage: NOT OK. Even if GRDB does not "officially" support Carthage, some users fork GRDB and set up their customized Carthage support. Those setups will break because the GRDBCipher.xcodeproj project contained in the GRDB repository can no longer embed the non-existing SQLCipher Xcode project.
A few possible options:
-
Go full CocoaPods
The GRDBCipher.xcodeproj project contained in the GRDB repository would only exist for tests, not for user consumption. It would embed SQLCipher through CocoaPods.
The only documented and supported way to embed GRDBCipher in an application would be through CocoaPods. Manual installation and Carthage would no longer be supported.
User damage: atomic, because some options become simply unavailable.
Setup cost: medium, because we'll be forced to upgrade GRDB 3.6.2 for Swift 5, in order to provide an Xcode upgrade path which does not break GRDB. I was hoping we could avoid this step which is painful because GRDB 3 must support
SWIFT_VERSION=4
(details).Long run cost: zero.
-
Build a clone of the excellent http://github.com/swiftlyfalling/SQLiteLib for SQLCipher. This would allow GRDB to keep on supporting manual installation, just like custom SQLite builds. But someone has to build and maintain a whole new repository.
User damage: high because things will break anyway.
Setup Cost: unknown.
Long run cost: not zero.
-
Do not upgrade SQLCipher.
User damage: I don't quite know how to evaluate how much SQLCipher 4 is an improvement over SQLCipher 3.
Setup Cost: zero.
Long run cost: zero.
cc @swiftlyfalling and @darrenclark because you may help figuring out the best option.
cc @developernotes and @sjlombardo from SQLCipher, for information.