Skip to content

1.1.0

Compare
Choose a tag to compare
@realm-ci realm-ci released this 30 May 15:16
· 245 commits to main since this release
a7a28dd

1.1.0 (2023-05-30)

Enhancements

  • Add RealmResults.isValid (#1231).

  • Support Decimal128 datatype (#1192).

  • Realm logging is extended to support logging of all Realm storage level messages. (Core upgrade).

  • Realm.logger now prints by default to the console from the first Isolate that initializes a Realm in the application. (#1226).
    Calling Realm.logger.clearListeners() or Realm.logger.level = RealmLogLevel.off will turn off logging. If that is the first isolate it will stop the default printing logger.
    The default logger can be replaced with a custom implementation using Realm.logger = CustomLogger() from the first Isolate.
    Any new spawned Isolates that work with Realm will get a new Realm.logger instance but will not print by default.
    Realm.logger.level allows changing the log level per isolate.

  • Add logging at the Storage level (Core upgrade).

  • Performance improvement for the following queries (Core upgrade):

    • Significant (~75%) improvement when counting (query count) the number of exact matches (with no other query conditions) on a String/int/Uuid/ObjectId property that has an index. This improvement will be especially noticeable if there are a large number of results returned (duplicate values).
    • Significant (~99%) improvement when querying for an exact match on a Timestamp property that has an index.
    • Significant (~99%) improvement when querying for a case insensitive match on a Mixed property that has an index.
    • Moderate (~25%) improvement when querying for an exact match on a Boolean property that has an index.
    • Small (~5%) improvement when querying for a case insensitive match on a Mixed property that does not have an index.
  • Enable multiple processes to operate on an encrypted Realm simultaneously. (Core upgrade)

  • Improve performance of equality queries on a non-indexed mixed property by about 30%. (Core upgrade)

  • Improve performance of rolling back write transactions after making changes. If no KVO observers are used this is now constant time rather than taking time proportional to the number of changes to be rolled back. Rollbacks with KVO observers are 10-20% faster. (Core upgrade)

  • New notifiers can now be registered in write transactions until changes have actually been made in the write transaction. This makes it so that new notifications can be registered inside change notifications triggered by beginning a write transaction (unless a previous callback performed writes). (Core upgrade)

  • Very slightly improve performance of runtime thread checking on the main thread on Apple platforms. (Core upgrade)

Fixed

  • Fixed a bug that may have resulted in arrays being in different orders on different devices (Core upgrade).

  • Fixed a crash when querying a mixed property with a string operator (contains/like/beginswith/endswith) or with case insensitivity (Core upgrade).

  • Querying for equality of a string on an indexed mixed property was returning case insensitive matches. For example querying for myIndexedMixed == "Foo" would incorrectly match on values of "foo" or "FOO" etc (Core upgrade).

  • Adding an index to a Mixed property on a non-empty table would crash with an assertion (Core upgrade).

  • SyncSession.pause() could hold a reference to the database open after shutting down the sync session, preventing users from being able to delete the realm (Core upgrade).

  • Fixed RealmResultsChanges.isCleared which was never set. It now returns true if the results collection is empty in the notification callback. This field is also marked as deprecated and will be removed in future. Use RealmResultsChanges.results.isEmpty instead.(#1265). (#1278).

  • Fix a stack overflow crash when using the query parser with long chains of AND/OR conditions. (Core upgrade)

  • SyncManager::immediately_run_file_actions() no longer ignores the result of trying to remove a realm. This could have resulted in a client reset action being reported as successful when it actually failed on windows if the Realm was still open (Core upgrade).

  • Fix a data race. If one thread committed a write transaction which increased the number of live versions above the previous highest seen during the current session at the same time as another thread began a read, the reading thread could read from a no-longer-valid memory mapping (Core upgrade).

  • Fixed a crash or exception when doing a fulltext search for multiple keywords when the intersection of results is not equal. (Core upgrade).

  • Don't report non ssl related errors during ssl handshake as fatal in default socket provider. (Core upgrade)

  • Performing a query like "{1, 2, 3, ...} IN list" where the array is longer than 8 and all elements are smaller than some values in list, the program would crash (Core upgrade)

  • Performing a large number of queries without ever performing a write resulted in steadily increasing memory usage, some of which was never fully freed due to an unbounded cache (Core upgrade)

  • Exclusion of words in a full text search does not work (Core upgrade)

  • Fixed a fatal error (reported to the sync error handler) during client reset (or automatic PBS to FLX migration) if the reset has been triggered during an async open and the schema being applied has added new classes. (Core upgrade), since automatic client resets were introduced in v11.5.0)

  • Full text search would sometimes find words where the word only matches the beginning of the search token (Core upgrade)

  • We could crash when removing backlinks in cases where forward links did not have a corresponding backlink due to corruption. We now silently ignore this inconsistency in release builds, allowing the app to continue. (Core upgrade)

  • If you freeze a Results based on a collection of objects, the result would be invalid if you delete the collection (Core upgrade)

Compatibility

  • Fileformat: Generates files with format v23. Reads and automatically upgrade from fileformat v5.
  • Realm Studio: 13.0.0 or later.
  • Dart >=2.17.5 <4.0.0 (Flutter >=3.0.3) on Android, iOS, Linux, MacOS and Windows

Internal

  • Using Core 13.12.0.
  • Lock file format: New format introduced for multi-process encryption. All processes accessing the file must be upgraded to the new format.