Skip to content

Releases: realm/realm-core

Realm Core v13.23.2

27 Oct 10:41
Compare
Choose a tag to compare

13.23.2 Release notes

Enhancements

  • None.

Fixed

  • Deleting an object in an asymmetric table would cause a crash. Likely to solve #1537, since v12.1.0.
  • Implement BIO_CTRL_GET_KTLS_SEND and BIO_CTRL_GET_KTLS_RECV as OpenSSL versions < 3.0.4 depend on it.

Breaking changes

  • Added separate enum for callback handler result values in the platform networking C API. (PR #7015)
  • Platform networking CAPI now uses different callback types depending on where callback is used. (PR #7015)

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • Update JSON library from 3.7.3 to 3.11.2.
  • Updated async_write_binary in the Default Socket Provider to properly return a status to the callback handler. (PR #7015)

Realm Core v13.23.1

13 Oct 16:19
Compare
Choose a tag to compare

Enhancements

  • Empty commits no longer trigger an extra invocation of the sync progress handler reporting the exact same information as the previous invocation (PR #7031).

Fixed

  • SyncManager::path_for_realm() would return /<path>/filename.realm.realm if custom_file_name was set to filename.realm and the file didn't exist. It would correctly return /<path>/filename.realm if the file already existed. After this fix /<path>/filename.realm is returned in all cases. (#7038)
  • Fixed a bug preventing SSL handshake from completing successfuly due to failed hostname verification when linking against BoringSSL. (PR #7034)
  • Updating subscriptions did not trigger Realm autorefreshes, sometimes resulting in async refresh hanging until another write was performed by something else (PR #7031).

Breaking changes

  • None.

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • None.

Realm Core v13.23.0

06 Oct 16:10
Compare
Choose a tag to compare

Enhancements

  • Allow non-embedded links in asymmetric objects. (PR #6981)

Fixed

  • <How do the end-user experience this issue? what was the impact?> (#????, since v?.?.?)
  • Logging into a single user using multiple auth providers created a separate SyncUser per auth provider. This mostly worked, but had some quirks:
    • Sync sessions would not necessarily be associated with the specific SyncUser used to create them. As a result, querying a user for its sessions could give incorrect results, and logging one user out could close the wrong sessions.
    • Existing local synchronized Realm files created using version of Realm from August - November 2020 would sometimes not be opened correctly and would instead be redownloaded.
    • Removing one of the SyncUsers would delete all local Realm files for all SyncUsers for that user.
    • Deleting the server-side user via one of the SyncUsers left the other SyncUsers in an invalid state.
    • A SyncUser which was originally created via anonymous login and then linked to an identity would still be treated as an anonymous users and removed entirely on logout.
      (PR #6837, since v10.0.0)
  • Reading existing logged-in users on app startup from the sync metadata Realm performed three no-op writes per user on the metadata Realm (PR #6837, since v10.0.0).
  • If a user was logged out while an access token refresh was in progress, the refresh completing would mark the user as logged in again and the user would be in an inconsistent state (PR #6837, since v10.0.0).

Breaking changes

  • SyncUser::provider_type() and realm_user_get_auth_provider() have been removed. Users don't have provider types; identities do. SyncUser::is_anonymous() is a more correct version of checking if the provider type is anonymous (PR #6837).
  • SyncUser no longer has a local_identity(). identity() has been guaranteed to be unique per App ever since v10 (PR #6837).
  • SyncUser no longer overrides operator==. Pointer equality should be used to compare sync users (PR #6837).

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.
  • The metadata Realm used to store sync users has had its schema version bumped. It is automatically migrated to the new version on first open. Downgrading to older version of Realm after upgrading will discard stored user tokens and require logging back in.

Realm Core v13.22.0

29 Sep 16:23
Compare
Choose a tag to compare

Enhancements

  • None.

Fixed

  • Fixed issue with double delete when using the CAPI for timers in platform networking (#6993, since v13.3.0).
  • Receiving a write_not_allowed error from the server would have led to a crash. (#6978, since v13.2.0)

Breaking changes

  • Platform Networking CAPI has been updated to provide separate functions (instead of 1) for executing callback handlers depending on purpose (PR #6994).

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • None.

Realm Core v13.21.0

25 Sep 13:34
Compare
Choose a tag to compare

Enhancements

  • Allow non-embedded links in asymmetric objects. (PR #6981)

Fixed

  • Logging into a single user using multiple auth providers created a separate SyncUser per auth provider. This mostly worked, but had some quirks:
    • Sync sessions would not necessarily be associated with the specific SyncUser used to create them. As a result, querying a user for its sessions could give incorrect results, and logging one user out could close the wrong sessions.
    • Existing local synchronized Realm files created using version of Realm from August - November 2020 would sometimes not be opened correctly and would instead be redownloaded.
    • Removing one of the SyncUsers would delete all local Realm files for all SyncUsers for that user.
    • Deleting the server-side user via one of the SyncUsers left the other SyncUsers in an invalid state.
    • A SyncUser which was originally created via anonymous login and then linked to an identity would still be treated as an anonymous users and removed entirely on logout.
      (PR #6837, since v10.0.0)
  • Reading existing logged-in users on app startup from the sync metadata Realm performed three no-op writes per user on the metadata Realm (PR #6837, since v10.0.0).
  • If a user was logged out while an access token refresh was in progress, the refresh completing would mark the user as logged in again and the user would be in an inconsistent state (PR #6837, since v10.0.0).
  • If querying over a geospatial dataset that had some objects with a type property set to something other than 'Point' (case insensitive) an exception would have been thrown. Instead of disrupting the query, those objects are now just ignored. (PR 6989, since the introduction of geospatial)
  • The Swift package failed to link required libraries when building for macCatalyst.

Breaking changes

  • SyncUser::provider_type() and realm_user_get_auth_provider() have been removed. Users don't have provider types; identities do. SyncUser::is_anonymous() is a more correct version of checking if the provider type is anonymous (PR #6837).
  • SyncUser no longer has a local_identity(). identity() has been guaranteed to be unique per App ever since v10 (PR #6837).
  • SyncUser no longer overrides operator==. Pointer equality should be used to compare sync users (PR #6837).

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.
  • The metadata Realm used to store sync users has had its schema version bumped. It is automatically migrated to the new version on first open. Downgrading to older version of Realm after upgrading will discard stored user tokens and require logging back in.

Internals

  • Update History Command tool to work with realms with fileformat v23 (PR #6970)
  • Don't edit the ObjectStore target to enable the libuv scheduler in tests, just register the factory instead. (PR #6699)
  • Removed the core metrics which were unused. (PR 6990)

Realm Core v13.20.1

13 Sep 14:50
Compare
Choose a tag to compare

Enhancements

  • Throw an exception if File::unlock has failed, in order to inform the SDK that we are likely hitting some limitation on the OS filesystem, instead of crashing the application and use the same file locking logic for all the platforms.(PR #6926)

Fixed

  • Fixed crash in slab allocator (Assertion failed: ref + size <= next->first) Many issues like (#6340, since 13.0.0)
  • realm/sync/network/websocket_error.hpp was missing from the install package (PR #6954, since v13.18.0).
  • DB::get_number_of_versions() will now report the number of versions alive in the realm file. Before it reported the number of versions committed since the oldest live version. Metrics get_num_available_versions() is changed accordingly.
  • When using OpenSSL (i.e. on non-Apple platforms) the TlsHandshakeFailed error code would never be reported and instead TLS errors would be reported as SyncConnectFailed (PR #6938).
  • When using SecureTransport (i.e. on Apple platforms) only some TLS errors were reported as TlsHandshakeFailed and most were reported as SyncConnectFailed (PR #6938).
  • Sync errors originating from OpenSSL used the error message from the wrong end of the error stack, often resulting in very unhelpful error message (PR #6938).
  • Sending empty UPLOAD messages may lead to 'Bad server version' errors and client reset. (6966, since v11.8.0)

Breaking changes

  • None.

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • Add a CI job to validate that the headers in the installation package all build (PR #6954).
  • Fix build of most internal tools, also build them by default. (PR #6475)

Core version 13.20.0

01 Sep 19:42
Compare
Choose a tag to compare

Enhancements

  • Add a distinct error code for timeouts (SyncConnectTimeout) rather than using the same one as for less transient failures (PR #6932).
  • Allow arguments to RQL to be a string representation of a geospatial object for GEOWITHIN queries. This enables SDKs using the CAPI to marshal geo objects to strings. (PR 6934)

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • Add a fake app id to the baas server's schema change history store to prevent server drop optimization from running during integration tests. (PR #6927)

Realm Core v13.19.0

25 Aug 13:47
Compare
Choose a tag to compare

Enhancements

  • Added support for server log messages that are enabled by sync protocol version 10. Appservices request id will be provided in a server log message in a future server release. (PR #6476)
  • A new ErrorCategory::sync_error has been added. All errors related to the Sync client, protocol or session will have this category. Note that websocket errors will have both the websocket_error and sync_error category, similar to app_error and http_error for failed HTTP requests from the App. (#6916)

Fixed

  • Crash when querying the size of a Object property through a link chain (#6915, since v13.17.2)

Breaking changes

  • None.

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • Add information about the reason a synchronization session is used for to flexible sync client BIND message. (PR #6902)
  • Sync protocol version bumped to 10. (PR #6902)
  • Handle badchangeset error when printing changeset contents in debug. (PR #6921)

Realm Core v13.18.0

18 Aug 12:20
Compare
Choose a tag to compare

Enhancements

  • Full text search supports searching for prefix only. Eg. "description TEXT 'alex*'" (#6860)
  • Unknown protocol errors received from the baas server will no longer cause the application to crash if a valid error action is also received. Unknown error actions will be treated as an ApplicationBug error action and will cause sync to fail with an error via the sync error handler. PR #6885)

Fixed

  • Made binding a sync::Session exception safe so if a MultipleSyncAgents exception is thrown you can safely tear down the sync client. (PR #6868, since v13.4.1)

Breaking changes

  • The WebSocketObserver interface in the sync SocketProvider API now takes a WebSocketError enum/std::string_view for the websocket_closed_handler() instead of a Status. Implementers of platform networking should make sure all their error handling is expressed in terms of the WebSocketError enum. (PR #6859)
  • Status no longer holds a std::error_code for SystemError's (PR #6869)
  • C API no longer has a special type for sync error codes. Instead sync errors codes are converted to realm_error_t (PR #6869)
  • WebSocket specific error codes are no longer in the ErrorCodes enum or C API. (PR #6869)
  • ProtocolError is no longer a std::error_code enum and is no longer directly exposed by the sync error API (PR #6869)
  • The ClientError enum/std::error_code in the sync client has been removed in favor of a simplified error set using Status/ErrorCodes (PR #6846).
  • SyncError now contains a Status to hold the error information from the sync client instead of a std::error_code/std::string (PR #6824).
  • Remove App::Config::local_app_[name|version] parameters. They were not used by the server and were not needed internally also.
  • C API: return whether or not an error is present from realm_get_async_error() (#6897)

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • Removed some unused files/directories and dogless dependency. (PR #6884)

Realm Core v13.17.2

10 Aug 10:38
Compare
Choose a tag to compare

Fixed

  • Fix failed assertion for unknown app server errors (#6758, since v12.9.0).
  • Running a query on @keys in a Dictionary would throw an exception (#6831, since v13.15.1)
  • Change JSON selialization format back to follow ISO 8601 - and add output of nanoseconds (#6855, since 13.17.0)
  • Testing the size of a collection of links against zero would sometimes fail (sometimes = "difficult to explain"). In particular: (#6850, since v13.15.1)

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.

Internals

  • Timestamp objects can now only be created from a system clock timepoint. (#6112)