v10.26.0
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 theasync
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 fromwriteCopy
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