v10.50.0
github-actions
released this
02 May 23:27
·
94 commits
to master
since this release
Drop support for Xcode 14, as it can no longer be used to submit app to the app
store. Xcode 15.1 is now the minimum supported version.
Known Issues
- Accessing
App.currentUser
within anApp.subscribe
callback would lead to a deadlock.
Enhancements
- Added
SyncConfiguration.initialSubscriptions
which describes the initial
subscription configuration that was passed when constructing the
SyncConfiguration
. (#8548) - When connecting to multiple server apps, a unique encryption key is used for
each of the metadata Realms rather than sharing one between them
(Core #7552). - Improve perfomance of IN queries and chained OR equality queries for
UUID/ObjectId types. (.Net #3566) - Added support for updating Atlas Device Sync's base url, in case the need to roam between
servers (cloud and/or edge server). This API is private and can only be imported using
@_spi(Private)
(#8486).@_spi(RealmSwiftExperimental) import RealmSwift try await app.updateBaseUrl(to: "https://services.cloud.mongodb.com")
- Enable building RealmSwift as a dynamic framework when installing via SPM, which
lets us supply a privacy manifest. When RealmSwift is built as a static
library you must supply your own manifest, as Xcode does not build static
libraries in a way compatible with xcprivacy embedding. Due to some bugs in
Xcode, this may require manual changes to your project:- Targets must now depend on only Realm or RealmSwift. If you use both the
obj-c and swift API, depending on RealmSwift will let you import Realm.
Trying to directly depend on both will give the error "Swift package
target 'Realm' is linked as a static library by 'App' and 'Realm', but
cannot be built dynamically because there is a package product with the
same name." - To actually build RealmSwift as a dynamic framework, change "Do Not Embed"
to "Embed & Sign" in the "Frameworks, Libraries, and Embedded Content"
section on the General tab of your target's settings.
(#8561).
- Targets must now depend on only Realm or RealmSwift. If you use both the
- The
transferredBytes
andtransferrableBytes
fields onProgress
have been deprecated
in favor ofprogressEstimate
which is a value between 0.0 and 1.0 indicating the estimated
progress toward the upload/download transfer. (#8476)
Fixed
-[RLMUser allSessions]
did not include sessions which were currently
waiting for an access token despite including sessions in other non-active
states. (Core #7300, since v10.0.0).[RLMApp allUsers]
included users which were logged out during the current
run of the app, but not users which had previously been logged out. It now
always includes all logged out users. (Core #7300, since v10.0.0).- Deleting the active user (via
User.delete()
) left the active user
unset rather than selecting another logged-in user as the active user like
logging out and removing users does. (Core #7300, since v10.23.0). - Fixed several issues around copying an encrypted Realm between platforms with
different page sizes (such as between x86_64 and arm64 Apple platforms):- Fixed
Assertion failed: new_size % (1ULL << m_page_shift) == 0
when
opening an encrypted Realm less than 64Mb that was generated on a platform
with a different page size than the current platform.
(Core #7322, since v10.42.0) - Fixed a
DecryptionFailed
exception thrown when opening a small (<4k of
data) Realm generated on a device with a page size of 4k if it was bundled
and opened on a device with a larger page size (since the beginning). - Fixed an issue during a subsequent open of an encrypted Realm for some rare
allocation patterns when the top ref was within ~50 bytes of the end of a
page. This could manifest as a DecryptionFailed exception or as an
assertion:encrypted_file_mapping.hpp:183: Assertion failed: local_ndx < m_page_state.size()
. (Core #7319)
- Fixed
- Schema initialization could hit an assertion failure if the sync client
applied a downloaded changeset while the Realm file was in the process of
being opened (#7041, since v10.15.0). - The reported download progress for flexible sync Realms was incorrect. It is now replaced by a
progress estimate, which is derived by the server based on historical data and other heuristics.
(#8476)
Compatibility
- Realm Studio: 15.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 15.3.0.
- CocoaPods: 1.10 or later.
- Xcode: 15.1.0-15.3.0.
Internal
- Upgraded realm-core from v14.5.2 to 14.6.2