Skip to content

Releases: realm/realm-swift

v2.8.0

02 Jun 22:36
b3526ec
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • Enable encryption on watchOS.
  • Add -[RLMSyncUser changePassword:forUserID:completion:] API to change an
    arbitrary user's password if the current user has administrative privileges
    and using Realm's 'password' authentication provider.
    Requires any edition of the Realm Object Server 1.6.0 or later.

Bugfixes

  • Suppress -Wdocumentation warnings in Realm C++ headers when using CocoaPods
    with Xcode 8.3.2.
  • Throw an appropriate error rather than crashing when an RLMArray is assigned
    to an RLMArray property of a different type.
  • Fix crash in large (>4GB) encrypted Realm files.
  • Improve accuracy of sync progress notifications.
  • 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.

v2.7.0

03 May 18:03
2cd52de
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • Use reachability API to minimize the reconnection delay if the network
    connection was lost.
  • Add -[RLMSyncUser changePassword:completion:] 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.
  • {RLM}SyncConfiguration now has an enableSSLValidation property
    (and default parameter in the Swift initializer) to allow SSL validation
    to be specified on a per-server basis.
  • Transactions between a synced Realm and a Realm Object Server can now
    exceed 16 MB in size.
  • Add new APIs for changing and retrieving permissions for synchronized Realms.
    These APIs are intended to replace the existing Realm Object-based permissions
    system. Requires any edition of the Realm Object Server 1.1.0 or later.

Bugfixes

  • Support Realm model classes defined in Swift with overridden Objective-C
    names (e.g. @objc(Foo) class SwiftFoo: Object {}).
  • Fix -[RLMMigration enumerateObjects:block:] returning incorrect oldObject
    objects when enumerating a class name after previously deleting a newObject.
  • Fix an issue where Realm.asyncOpen(...) would fail to work when opening a
    synchronized Realm for which the user only had read permissions.
  • Using KVC to set a List property to nil now clears it to match the
    behavior of RLMArray properties.
  • Fix crash from !m_awaiting_pong assertion failure when using synced Realms.
  • Fix poor performance or hangs when performing case-insensitive queries on
    indexed string properties that contain many characters that don't differ
    between upper and lower case (e.g., numbers, punctuation).

v2.6.2

21 Apr 18:46
3df0fb6
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • None.

Bugfixes

  • Fix an issue where calling Realm.asyncOpen(...) with a synchronized Realm
    configuration would fail with an "Operation canceled" error.
  • Fix initial collection notification sometimes not being delivered for synced
    Realms.
  • Fix circular links sometimes resulting in objects not being marked as
    modified in change notifications.

v2.6.1

19 Apr 00:53
5ef2b7f
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • None.

Bugfixes

  • Fix an issue where calling Realm.asyncOpen(...) with a synchronized Realm
    configuration would crash in error cases rather than report the error.
    This is a small source breaking change if you were relying on the error
    being reported to be a Realm.Error.

v2.6.0

18 Apr 17:05
f1333fa
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • Add a {RLM}SyncUser.isAdmin property indicating whether a user is a Realm
    Object Server administrator.
  • Add an API to asynchronously open a Realm and deliver it to a block on a
    given queue. This performs all work needed to get the Realm to
    a usable state (such as running potentially time-consuming migrations) on a
    background thread before dispatching to the given queue. In addition,
    synchronized Realms wait for all remote content available at the time the
    operation began to be downloaded and available locally.
  • Add shouldCompactOnLaunch block property when configuring a Realm to
    determine if it should be compacted before being returned.
  • Speed up case-insensitive queries on indexed string properties.
  • Add RLMResults's collection aggregate methods to RLMArray.
  • Add support for calling the aggregate methods on unmanaged Lists.

Bugfixes

  • Fix a deadlock when multiple processes open a Realm at the same time.
  • Fix value(forKey:)/value(forKeyPath:) returning incorrect values for List properties.

v2.5.1

05 Apr 20:46
f8d9bca
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • None.

Bugfixes

  • Fix CocoaPods installation with static libraries and multiple platforms.
  • Fix uncaught "Bad version number" exceptions on the notification worker thread
    followed by deadlocks when Realms refresh.

v2.5.0

29 Mar 05:28
767da10
Compare
Choose a tag to compare

Files written by Realm this version cannot be read by earlier versions of Realm.
Old files can still be opened and files open in read-only mode will not be
modified.

