Skip to content

Releases: realm/realm-dart

1.5.0

18 Sep 10:19
d56bc51
Compare
Choose a tag to compare

1.5.0 (2023-09-18)

Enhancements

  • Support efficient skip on RealmResults (#1391)
  • Support efficient indexOf and contains on RealmResults (#1394)
  • Support asymmetric objects. (#1400)

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.17.2

1.4.0

16 Aug 13:27
60b5fb3
Compare
Choose a tag to compare

1.4.0 (2023-08-16)

Enhancements

  • Support ReamSet.freeze() (#1342)
  • Added support for query on RealmSet. (#1346)
  • Support for passing List, Set or Iterable arguments to queries with IN-operators. (#1346)

Fixed

  • Fixed an early unlock race condition during client reset callbacks. (#1335)
  • Rare corruption of files on streaming format (often following compact, convert or copying to a new file). (Core upgrade, since v12.12.0)
  • Trying to search a full-text indexes created as a result of an additive schema change (i.e. applying the differences between the local schema and a synchronized realm's schema) could have resulted in an IllegalOperation error with the error code Column has no fulltext index. (Core upgrade, since v13.2.0).
  • Sync progress for DOWNLOAD messages from server state was updated wrongly. This may have resulted in an extra round-trip to the server. (Core upgrade, since v12.9.0)
  • Fixes infinite-loop like issue with await-for-yield over realm set change streams. (#1344)
  • Fixed issue with using flexibleSync in flutter test. (#1366)
  • Fixed a realm generator issue, when used in concert with MobX. (#1372)
  • Fix failed assertion for unknown app server errors (Core upgrade, since v12.9.0).
  • Testing the size of a collection of links against zero would sometimes fail (sometimes = "difficult to explain"). (Core upgrade, since v13.15.1)
  • Session.getProgressStream now returns a regular stream, instead of a broadcast stream. (#1375)

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.17.2.

1.3.0

22 Jun 14:33
c7f62e2
Compare
Choose a tag to compare

1.3.0 (2023-06-22)

Enhancements

  • Added support binary data type. (#1320)
  • Extended ClientResetError to return the backupFilePath where the backup copy of the realm will be placed once the client reset process has completed. (#1291)
  • Added CompensatingWriteError containing detailed error information about the writes that have been reverted by the server due to permissions or subscription view restrictions. The Configuration.flexibleSync.syncErrorHandler will be invoked with this error type when this error occurs (#1291).
  • Improve performance of elementAt, first, single and last on RealmResults (#1261, #1262, #1267).

Fixed

  • The constructors of all SyncError types are deprecated. The sync errors will be created only internally (#1291).
  • Getting Backlink properties of unmanaged Realm objects will throw an error: "Using backlinks is only possible for managed objects" (#1293).
  • Properties in the frozen before Realm instance in the client reset callbacks may have had properties reordered which could lead to exceptions if accessed. (Core upgrade, since v13.11.0)

Compatibility

  • Realm Studio: 13.0.0 or later.
  • Dart ^3.0.2 and Flutter ^3.10.2

Internal

  • Using Core 13.15.1

1.2.0

08 Jun 13:50
4ba2a17
Compare
Choose a tag to compare

1.2.0 (2023-06-08)

Enhancements

  • Added support for Full-Text search (simple term) queries. (#1300)
    • To enable FTS queries on string properties, add the @Indexed(RealmIndexType.fullText) annotation.
    • To run queries, use the TEXT operator: realm.all<Book>().query("description TEXT \$0", "fantasy novel").

Fixed

  • Fix the query parser, it needs to copy a list of arguments and own the memory. This will prevent errors like getting a different result from a query, if the list is modified after its creation and before the execution of the query itself. In the worst case scenario, if the memory is freed before the query is executed, this could lead to crashes, especially for string and binary data types. (Core upgrade, since core v12.5.0)
  • Fixed a potential crash when opening the realm after failing to download a fresh FLX realm during an automatic client reset (Core upgrade, since core v12.3.0)
  • Access token refresh for websockets was not updating the location metadata (Core upgrade, since core v13.9.3)
  • Using both synchronous and asynchronous transactions on the same thread or scheduler could hit the assertion failure "!realm.is_in_transaction()" if one of the callbacks for an asynchronous transaction happened to be scheduled during a synchronous transaction (Core upgrade, since core v11.8.0)
  • Fixed an issue where the generator would incorrectly consider a DateTime field a valid primary key (#1300).

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.14.0.

1.1.0

30 May 15:16
a7a28dd
Compare
Choose a tag to compare

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.

1.0.3

20 Mar 14:42
4715f9d
Compare
Choose a tag to compare

1.0.3 (2023-03-20)

Enhancements

  • Deprecated SyncResolveError and SyncResolveErrorCode (#1182).
  • Added SyncWebSocketError and SyncWebSocketErrorCode for web socket connection sync errors (#1182).
  • Added FlexibleSyncConfiguration.shouldCompactCallback support (#1204).
  • Added RealmSet.asResults() (#1214).

Fixed

  • You may have a crash on Windows if you try to open a file with non-ASCII path (Core upgrade).
  • Creating subscriptions with queries having unicode parameters causes a server error (Core upgrade).
  • Fixed error message when trying to switchUser of the App to a user that has been logged out (#1182).
  • Fixed performance degradation on SubQueries (Core upgrade).
  • Fixed several cases where wrong type of exception was thrown (Core upgrade).
  • Fixed classification of InvalidQuery exception (Core upgrade).
  • Fix crash if secure transport returns an error with a non-zero length. (Core upgrade).
  • Fix error in RealmSet<T> when T is a realm object (#1202).
  • Fixes infinite-loop like issue with await-for-yield over change streams (#1213).

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.6.0.

1.0.2

21 Feb 15:49
4e8e841
Compare
Choose a tag to compare

1.0.2 (2023-02-21)

Fixed

  • Fixed the sync client being stuck in a cycle if an integration error occurs by issuing a client reset (Core upgrade).
  • Fixed Android binaries sizes.

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.4.2

1.0.1

14 Feb 09:43
28d1f11
Compare
Choose a tag to compare

1.0.1 (2023-02-14)

Fixed

  • Fix codesigning errors when publishing to the macOS App Store. (#1153)

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.4.0

1.0.0

07 Feb 19:07
154b360
Compare
Choose a tag to compare

1.0.0 (2023-02-07)

GA release

We are proud to forge this release as 1.0. The Realm Flutter and Dart SDK is now being used by thousands of developers and has proven reliable.

Enhancements

  • Improved error information returned when the realm_dart library failed to load. (#1143)

Fixed

  • Improve performance of interprocess mutexes on iOS which don’t need to support reader-writer locking. The primary beneficiary of this is beginning and ending read transactions, which is now almost as fast as pre-v13.0.0 (Core upgrade).

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.4.0

0.11.0+rc

31 Jan 00:20
bb68094
Compare
Choose a tag to compare

0.11.0+rc (2023-01-30)

This project is in Release Candidate stage.

Enhancements

  • Add App.reconnect() providing a hint to Realm to reconnect all sync sessions.
  • Add Realm.refresh() and Realm.refreshAsync() support. (#1046)
  • Support change notifications property isCleared on list collections and sets. (#1128)

Fixed

  • SyncSession.pause() allow users to suspend a Realm's sync session until it is explicitly resumed with SyncSession.resume(). Previously it could be implicitly resumed in rare cases. (Core upgrade)
  • Improve the performance of Realm.freeze() and friends (RealmObject.freeze(),RealmList.freeze(), RealmResults.freeze(), RealmSet.freeze()) by eliminating some redundant work around schema initialization and validation. (Core upgrade)
  • Include more details if an error occurs when merging object. (Core upgrade)
  • Value in List of Mixed would not be updated if new value is Binary and old value is StringData and the values otherwise matches. (Core upgrade)
  • When client reset with recovery is used and the recovery does not actually result in any new local commits, the sync client may have gotten stuck in a cycle with a A fatal error occurred during client reset: 'A previous 'Recovery' mode reset from <timestamp> did not succeed, giving up on 'Recovery' mode to prevent a cycle' error message. (Core upgrade)
  • Fixed diverging history in flexible sync if writes occur during bootstrap to objects that just came into view (Core upgrade)
  • Fix several data races when opening cached frozen Realms. New frozen Realms were added to the cache and the lock released before they were fully initialized, resulting in races if they were immediately read from the cache on another thread (Core upgrade).
  • Properties and types not present in the requested schema would be missing from the reported schema in several scenarios, such as if the Realm was being opened with a different schema version than the persisted one, and if the new tables or columns were added while the Realm instance did not have an active read transaction. (Core upgrade, since v13.2.0)
  • If a client reset w/recovery or discard local is interrupted while the "fresh" realm is being downloaded, the sync client may crash (Core upgrade)
  • Changesets from the server sent during FLX bootstrapping that are larger than 16MB can cause the sync client to crash with a LogicError. (Core upgrade)
  • Online compaction may cause a single commit to take a long time. (Core upgrade, since v13.0.0)

Compatibility

  • Realm Studio: 13.0.0 or later.

Internal

  • Using Core 13.3.0
  • Added specific codes to SyncResolveErrorCode enum's items. (#1131.