Changelog History
Page 5
-
v2.1.0 Changes
November 14, 2017π This release brings bug fixes and a new server-side package: Realm.Server. It allows you to create server-side change handlers that observe hundreds or thousands of Realms and get notifications when any of those changes. Read the full announcement here or head over to the documentation.
β¨ Enhancements
- β Added an
[Explicit]
attribute that can be applied to classes or assemblies. If a class is decorated with it, then it will not be included in the default schema for the Realm (i.e. you have to explicitly setRealmConfiguration.ObjectClasses
to an array that contains that class). Similarly, if it is applied to an assembly, all classes in that assembly will be considered explicit. This is useful when developing a 3rd party library that depends on Realm to avoid your internal classes leaking into the user's schema. (#1602)
π Bug fixes
- π Fixed a bug that would prevent writing queries that check if a related object is null, e.g.
realm.All<Dog>().Where(d => d.Owner == null)
. (#1601) - β Addressed an issue that would cause the debugger to report an unobserved exception being thrown when "Just My Code" is disabled. (#1603)
- π Calling
Realm.DeleteRealm
on a synchronized Realm will now properly delete therealm.management
folder. (#1621) - π Fixed a crash when accessing primitive list properties on objects in realms opened with a dynamic schema (e.g. in migrations). (#1629)
- β Added an
-
v2.0.0 Changes
October 17, 2017β¨ Enhancements
- β Added support for collections of primitive values. You can now define properties as
IList<T>
whereT
can be any π type supported by Realm, except for anotherIList
. As a result, a lot of methods that previously had constraints on π»RealmObject
now accept any type and may throw a runtime exception if used with an unsupported type argument. (#1517) - β Added
HelpLink
pointing to the relevant section of the documentation to most Realm exceptions. (#1521) - β Added
RealmObject.GetBacklinks
API to dynamically obtain all objects referencing the current one. (#1533) - β Added a new exception type,
PermissionDeniedException
, to denote permission denied errors when working with synchronized Realms that π¦ exposes a method -DeleteRealmUserInfo
- to inform the binding that the offending Realm's files should be kept or deleted immediately. This allows recovering from permission denied errors in a more robust manner. (#1543) - π The keychain service name used by Realm to manage the encryption keys for sync-related metadata on Apple platforms is now set to the bundle identifier. Keys that were previously stored within the Realm-specific keychain service will be transparently migrated to the per-application keychain service. (#1522)
- β Added a new exception type -
IncompatibleSyncedFileException
- that allows you to handle and perform data migration from a legacy (1.x) Realm file to the new 2.x format. It can be thrown when usingRealm.GetInstance
orRealm.GetInstanceAsync
and exposes aGetBackupRealmConfig
method that allows you to open the old Realm file in a dynamic mode and migrate any required data. (#1552) - π Enable encryption on Windows. (#1570)
- π Enable Realm compaction on Windows. (#1571)
- π
UserInfo
has been significantly enhanced. It now contains metadata about a user stored on the Realm Object Server, as well as a list of all user account data associated with that user. (#1573) - π Introduced a new method -
User.LogOutAsync
to replace the now-deprecated synchronous call. (#1574) - π¦ Exposed
BacklinksCount
property onRealmObject
that returns the number of objects that refer to the current object via a to-one or a to-many relationship. (#1578) - π String primary keys now support
null
as a value. (#1579) - β Add preview support for partial synchronization. Partial synchronization allows a synchronized Realm to be opened in such a way
π that only objects requested by the user are synchronized to the device. You can use it by setting the
IsPartial
property on a πSyncConfiguration
, opening the Realm, and then callingRealm.SubscribeToObjectsAsync
with the type of object you're interested in, a string containing a query determining which objects you want to subscribe to, and a callback which will report the results. You may β add as many subscriptions to a synced Realm as necessary. (#1580) - Ensure that Realm collections (
IList<T>
,IQueryable<T>
) will not change when iterating in aforeach
loop. (#1589)
π Bug fixes
- β
Realm.GetInstance
will now advance the Realm to the latest version, so you no longer have to callRefresh
manually after that. (#1523) - π Fixed an issue that would prevent iOS Share Extension projects from working. (#1535)
π₯ Breaking Changes
Realm.CreateObject(string className)
now has additional parameterobject primaryKey
. You must pass that when creating a new object using the dynamic API. If the object you're creating doesn't have primary key declared, passnull
. (#1381)AcceptPermissionOfferAsync
now returns the relative rather than the absolute url of the Realm the user has been granted permissions to. (#1595)
- β Added support for collections of primitive values. You can now define properties as
-
v1.6.0 Changes
August 14, 2017β¨ Enhancements
- π¦ Exposed
Realm.WriteCopy
API to copy a Realm file and optionally encrypt it with a different key. (#1464) - The runtime representations of all Realm collections (
IQueryable<T>
andIList<T>
) now implement theIList
interface that is needed for data-binding toListView
in UWP applications. (#1469) - π¦ Exposed
User.RetrieveInfoForUserAsync
API to allow admin users to lookup other users' identities in the Realm Object Server. This can be used, for example, to find a user by knowing their Facebook id. (#1486) - β Added a check to verify there are no duplicate object names when creating the schema. (#1502)
- β Added more comprehensive error messages when passing an invalid url scheme to
SyncConfiguration
orUser.LoginAsync
. (#1501) - β Added more meaningful error information to exceptions thrown by
Realm.GetInstanceAsync
. (#1503) - β Added a new type -
RealmInteger<T>
to expose Realm-specific API over base integral types. It can be used to implement counter functionality in synced realms. (#1466) - β Added
PermissionCondition.Default
to apply default permissions for existing and new users. (#1511)
π Bug fixes
- π Fix an exception being thrown when comparing non-constant character value in a query. (#1471)
- π Fix an exception being thrown when comparing non-constant byte or short value in a query. (#1472)
- π Fix a bug where calling the non-generic version of
IQueryProvider.CreateQuery
on Realm's IQueryable results, an exception would be thrown. (#1487) - π Trying to use an
IList
orIQueryable
property in a LINQ query will now throwNotSupportedException
rather than crash the app. (#1505)
π₯ Breaking Changes
- π¦ Exposed
-
v1.5.0 Changes
June 20, 2017β¨ Enhancements
- π¦ Exposed new API on the
User
class for working with permissions: (#1361)ApplyPermissionsAsync
,OfferPermissionsAsync
, andAcceptPermissionOfferAsync
allow you to grant, revoke, offer, and accept permissions.GetPermissionOffers
,GetPermissionOfferResponses
, andGetPermissionChanges
allow you to review objects, added via the above mentioned methods.GetGrantedPermissionsAsync
allows you to inspect permissions granted to or by the current user.
- When used with
RealmConfiguration
(i.e. local Realm),Realm.GetInstanceAsync
will perform potentially costly operation, such as executing migrations or compaction on a background thread. (#1406) - π¦ Expose
User.ChangePasswordAsync(userId, password)
API to allow admin users to change other users' passwords. (#1412) - π¦ Expose
SyncConfiguration.TrustedCAPath
API to allow providing a custom CA that will be used to validate SSL traffic to the Realm Object Server. (#1423) - π¦ Expose
Realm.IsInTransaction
API to check if there's an active transaction for that Realm. (#1452)
π Bug fixes
- π Fix a crash when querying over properties that have
[MapTo]
applied. (#1405) - π Fix an issue where synchronized Realms did not connect to the remote server in certain situations, such as when an application was offline when the Realms were opened but later regained network connectivity. (#1407)
- π Fix an issue where incorrect property name will be passed to
RealmObject.PropertyChanged
subscribers when the actual changed property is below aBacklink
property. (#1433) - π Fix an exception being thrown when referencing Realm in a PCL test assembly without actually using it. (#1434)
- π Fix a bug when
SyncConfiguration.EnableSSLValidation
would be ignored when passed toRealm.GetInstanceAsync
. (#1423)
π₯ Breaking Changes
- The constructors of
PermissionChange
,PermissionOffer
, andPermissionOfferResponse
are now private. Use the newUser.ApplyPermissionsAsync
,User.OfferPermissionsAsync
, andUser.AcceptPermissionOfferAsync
API. (#1361) - π
User.GetManagementRealm
andUser.GetPermissionRealm
are now deprecated. Use the new permission related API onUser
to achieve the same results. (#1361) User.ChangePassword(password)
has been renamed toUser.ChangePasswordAsync(password)
. (#1412)- β Removed the following obsolete API: (#1425)
Realm.ObjectForPrimaryKey<T>(long id)
Realm.ObjectForPrimaryKey<T>(string id)
Realm.ObjectForPrimaryKey(string className, long id)
Realm.ObjectForPrimaryKey(string className, string id)
Realm.Manage<T>(T obj, bool update)
Realm.Close()
Realm.CreateObject<T>()
IOrderedQueryable<T>.ToNotifyCollectionChanged<T>(Action<Exception> errorCallback)
IOrderedQueryable<T>.ToNotifyCollectionChanged<T>(Action<Exception> errorCallback, bool coalesceMultipleChangesIntoReset)
IRealmCollection<T>.ObjectSchema
- π»
Realm.DeleteRealm
now throws an exception if called while an instance of that Realm is still open.
- π¦ Exposed new API on the
-
v1.4.0 Changes
May 19, 2017β¨ Enhancements
- π¦ Expose
RealmObject.OnManaged
virtual method that can be used for init purposes, since the constructor is run before the object has knowledge of its Realm. (#1383) - π¦ Expose
Realm.GetInstanceAsync
API to asynchronously open a synchronized Realm. It will download all remote content available at the time the operation began on a background thread and then return a usable Realm. It is also the only supported way of opening Realms for which the user has only read permissions.
- π¦ Expose
-
v1.3.0 Changes
May 16, 2017π Universal Windows Platform
π Introducing Realm Mobile Database for Universal Windows Platform (UWP). With UWP support, you can now build mobile apps using Realmβs object database for the millions of mobile, PC, and Xbox devices powered by Windows 10. The addition of UWP support allows .NET developers to build apps for virtually any modern Windows Platform with Windows Desktop (Win32) or UWP as well as for iOS and Android via Xamarin. Note that sync support is not yet available for UWP, though we are working on it and you can expect it soon.
β¨ Enhancements
- Case insensitive queries against a string property now use a new index based search. (#1380)
- β Add
User.ChangePassword
API to change the current user's password if using Realm's 'password' authentication provider. Requires any edition of the Realm Object Server 1.4.0 or later. (#1386) - π
SyncConfiguration
now has anEnableSSLValidation
property (default istrue
) to allow SSL validation to be specified on a per-server basis. (#1387) - β Add
RealmConfiguration.ShouldCompactOnLaunch
callback property when configuring a Realm to determine if it should be compacted before being returned. (#1389) - β Silence some benign linker warnings on iOS. (#1263)
- π Use reachability API to minimize the reconnection delay if the network connection was lost. (#1380)
π Bug fixes
- π Fixed a bug where
Session.Reconnect
would not reconnect all sessions. (#1380) - π Fixed a crash when subscribing for
PropertyChanged
multiple times. (#1380) - π Fixed a crash when reconnecting to Object Server (#1380)
- π Fixed a crash on some Android 7.x devices when opening a realm (#1380)
-
v1.2.1 Changes
May 01, 2017π Bug fixes
- π Fixed an issue where
EntryPointNotFoundException
would be thrown on some Android devices. (#1336)
β¨ Enhancements
- π¦ Expose
IRealmCollection.IsValid
to indicate whether the realm collection is valid to use. (#1344) - β‘οΈ Update the Fody reference which adds support for building with Mono 5. (#1364)
- π Fixed an issue where
-
v1.2.0 Changes
April 04, 2017π Realm is now being distributed as a .NET Standard 1.4 library as this is a requirement for supporting UWP. While internally that is a rather big move, applications using it should not be affected. After the upgrade, you'll see a number of new NuGet dependencies being added - those are reference assemblies, already part of mscorlib, so will not affect your application's size or performance. Additionally, we're releasing a new platform specific DataBinding package that contains helper methods that enable two-way databinding scenarios by automatically creating transactions when setting a property.
β¬οΈ If you encounter any issues after the upgrade, we recommend clearing the
bin
andobj
folders and restarting Xamarin Studio. If this doesn't help, please file an issue explaining your solution setup and the type of problems you encounter.Files written with this version cannot be read by earlier versions of Realm. This version is not compatible with versions of the Realm Object Server lower than 1.3.0.
π Bug fixes
- π Fixes the
RemoveAll(string)
overload to work correctly. (#1288) - Resolved an issue that would lead to crashes when refreshing the token for an invalid session. (#1289)
- The
IObservable
returned fromsession.GetProgressObservable
will correctly callOnComplete
when created withmode: ProgressMode.ForCurrentlyOutstandingWork
. (#1292) - π Fixed a memory leak when accessing string properties. (#1318)
- π Fixes an issue when using
EncryptionKey
with synchronized realms. (#1322)
β¨ Enhancements
- Introduce APIs for safely passing objects between threads. Create a thread-safe reference to a thread-confined object by passing it to the
ThreadSafeReference.Create
factory method, which you can then safely pass to another thread to resolve in the new realm withRealm.ResolveReference
. (#1300) - π Introduce API for attempting to reconnect all sessions. This could be used in conjunction with the connectivity plugin to monitor for connectivity changes and proactively request reconnecting, rather than rely on the built-in retry mechanism. (#1310)
- Enable sorting over to-one relationships, e.g.
realm.All<Parent>().OrderBy(p => p.Child.Age)
. (#1313) - Introduce a
string.Like
extension method that can be used in LINQ queries against the underlying database engine. (#1311) - β Add an
User.IsAdmin
property that indicates whether a user is a Realm Object Server administrator. (#1320)
π₯ Breaking Changes
- 0οΈβ£
DateTimeOffset
properties that are not set will now correctly default to0001-1-1
instead of1970-1-1
after the object is passed torealm.Add
. (#1293) - Attempting to get an item at index that is out of range should now correctly throw
ArgumentOutOfRangeException
for allIRealmCollection
implementations. (#1295) - π The layout of the .lock file has changed, which may affect scenarios where different processes attempt to write to the same Realm file at the same time. (#1296)
- β‘οΈ
PropertyChanged
notifications use a new, more reliable, mechanism, that behaves slightly differently from the old one. Notifications will be sent only after a transaction is committed (making it consistent with the way collection notifications are handled). To make sure that your UI is promptly updated, you should avoid keeping long lived transactions around. (#1316)
- π Fixes the
-
v1.1.1 Changes
March 15, 2017π Bug fixes
- Resolved an issue that prevented compiling for iOS on Visual Studio. (#1277)
-
v1.1.0 Changes
March 03, 2017β¨ Enhancements
- β Added Azure Active Directory (AzureAD) credentials provider. (#1254)
π₯ Breaking Changes
π This is a preparation release for adding UWP support. We have removed all platform-specific logic from the Realm assemblies, and instead weave them in compile time. While this has been tested in all common scenarios, it may create issues with very complex project graphs. If you encounter any of these issues with iOS projects:
- Compilation fails when running Task
WeaveRealmAssemblies
- App crashes when first accessing a Realm
please file an issue and explain your solution setup.