If using synchronized Realms, the Realm Object Server must be running version
1.3.0 or later.

Swift binaries are now produced for Swift 3.0, 3.0.1, 3.0.2 and 3.1.

API Breaking Changes

  • None.

Enhancements

  • Add support for multi-level object equality comparisons against NULL.
  • Add support for the [d] modifier on string comparison operators to perform
    diacritic-insensitive comparisons.
  • Explicitly mark [[RLMRealm alloc] init] as unavailable.
  • Include the name of the problematic class in the error message when an
    invalid property type is marked as the primary key.

Bugfixes

  • Fix incorrect column type assertions which could occur after schemas were
    merged by sync.
  • Eliminate an empty write transaction when opening a synced Realm.
  • Support encrypting synchronized Realms by respecting the encryptionKey value
    of the Realm's configuration.
  • Fix crash when setting an {NS}Data property close to 16MB.
  • Fix for reading {NS}Data properties incorrectly returning nil.
  • Reduce file size growth in cases where Realm versions were pinned while
    starting write transactions.
  • Fix an assertion failure when writing to large RLMArray/List properties.
  • Fix uncaught BadTransactLog exceptions when pulling invalid changesets from
    synchronized Realms.
  • Fix an assertion failure when an observed RLMArray/List is deleted after
    being modified.

v2.4.4

13 Mar 20:57
0f920ef
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • Add (RLM)SyncPermission class to allow reviewing access permissions for
    Realms. Requires any edition of the Realm Object Server 1.1.0 or later.
  • Further reduce the number of files opened per thread-specific Realm on macOS,
    iOS and watchOS.

Bugfixes

  • Fix a crash that could occur if new Realm instances were created while the
    application was exiting.
  • Fix a bug that could lead to bad version number errors when delivering
    change notifications.
  • Fix a potential use-after-free bug when checking validity of results.
  • Fix an issue where a sync session might not close properly if it receives
    an error while being torn down.
  • Fix some issues where a sync session might not reconnect to the server properly
    or get into an inconsistent state if revived after invalidation.
  • Fix an issue where notifications might not fire when the children of an
    observed object are changed.
  • Fix an issue where progress notifications on sync sessions might incorrectly
    report out-of-date values.
  • Fix an issue where multiple threads accessing encrypted data could result in
    corrupted data or crashes.
  • Fix an issue where certain LIKE queries could hang.
  • Fix an issue where -[RLMRealm writeCopyToURL:encryptionKey:error] could create
    a corrupt Realm file.
  • Fix an issue where incrementing a synced Realm's schema version without actually
    changing the schema could cause a crash.

v2.4.3

21 Feb 03:18
Compare
Choose a tag to compare

API Breaking Changes

  • None.

Enhancements

  • Avoid copying copy-on-write data structures, which can grow the file, when the
    write does not actually change existing values.
  • Improve performance of deleting all objects in an RLMResults.
  • Reduce the number of files opened per thread-specific Realm on macOS.
  • Improve startup performance with large numbers of RLMObject/Object
    subclasses.

Bugfixes

  • Fix synchronized Realms not downloading remote changes when an access token
    expires and there are no local changes to upload.
  • Fix an issue where values set on a Realm object using setValue(value:, forKey:)
    that were not themselves Realm objects were not properly converted into Realm
    objects or checked for validity.
  • Fix an issue where -[RLMSyncUser sessionForURL:] could erronenously return a
    non-nil value when passed in an invalid URL.
  • SyncSession.Progress.fractionTransferred now returns 1 if there are no
    transferrable bytes.
  • Fix sync progress notifications registered on background threads by always
    dispatching on a dedicated background queue.
  • Fix compilation issues with Xcode 8.3 beta 2.
  • Fix incorrect sync progress notification values for Realms originally created
    using a version of Realm prior to 2.3.0.
  • Fix LLDB integration to be able to display summaries of RLMResults once more.
  • Reject Swift properties with names which cause them to fall in to ARC method
    families rather than crashing when they are accessed.
  • Fix sorting by key path when the declared property order doesn't match the order
    of properties in the Realm file, which can happen when properties are added in
    different schema versions.

v2.4.2

31 Jan 01:18
Compare
Choose a tag to compare

Bugfixes

  • Fix an issue where RLMRealm instances could end up in the autorelease pool
    for other threads.