Realm v10.31.0 Release Notes

Release Date: 2022-10-05 // over 1 year ago
  • ๐Ÿ— The prebuilt binary for Carthage is now build with Xcode 14.0.1.

    โœจ Enhancements

    • Cut the runtime of aggregate operations on large dictionaries in half (Core #5864).
    • ๐Ÿ‘Œ Improve performance of aggregate operations on collections of objects by 2x to 10x (Core #5864). Greatly improve the performance of sorting or distincting a Dictionary's keys or values. The most expensive operation is now performed O(log N) rather than O(N log N) times, and large Dictionaries can see upwards of 99% reduction in time to sort. (Core #5166)
    • โž• Add support for changing the deployment location for Atlas Apps. Previously this was assumed to be immutable (Core #5648).
    • ๐Ÿ”’ The sync client will now yield the write lock to other threads which are waiting to perform a write transaction even if it still has remaining work to do, rather than always applying all changesets received from the server even when other threads are trying to write. (Core #5844).
    • ๐Ÿ”€ The sync client no longer writes an unused temporary copy of the changesets received from the server to the Realm file (Core #5844).

    ๐Ÿ›  Fixed

    • Setting a List property with Results no longer throws an unrecognized selector exception (since 10.8.0-beta.2)
    • RLMProgressNotificationToken and ProgressNotificationToken now hold a strong reference to the sync session, keeping it alive until the token is deallocated or invalidated, as the other notification tokens do. (#7831, since v2.3.0).
    • Results permitted some nonsensical aggregate operations on column types which do not make sense to aggregate, giving garbage results rather than reporting an error (Core #5876, since v5.0.0).
    • Upserting a document in a Mongo collection would crash if the document's id type was anything other than ObjectId (since v10.0.0).
    • ๐Ÿ›  Fix a use-after-free when a sync session is closed and the app is destroyed at the same time (Core #5752, since v10.19.0).

    ๐Ÿ—„ Deprecations

    • โšก๏ธ RLMUpdateResult.objectId has been deprecated in favor of RLMUpdateResult.documentId to support reporting document ids which are not object ids. ### ๐Ÿ’ฅ Breaking Changes
    • Private API _realmColumnNames has been renamed to a new public API called propertiesMapping(). This change only affects the Swift API and doesn't have any effects in the obj-c API.

    Compatibility

    • Realm Studio: 11.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 14.0.1.
    • CocoaPods: 1.10 or later.
    • Xcode: 13.1-14.1.

    Internal

    • โฌ†๏ธ Upgraded realm-core from 12.7.0 to 12.9.0