Skip to content

v10.26.0

Compare
Choose a tag to compare
@realm-ci realm-ci released this 19 May 23:10
· 544 commits to master since this release

Xcode 13.1 is now the minimum supported version of Xcode, as Apple no longer allows submitting to the app store with Xcode 12.

Enhancements

  • Add Xcode 13.4 binaries to the release package.
  • Add Swift API for asynchronous transactions
    try? realm.writeAsync {
        realm.create(SwiftStringObject.self, value: ["string"])
    } onComplete: { error in
        // optional handling on write complete
    }

    try? realm.beginAsyncWrite {
        realm.create(SwiftStringObject.self, value: ["string"])
        realm.commitAsyncWrite()
    }

    let asyncTransactionId = try? realm.beginAsyncWrite {
        // ...
    }
    try! realm.cancelAsyncWrite(asyncTransactionId)
  • Add Obj-C API for asynchronous transactions
   [realm asyncTransactionWithBlock:^{
        [StringObject createInRealm:realm withValue:@[@"string"]];
    } onComplete:^(NSError *error) {
        // optional handling
    }];

    [realm beginAsyncWriteTransaction:^{
        [StringObject createInRealm:realm withValue:@[@"string"]];
        [realm commitAsyncWriteTransaction];
    }];

    RLMAsyncTransactionId asyncTransactionId = [realm beginAsyncWriteTransaction:^{
        // ...
    }];
    [realm cancelAsyncTransaction:asyncTransactionId];
  • Improve performance of opening a Realm with objectClasses/objectTypes set in the configuration.
  • Implement the Realm event recording API for reporting reads and writes on a Realm file to Atlas.

Fixed

  • Lower minimum OS version for async login and FunctionCallables to match the rest of the async functions. ([#7791]#7791)
  • Consuming a RealmSwift XCFramework with library evolution enabled would give the error 'Failed to build module 'RealmSwift'; this SDK is not supported by the compiler' when the XCFramework was built with an older XCode version and is then consumed with a later version. (#7313, since v3.18.0)
  • A data race would occur when opening a synchronized Realm with the client reset mode set to discardLocal on one thread at the same time as a client reset was being processed on another thread. This probably did not cause any functional problems in practice and the broken timing window was very tight (since 10.25.0).
  • If an async open of a Realm triggered a client reset, the callbacks for discardLocal could theoretically fail to be called due to a race condition. The timing for this was probably not possible to hit in practice (since 10.25.0).
  • Calling [RLMRealm freeze]/Realm.freeze on a Realm which had been created from writeCopy would not produce a frozen Realm. (#7697, since v5.0.0)
  • Using the dynamic subscript API on unmanaged objects before first opening a Realm or if objectTypes was set when opening a Realm would throw an exception (#7786).
  • The sync client may have sent a corrupted upload cursor leading to a fatal error from the server due to an uninitialized variable. (#5460, since v10.25.1)
  • Flexible sync would not correctly resume syncing if a bootstrap was interrupted (#5466, since v10.21.1).

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 13.4.
  • CocoaPods: 1.10 or later.
  • Xcode: 13.1-13.4.

Internal

  • Upgraded realm-core from v11.15.0 to v11.17.0