|
| 1 | +# NEXT RELEASE |
| 2 | + |
| 3 | +### Enhancements |
| 4 | +* <New feature description> (PR [#????](https://github.com/realm/realm-core/pull/????)) |
| 5 | +* Add `SyncClientConfig::security_access_group` which allows specifying the access group to use for the sync metadata Realm's encryption key. Setting this is required when sharing the metadata Realm between apps on Apple platforms ([#7552](https://github.com/realm/realm-core/pull/7552)). |
| 6 | +* When connecting to multiple server apps, a unique encryption key is used for each of the metadata Realms rather than sharing one between them ([#7552](https://github.com/realm/realm-core/pull/7552)). |
| 7 | +* Introduce the new `SyncUser` interface which can be implemented by SDKs to use sync without the core App Services implementation (or just for greater control over user behavior in tests). ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 8 | + |
| 9 | +### Fixed |
| 10 | +* <How do the end-user experience this issue? what was the impact?> ([#????](https://github.com/realm/realm-core/issues/????), since v?.?.?) |
| 11 | +* SyncUser::all_sessions() included sessions in every state *except* for waiting for access token, which was weirdly inconsistent. It now includes all sessions. ([PR #7300](https://github.com/realm/realm-core/pull/7300)). |
| 12 | +* App::all_users() included logged out users only if they were logged out while the App instance existed. It now always includes all logged out users. ([PR #7300](https://github.com/realm/realm-core/pull/7300)). |
| 13 | +* Deleting the active user left the active user unset rather than selecting another logged-in user as the active user like logging out and removing users did. ([PR #7300](https://github.com/realm/realm-core/pull/7300)). |
| 14 | +* Fixed several issues around encrypted file portability (copying a "bundled" encrypted Realm from one device to another): |
| 15 | + * 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. ([#7322](https://github.com/realm/realm-core/issues/7322), since v13.17.1) |
| 16 | + * 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). |
| 17 | + * 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()`. ([#7319](https://github.com/realm/realm-core/issues/7319)) |
| 18 | +* Non-streaming download sync progress notification is fixed for flexible sync Realms where before it was sometimes stopping to emit values right after the registration of the callback (PR [#7561](https://github.com/realm/realm-core/issues/7561)). |
| 19 | + |
| 20 | +### Breaking changes |
| 21 | +* The following things have been renamed or moved as part of moving all of the App Services functionality to the app namespace: |
| 22 | + - SyncUser -> app::User. Note that there is a new, different type named SyncUser. |
| 23 | + - SyncUser::identity -> app::User::user_id. The "identity" word was overloaded to mean two unrelated things, and one has been changed to user_id everywhere. |
| 24 | + - SyncUserSubscriptionToken -> app::UserSubscriptionToken |
| 25 | + - SyncUserProfile -> app::UserProfile |
| 26 | + - App::Config -> AppConfig |
| 27 | + - SyncConfig::MetadataMode -> AppConfig::MetadataMode |
| 28 | + - MetadataMode::NoMetadata -> MetadataMode::InMemory |
| 29 | + - SyncUser::session_for_on_disk_path() -> SyncManager::get_existing_session() |
| 30 | + - SyncUser::all_sessions() -> SyncManager::get_all_sessions_for(User&) |
| 31 | + - SyncManager::immediately_run_file_actions() -> App::immediately_run_file_actions() |
| 32 | + - realm_sync_user_subscription_token -> realm_app_user_subscription_token |
| 33 | + ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 34 | +* The `ClientAppDeallocated` error code no longer exists as this error code can no longer occur. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 35 | +* Some fields have moved from SyncClientConfig to AppConfig. AppConfig now has a SyncClientConfig field rather than it being passed separately to App::get_app(). ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 36 | +* Sync user management has been removed from SyncManager. This functionality was already additionally available on App. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 37 | +* AuditConfig now has a base_file_path field which must be set by the SDK rather than inheriting it from the SyncManager. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 38 | +* App::switch_user() no longer returns a user. The return value was always exactly the passed-in user and any code which needs it can just use that. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 39 | +* Non-streaming download progress callback no longer stops reporting values immediately after the registration (if the progress update has happened earlier), but waits for the next batch of data to start syncing to report its progress, since the previous behaviour was not useful (PR [#7561](https://github.com/realm/realm-core/issues/7561)). |
| 40 | + |
| 41 | +### Compatibility |
| 42 | +* Fileformat: Generates files with format v24. Reads and automatically upgrade from fileformat v10. If you want to upgrade from an earlier file format version you will have to use RealmCore v13.x.y or earlier. |
| 43 | + |
| 44 | +----------- |
| 45 | + |
| 46 | +### Internals |
| 47 | +* App metadata storage has been entirely rewritten in preparation for supporting sharing metadata realms between processes. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 48 | +* The metadata disabled mode has been replaced with an in-memory metadata mode which performs similarly and doesn't work weirdly differently from the normal mode. The new mode is intended for testing purposes, but should be suitable for production usage if there is a scenario where metadata persistence is not needed. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 49 | +* The ownership relationship between App and User has changed. User now strongly retains App and App has a weak cache of Users. This means that creating a SyncConfig or opening a Realm will keep the parent App alive, rather than things being in a broken state if the App is deallocated. ([PR #7300](https://github.com/realm/realm-core/pull/7300). |
| 50 | + |
| 51 | +---------------------------------------------- |
| 52 | + |
1 | 53 | # 14.5.2 Release notes |
2 | 54 |
|
3 | 55 | ### Fixed |
|
25 | 77 | * Fileformat: Generates files with format v24. Reads and automatically upgrade from fileformat v10. If you want to upgrade from an earlier file format version you will have to use RealmCore v13.x.y or earlier. |
26 | 78 |
|
27 | 79 | ---------------------------------------------- |
28 | | - |
29 | 80 | # 14.5.0 Release notes |
30 | 81 |
|
31 | 82 | ### Enhancements |
|
267 | 318 | * Use `clonefile()` when possible in `File::copy()` on Apple platforms for faster copying. ([PR #7341](https://github.com/realm/realm-core/pull/7341)). |
268 | 319 |
|
269 | 320 | ### Fixed |
270 | | -* Fixed queries like `indexed_property == NONE {x}` which mistakenly matched on only x instead of not x. This only applies when an indexed property with equality (==, or IN) matches with `NONE` on a list of one item. If the constant list contained more than one value then it was working correctly. ([realm-js #7862](https://github.com/realm/realm-java/issues/7862), since v12.5.0) |
| 321 | +* Fixed queries like `indexed_property == NONE {x}` which mistakenly matched on only x instead of not x. This only applies when an indexed property with equality (==, or IN) matches with `NONE` on a list of one item. If the constant list contained more than one value then it was working correctly. ([realm-js #7862](https://github.com/realm/realm-java/issues/7862), since v12.5.0) |
271 | 322 | * Uploading the changesets recovered during an automatic client reset recovery may lead to 'Bad server version' errors and a new client reset. ([#7279](https://github.com/realm/realm-core/issues/7279), since v13.24.1) |
272 | 323 | * Fixed invalid data in error reason string when registering a subscription change notification after the subscription has already failed. ([#6839](https://github.com/realm/realm-core/issues/6839), since v11.8.0) |
273 | 324 | * Fixed crash in fulltext index using prefix search with no matches ([#7309](https://github.com/realm/realm-core/issues/7309), since v13.18.0) |
|
276 | 327 | * Fixed a crash with `Assertion failed: m_initiated` during sync session startup ([#7074](https://github.com/realm/realm-core/issues/7074), since v10.0.0). |
277 | 328 | * Fixed a TSAN violation where the user thread could race to read `m_finalized` with the sync event loop ([#6844](https://github.com/realm/realm-core/issues/6844), since v13.15.1) |
278 | 329 | * Fix a minor race condition when backing up Realm files before a client reset which could have lead to overwriting an existing file. ([PR #7341](https://github.com/realm/realm-core/pull/7341)). |
279 | | - |
| 330 | + |
280 | 331 | ### Breaking changes |
281 | 332 | * SyncManager no longer supports reconfiguring after calling reset_for_testing(). SyncManager::configure() has been folded into the constructor, and reset_for_testing() has been renamed to tear_down_for_testing(). ([PR #7351](https://github.com/realm/realm-core/pull/7351)) |
282 | 333 |
|
|
0 commit comments