Realm v10.7.3 Release Notes

Release Date: 2021-04-22 // about 3 years ago
  • โœจ Enhancements

    • ๐Ÿ“ฆ Package a prebuilt XCFramework for Carthage. Carthage 0.38 and later will download this instead of the old frameworks when using --use-xcframeworks.
    • โฌ†๏ธ We now make a backup of the realm file prior to any file format upgrade. The backup is retained for 3 months. Backups from before a file format upgrade allows for better analysis of any upgrade failure. We also restore a backup, if a) an attempt is made to open a realm file whith a "future" file format and b) a backup file exist that fits the current file format. (Core #4166)
    • The error message when the intial steps of opening a Realm file fails is now more descriptive.
    • ๐Ÿ‘‰ Make conversion of Decimal128 to/from string work for numbers with more than 19 significant digits. This means that Decimal128's initializer which takes a string will now never throw, as it previously threw only for out-of-bounds values. The initializer is still marked as throws for backwards compatibility. (#4548)

    ๐Ÿ›  Fixed

    • Adjust the header paths for the podspec to avoid accidentally finding a file which isn't part of the pod that produced warnings when importing the framework. (#7113, since 10.5.2).
    • ๐Ÿ›  Fixed a crash that would occur when observing unmanaged Objects in multiple views in SwiftUI. When using @StateRealmObject or @ObservedObject across multiple views with an unmanaged object, each view would subscribe to the object. As each view unsubscribed (generally when trailing back through the view stack), our propertyWrappers would attempt to remove the KVOs for each cancellation, when it should only be done once. We now correctly remove KVOs only once. (#7131)
    • ๐Ÿ›  Fixed isInvalidated not returning correct value after object deletion from Realm when using a custom schema. The object's Object Schema was not updated when the object was added to the realm. We now correctly update the object schema when adding it to the realm. (#7181)
    • ๐Ÿ”€ Syncing large Decimal128 values would cause "Assertion failed: cx.w[1] == 0" (Core #4519, since v10.0.0).
    • Potential/unconfirmed fix for crashes associated with failure to memory map (low on memory, low on virtual address space). For example (#4514, since v5.0.0).
    • Fix assertion failures such as "!m_notifier_skip_version.version" or "m_notifier_sg->get_version() + 1 == new_version.version" when performing writes inside change notification callbacks. Previously refreshing the Realm by beginning a write transaction would skip delivering notifications, leaving things in an inconsistent state. Notifications are now delivered recursively when needed instead. (Cocoa #7165).
    • ๐Ÿ›  Fix collection notification reporting for modifications. This could be observed by receiving the wrong indices of modifications on sorted or distinct results, or notification blocks sometimes not being called when only modifications have occured. (#4573 since v5.0.0).

    Compatibility

    • Realm Studio: 10.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 12.4.
    • CocoaPods: 1.10 or later.

    Internal

    • โฌ†๏ธ Upgraded realm-core from v10.5.5 to v10.6.0
    • โž• Add additional debug validation to file map management that will hopefully catch cases where we unmap something which is still in use.