Realm Xamarin v10.4.0 Release Notes

Release Date: 2021-08-31 // over 2 years ago
  • ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed an issue that would cause Logger.Default on Unity to always revert to Debug.Log, even when a custom logger was set. (Issue #2481)
    • ๐Ÿ›  Fixed an issue where Logger.Console on Unity would still use Console.WriteLine instead of Debug.Log. (Issue #2481)
    • โž• Added serialization annotations to RealmObjectBase to prevent Newtonsoft.Json and similar serializers from attempting to serialize the base properties. (Issue #2579)
    • ๐Ÿ›  Fixed an issue that would cause an InvalidOperationException when removing an element from an UI-bound collection in WPF. (Issue #1903)
    • โฌ†๏ธ User profile now correctly persists between runs. (Core upgrade)
    • ๐Ÿ›  Fixed a crash when delivering notifications over a nested hierarchy of lists of RealmValue that contain RealmObject inheritors. (Core upgrade)
    • ๐Ÿ›  Fixed a crash when an object which is linked to by a RealmValue property is invalidated (sync only). (Core upgrade)
    • ๐Ÿ›  Fixes prior_size history corruption when replacing an embedded object in a list. (Core upgrade)
    • ๐Ÿ›  Fixed an assertion failure in the sync client when applying an AddColumn instruction for a RealmValue property when that property already exists locally. (Core upgrade)
    • ๐Ÿ›  Fixed an Invalid data type assertion failure in the sync client when applying an AddColumn instruction for a RealmValue property when that property already exists locally. (Core upgrade)

    โœจ Enhancements

    • โž• Added two extension methods on IList to get an IQueryable collection wrapping the list:
      • list.AsRealmQueryable() allows you to get a IQueryable<T> from IList<T> that can be then treated as a regular queryable collection and filtered/ordered with LINQ or Filter(string).
      • list.Filter(query, arguments) will filter the list and return the filtered collection. It is roughly equivalent to list.AsRealmQueryable().Filter(query, arguments).

    The resulting queryable collection will behave identically to the results obtained by calling realm.All<T>(), i.e. it will emit notifications when it changes and automatically update itself. (Issue #1499)

    • โž• Added a cache for the Realm schema. This will speed up Realm.GetInstance invocations where RealmConfiguration.ObjectClasses is explicitly set. The speed gains will depend on the number and complexity of your model classes. A reference benchmark that tests a schema containing all valid Realm property types showed a 25% speed increase of Realm.GetInstance. (Issue #2194)
    • ๐Ÿ‘Œ Improve performance of creating collection notifiers for Realms with a complex schema. In the SDKs this means that the first run of a synchronous query, first call to subscribe for notifications will do significantly less work on the calling thread.
    • ๐Ÿ‘Œ Improve performance of calculating changesets for notifications, particularly for deeply nested object graphs and objects which have List or Set properties with small numbers of objects in the collection.
    • โฌ†๏ธ Query parser now accepts BETWEEN operator. Can be used like realm.All<Person>().Filter("Age BETWEEN {20, 60}") which means "'Age' must be in the open interval ]20;60[". (Core upgrade)

    Compatibility

    • Realm Studio: 11.0.0 or later.

    Internal

    • Using Core 11.3.1.
    • Removed the RealmStates dictionary that used to hold a threadlocal dictionary of all the states for the opened Realms. It was only used for detecting open Realms during deletion and that is now handled by the native delete_realm_files method. (PR #2251)
    • ๐Ÿ“ˆ Stopped sending analytics to mixpanel.
    • Started uploading benchmark results to MongoDB Charts. (Issue #2226)
    • โœ‚ Removed the dedicated benchmark workflows from GHA. (Issue #2562)
    • ๐Ÿ Use the Win81 SDK when building the Windows wrappers on Github Actions. (Issue #2530)
    • โž• Added CodeQL workflow. (Issue #2155)
    • ๐Ÿ“ฆ Started tracking package and wrapper sizes over time. (Issue #2225)
    • โœ‚ Removed the [Serializable] attribute from RealmObjectBase as BinarySerializer is now obsolete. (PR #2578)
    • โž• Added code coverage job to Github Actions. (PR #2581)
    • โž• Added CI tests running on Windows 8.1 . (PR #2580)