Grdb.swift: GRDB 5

Created on 8 Mar 2020  路  15Comments  路  Source: groue/GRDB.swift

Work on GRDB 5 has started!

Why a new major version?

Over the last year, GRDB 4 has demonstrated a pretty satisfying level of maturity. Since this last major release, more than 100 GitHub issues were opened and closed. Most of those issues were requests for support, which found their answer. Only a handful of bugs were found, and fixed. The feature set of the library was smoothly extended with support for Combine, batch updates, enhanced association, enhanced support for raw SQL, and more, without requiring any deep refactoring of the library internals. The presence of GRDB on StackOverflow remains anemic, which is an excellent sign that the library does meet the needs of its target audience, application developers, without much fuss. Contributors and users, thank you 馃檪馃馃嵕!

GRDB 5 will carefully avoid to jeopardize this achievement.

Instead, the next major release will focus on easing the future maintenance of the library, by removing old cruft and unused features. For example, we'll bump the required Swift version to 5.2. Hello 2020!

During its development, GRDB 5 is available in the GRDB5 branch of GRDB, GRDBCombine and RxGRDB. Xcode 11.4 is required.

Your comments, remarks, pet peeves, wishes and requests, are all welcome below!

  • [x] [#719](https://github.com/groue/GRDB.swift/pull/719): Breaking Change Bump required Swift version to 5.2
  • [x] [#720](https://github.com/groue/GRDB.swift/pull/720): Breaking Change Turn deprecated APIs into unavailable ones
  • [x] [#721](https://github.com/groue/GRDB.swift/pull/721): SE-0249: Key Path Expressions as Functions
  • [x] [#722](https://github.com/groue/GRDB.swift/pull/722): Breaking Change SE-0253: Callable values of user-defined nominal types
  • [x] [#723](https://github.com/groue/GRDB.swift/pull/723): SE-0255: Implicit returns from single-expression functions
  • [x] [#724](https://github.com/groue/GRDB.swift/pull/724): SE-0242: Synthesize default values for the memberwise initializer
  • [x] [#728](https://github.com/groue/GRDB.swift/pull/728): Breaking Change Make ValueObservation error handling mandatory
  • [x] [#729](https://github.com/groue/GRDB.swift/pull/729): Breaking Change ValueObservation always emits an initial value
  • [x] [#731](https://github.com/groue/GRDB.swift/pull/731): Breaking Change Hide ValueObservation implementation details
  • [x] [#732](https://github.com/groue/GRDB.swift/pull/732): Breaking Change Remove ValueObservation.compactMap
  • [x] [#736](https://github.com/groue/GRDB.swift/pull/736): Breaking Change Relax ValueObservation Guarantees
  • [x] [#737](https://github.com/groue/GRDB.swift/pull/737): Breaking Change Force implicit database region for ValueObservation
  • [x] [#738](https://github.com/groue/GRDB.swift/pull/738): Breaking Change Remove all observationForCount/All/First methods
  • [x] [#742](https://github.com/groue/GRDB.swift/pull/742): Breaking Change ValueObservation scheduling is no longer an attribute of the observation
  • [x] [#745](https://github.com/groue/GRDB.swift/pull/745): Breaking Change Explicit ValueObservation cancellation
  • [x] [#747](https://github.com/groue/GRDB.swift/pull/747): Breaking Change Rename GRDBCustomSQLite to GRDB
  • [x] [#749](https://github.com/groue/GRDB.swift/pull/749): Drop submodules used by performance tests
  • [x] [#750](https://github.com/groue/GRDB.swift/pull/750): Breaking Change Batch updates do not need any operator
  • [x] [#752](https://github.com/groue/GRDB.swift/pull/752): Breaking Change Remove ValueObservation.combine
  • [x] [#754](https://github.com/groue/GRDB.swift/pull/754): Match DatabaseError on ResultCode
  • [x] [#756](https://github.com/groue/GRDB.swift/pull/756): Export the underlying SQLite library
  • [x] [#770](https://github.com/groue/GRDB.swift/pull/770): Breaking Change Subqueries
  • [x] Harmonize GRDB, RxGRDB, and GRDBCombine behaviors regarding ValueObservation
  • [x] Migration Guide

GRDB 5 beta 2

  • [x] #772: Update the Database Sharing Guide with mention of the persistent WAL mode
  • [x] #773: Allow subqueries to refer to outer tables
  • [x] #774: Breaking Change All requests are usable as SQL expressions and collections
  • [x] #775: DatabaseMigrator can check if it has been superseded

GRDB 5 beta 3

  • [x] #784: Fix observation of eager-loaded to-many associations
  • [x] #790: Breaking Change Bump required iOS version to 10.0
  • [x] #791: Breaking Change Extend tracing of statement execution

GRDB 5 beta 4

  • [x] #794: Name of Database Connections

GRDB 5 beta 5

  • [x] #795: Breaking Change Enhanced support for WAL Checkpoints

GRDB 5 beta 6

  • [x] #798: Debugging operators for ValueObservation
  • [X] #800: Xcode 12 support
  • [x] #801: Breaking Change Combine support

GRDB 5 beta 7

  • [x] #803: Breaking Change Remove FetchedRecordsController

GRDB 5 beta 8

  • [x] #811: Introduce RenameColumnAdapter

GRDB 5 beta 9

  • [x] #813: Expose SQLite 3.31.1 APIs to iOS, macOS, tvOS, watchOS
  • [x] #814: Fix regression with views

GRDB 5 beta 10

  • [x] #817: Breaking Change Allow query planner to optimize some boolean tests

GRDB 5 beta 11

  • [x] #831: Breaking Change Improve Configuration.prepareDatabase
enhancement

Most helpful comment

v5.0.0-beta.6 is out

All 15 comments

I have been using GRDB for a few years so first thanks for all the work you put in.

The only thing I miss currently is the ability to add the SQLCipher variant, I guess it is no longer called GRDBCipher, as a dependency with SPM.

Hello @igorkulman,

Integrating SQLCipher with SPM comes with several technical challenges that are beyond my skills. It also comes with a maintenance challenge, as future versions of SQLCipher will ship. Conclusion: absolutely nothing will happen on this front without a very active help, and long-term support. See #556 for more information.

I guess it is no longer called GRDBCipher

See the documentation for up-to-date information.

v5.0.0-beta has shipped :-)

v5.0.0-beta.2 has shipped :-)

Folks, v5.0.0-beta.3 is out

I checked out the code and noticed that there are some conditional statements to support Linux. Can you share your plan on supporting the Linux platform? In your README you mention

Linux is not currently supported.

which seems to hint that it is being considered. I would love to use this package but the support of Linux as server platform is vital for me.

Hello @fappelman. Please see https://github.com/groue/GRDB.swift/issues/715 for more information.

v5.0.0-beta.5 is out

v5.0.0-beta.6 is out

v5.0.0-beta.7 is out. It is a serious release candidate!

v5.0.0-beta.8 is out.

v5.0.0-beta.9 is out.

v5.0.0-beta.10 is out.

v5.0.0-beta.11 is out.

GRDB 5.0.0 has shipped 馃檪

Was this page helpful?
0 / 5 - 0 ratings