Skip to content

Releases: realm/realm-core

Realm Core v14.10.4

12 Jul 10:50
44db2a2
Compare
Choose a tag to compare

14.10.4 Release notes

Enhancements

  • None.

Fixed

  • When a public name is defined on a property, calling realm::Results::sort() or realm::Results::distinct() with the internal name could throw an error like Cannot sort on key path 'NAME': property 'PersonObject.NAME' does not exist. (realm/realm-js#6779, since v12.12.0)

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • Fix a thread sanitizer failure in the "unregister connection change listener during callback" test (PR #7871).

Realm Core v14.10.3

05 Jul 13:16
fd428c3
Compare
Choose a tag to compare

14.10.3 Release notes

Enhancements

  • "Next launch" metadata file actions are now performed in a multi-process safe manner (#7576).

Fixed

  • Fixed a change of mode from Strong to All when removing links from an embedded object that links to a tombstone. This affects sync apps that use embedded objects which have a Lst<Mixed> that contains a link to another top level object which has been deleted by another sync client (creating a tombstone locally). In this particular case, the switch would cause any remaining link removals to recursively delete the destination object if there were no other links to it. (#7828, since 14.0.0-beta.0)
  • Fixed removing backlinks from the wrong objects if the link came from a nested list, nested dictionary, top-level dictionary, or list of mixed, and the source table had more than 256 objects. This could manifest as array_backlink.cpp:112: Assertion failed: int64_t(value >> 1) == key.value when removing an object. (#7594, since v11 for dictionaries)
  • Fixed the collapse/rejoin of clusters which contained nested collections with links. This could manifest as array.cpp:319: Array::move() Assertion failed: begin <= end [2, 1] when removing an object. (#7839, since the introduction of nested collections in v14.0.0-beta.0)
  • wait_for_upload_completion() was inconsistent in how it handled commits which did not produce any changesets to upload. Previously it would sometimes complete immediately if all commits waiting to be uploaded were empty, and at other times it would wait for a server roundtrip. It will now always complete immediately. (PR #7796).
  • realm_sync_session_handle_error_for_testing parameter is_fatal was flipped changing the expected behavior. (#7750).

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • Fixed Table::remove_object_recursive which wouldn't recursively follow links through a single Mixed property. This feature is exposed publicly on Table but no SDK currently uses it, so this is considered internal. (#7829, likely since the introduction of Mixed)
  • Upload completion is now tracked in a multiprocess-compatible manner (PR #7796).
  • The local realm will assume the the client file ident of the fresh realm during a client reset. (PR #7850)
  • Building using C++20 on Windows.

Realm Core v14.10.2

28 Jun 17:26
f889f79
Compare
Choose a tag to compare

14.10.2 Release notes

Enhancements

  • None.

Fixed

  • DB::compact() on an encrypted Realm without explicitly specifying a new encryption key would only work if the old key happened to be a valid nul-terminated string (#7842, since v14.10.0).
  • You could get unexpected merge results when assigning to a nested collection (#7809, since v14.0.0)

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • FLX download estimates are now tracked in a multiprocess-compatible manner (PR #7780).
  • Fixed util::FlatMap so it uses the custom Compare for both ordering and equality checking so you can use util::FlatMap with case-insensitive string keys (PR #7845).

Realm Core v14.10.1

17 Jun 18:45
058ecce
Compare
Choose a tag to compare

14.10.1 Release notes

Enhancements

  • It is no longer an error to set a base url for an App with a trailing slash - for example, https://services.cloud.mongodb.com/ instead of https://services.cloud.mongodb.com - before this change that would result in a 404 error from the server (PR #7791).
  • Performance has been improved for range queries on integers and timestamps. Requires that you use the "BETWEEN" operation in MQL or the Query::between() method when you build the query. (PR #7785)
  • Expose Obj::add_int() in the bindgen spec. (PR #7797).

Fixed

  • Valgrind could report a branch on an uninitialized read when opening something that is not an encrypted Realm file as an encrypted Realm file (PR #7789, since v14.10.0).
  • Opening an FLX realm asynchronously may not wait to download all data (#7720, since FLX sync was introduced).
  • Clearing a List of Mixed in an upgraded file would lead to an assertion failing (#7771, since 14.0.0)
  • Fix compilation with Xcode 16 (PR #7802)

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • Switch to building the Swift package and Cocoa binaries as C++20 (PR #7802).

Core v14.10.0

07 Jun 22:08
1516230
Compare
Choose a tag to compare

Enhancements

  • Include the originating client reset error in AutoClientResetFailure errors. (#7761)
  • Reduce the size of the local transaction log produced by creating objects, improving the performance of insertion-heavy transactions (PR #7734).

Fixed

  • Fix some client resets (such as migrating to flexible sync) potentially failing with AutoClientResetFailed if a new client reset condition (such as rolling back a flexible sync migration) occurred before the first one completed. (PR #7542, since v13.11.0)
  • Encrypted files on Windows had a maximum size of 2GB even on x64 due to internal usage of off_t, which is a 32-bit type on 64-bit Windows (PR #7698, since the introduction of encryption support on Windows in v3.0.0).
  • The encryption code no longer behaves differently depending on the system page size, which should entirely eliminate a recurring source of bugs related to copying encrypted Realm files between platforms with different page sizes. One known outstanding bug was (RNET-1141), where opening files on a system with a larger page size than the writing system would attempt to read sections of the file which had never been written to (PR #7698).
  • There were several complicated scenarios which could result in stale reads from encrypted files in multiprocess scenarios. These were very difficult to hit and would typically lead to a crash, either due to an assertion failure or DecryptionFailure being thrown (PR #7698, since v13.9.0).
  • Encrypted files have some benign data races where we can memcpy a block of memory while another thread is writing to a limited range of it. It is logically impossible to ever read from that range when this happens, but Thread Sanitizer quite reasonably complains about this. We now perform a slower operations when running with TSan which avoids this benign race (PR #7698).
  • Tokenizing strings for full-text search could pass values outside the range [-1, 255] to isspace(), which is undefined behavior (PR #7698, since the introduction of FTS in v13.0.0).

Breaking changes

  • Any stitch_ prefixed fields in the BsonDocument returned from app::User::custom_data() are being renamed on the server to have a baas_ prefix instead (PR #7769).

Compatibility

  • 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.

Internals

  • Removed references to stitch_ fields in access tokens in sync unit tests (PR #7769).
  • Added back iOS simulator testing to evergreen after Jenkins went away (PR #7758).
  • realm-trawler -c did not work on Realm using SyncClient history (PR #7734).
  • File::Map's move constructor and assignment operator left m_fd unchanged, which appears to have never actually resulted in problems with how it was used (PR #7698).

Realm Core v14.9.0

31 May 23:52
f3d7ae5
Compare
Choose a tag to compare

14.9.0 Release notes

Enhancements

  • Report the originating error that caused a client reset to occur. (#6154)

Fixed

  • Add a missing file from the bid library to the android blueprint. (PR #7738)
  • After compacting, a file upgrade would be triggered. This could cause loss of data if schema mode is SoftResetFile (#7747, since 14.0.0)
  • Add missing REALM_APP_SERVICES flag to the android blueprint. (PR #7755)

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • Work around a bug in VC++ that resulted in runtime errors when running the tests in a debug build (#7741).
  • Refactor sync::Session to eliminate the bind() step of session creation (#7609).
  • Add ScopeExitFail which only calls the handler if exiting the scope via an uncaught exception (#7609).
  • Add the originating error and server requests action that caused a client reset to occur to the client reset tracking metadata storage. (PR #7649)

14.8.0

23 May 23:58
c6d8f0e
Compare
Choose a tag to compare

14.8.0 Release notes

Enhancements

  • Add vendor support to the Android Blueprint (PR #7614).

Fixed

  • A non-streaming progress notifier would not immediately call its callback after registration. Instead you would have to wait for a download message to be received to get your first update - if you were already caught up when you registered the notifier you could end up waiting a long time for the server to deliver a download that would call/expire your notifier (#7627, since v14.6.0).
  • Comparing a numeric property with an argument list containing a string would throw. (#7714, since v14.7.0)

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • util::Thread no longer has any functionality other than get_name() and set_name(). Use std::thread instead (PR #7696).

RealmCore v14.7.0

17 May 10:46
Compare
Choose a tag to compare

Enhancements

  • Nested collections have full support for automatic client reset (PR #7683).

Fixed

  • Having links in a nested collections would leave the file inconsistent if the top object is removed. (#7657, since 14.0.0)
  • Accessing App::current_user() from within a notification produced by App:switch_user() (which includes notifications for a newly logged in user) would deadlock (#7670, since v14.6.0).
  • Inserting the same typed link to the same key in a dictionary more than once would incorrectly create multiple backlinks to the object. This did not appear to cause any crashes later, but would have affecting explicit backlink count queries (eg: ...@links.@count) and possibly notifications (#7676 since v14.5.2).
  • Automatic client reset recovery would crash when recovering AddInteger instructions on a Mixed property if its type was changed to non-integer (PR #7683, since v11.16.0).

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • (bindgen) Exposing a function app_user_as_sync_user to cast the opposite way as sync_user_as_app_user. (PR #7684 as a follow-up to PR #7634)
  • Protocol version bumped to 13.

RealmCore v14.6.2

01 May 16:42
Compare
Choose a tag to compare

Enhancements

  • None.

Fixed

  • Fixed a bug when running a IN query on a String/Int/UUID/ObjectId property that was indexed. (7642 since v14.6.0)
  • Fixed a bug when running a IN query on a integer property where double/float parameters were ignored. (7642 since v14.6.0)

Breaking changes

  • None.

Compatibility

  • 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.

RealmCore v14.6.1

01 May 13:56
648ed0e
Compare
Choose a tag to compare

Enhancements

  • None.

Fixed

  • Fix assertion failure or wrong results when evaluating a RQL query with multiple IN conditions on the same property. Applies to non-indexed int/string/ObjectId/UUID properties, or if they were indexed and had > 100 conditions. ((RCORE-2098) PR #7628 since v14.6.0).
  • Fixed a bug when running a IN query (or a query of the pattern x == 1 OR x == 2 OR x == 3) when evaluating on a string property with an empty string in the search condition. Matches with an empty string would have been evaluated as if searching for a null string instead. (PR #7628 since v10.0.0-beta.9)
  • Fixed a bug when running a IN query on a String/Int/UUID/ObjectId property that was indexed. (7642 since v14.6.0)
  • Fixed a bug when running a IN query on a integer property where double/float parameters were ignored. (7642 since v14.6.0)

Breaking changes

  • None.

Compatibility

  • 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.

Internals

  • Follow on to (PR #7300) to allow SDKs to construct a fake user for testing SyncManager::get_user -> App::create_fake_user_for_testing (PR #7632)
  • Fix build-apple-device.sh, broken in #7603 (PR #7640).
  • Added a CAPI interface for SDKs to bring their own managed users with core's app services turned off. (PR #7615).
  • Bump the minimum deployment targets on Apple platforms to the minimums supported by Xcode 15 and clean up now unused availability checks. (PR #7648).
  • Build with -Werror on CI to ensure that new warnings don't slip in. (PR #7646)