Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated test projects to .netcore 3.1 #2234

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
812113d
Updated test projects to .netcore 3.1
LaPeste Feb 8, 2021
7ddb0ab
Updated changelog
LaPeste Feb 8, 2021
f8af4fc
Updated Jenkins file
LaPeste Feb 8, 2021
742ead7
Updated MSBuild.Sdk.Extras
LaPeste Feb 8, 2021
c42d194
Reverted MSBuild.Sdk.Extras
LaPeste Feb 9, 2021
ae87a4d
Updated Jenkinsfile to fix linux
LaPeste Feb 9, 2021
b98d834
Cleaned up
LaPeste Feb 9, 2021
4053d00
Avoid Groovy to interpret the bash code as GString
LaPeste Feb 9, 2021
64fa1ca
Updated changelog
LaPeste Feb 10, 2021
f7a8e10
More changes to Jenkinsfile
LaPeste Feb 10, 2021
904186c
More changes to Jenkinsfile - again
LaPeste Feb 10, 2021
289845c
Jenkinsfile - better check for 3.1
LaPeste Feb 10, 2021
8a9e601
Attempt to create custom docker container
LaPeste Feb 10, 2021
b9d3e89
Dockerfile renamed
LaPeste Feb 11, 2021
afd0c3f
Changed comment on Jenkinsfile
LaPeste Feb 11, 2021
5605370
Remove nodefaultlib workaround that was used for server wrappers (#2241)
nirinchev Feb 10, 2021
adcdde2
Merge relevant portions from v10 and bump version to 10.5 (arbitraril…
nirinchev Feb 10, 2021
8fa868c
Enable LTO builds (#2239)
nirinchev Feb 11, 2021
c1b193e
Updated test projects to .netcore 3.1
LaPeste Feb 8, 2021
999ee2d
Updated changelog
LaPeste Feb 8, 2021
1a3b796
Updated changelog
LaPeste Feb 10, 2021
9774b02
Strange rebase behaviour needed a fix
LaPeste Feb 11, 2021
76d60e5
Unexplicable strange things happening with rebase needed a fix
LaPeste Feb 11, 2021
2237e13
Revert to "Changed comment on Jenkinsfile" given the huge mess of rebase
LaPeste Feb 11, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 61 additions & 86 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## vNext (TBD)
## 10.5.0 (TBD)

### Fixed
* None
* Fixed an issue that would result in UWP apps being rejected from the Microsoft Store due to an unsupported API (`__C_specific_handler`) being used. (Issue [#2235](https://github.com/realm/realm-dotnet/issues/2235))

### Enhancements
* Add support for the `Guid` data type. It can be used as primary key and is indexable. (PR [#2120](https://github.com/realm/realm-dotnet/pull/2120))
Expand All @@ -23,105 +23,37 @@
var obj = new MyObject();
obj.Denominations.Add("quarter", 0.25d);
```
* Reduced the size of the native binaries by ~5%. (PR [#2239](https://github.com/realm/realm-dotnet/pull/2239))

### Compatibility
* Realm Studio: 10.0.0 or later.

### Internal
* Using Core 10.3.3.
* Using Core 11.x.y. (it's in flux)
* Enabled LTO builds for all platforms except Android. (PR [#2239](https://github.com/realm/realm-dotnet/pull/2239))
* Test projects updated to dotnetcore 3.1. This means that tests are no longer executed against dotnetcore 2.0.

## 10.0.0-beta.6 (2021-01-25)

### Fixed
* Fixed a regression in 10.0.0-beta.5 that incorrectly stores and retrieves `DateTimeOffset` values. (PR [#2200](https://github.com/realm/realm-dotnet/pull/2200))
## 10.1.0 (2021-02-09)

### Enhancements
* None

### Compatibility
* Realm Studio: 10.0.0 or later.

### Internal
* Using Core 10.3.3.

## [Don't use!] 10.0.0-beta.5 (2021-01-19)

**This version has a serious regression related to reading and writing date properties. It stores dates in an incorrect format at the database layer, which means that values written in earlier versions will be read incorrectly (typically values very close to `0000-01-01`) and values written with this version will be read incorrectly with future versions.**

### Breaking Changes
* Removed `RealmObject.FreezeInPlace`. To freeze a realm object use the `Freeze` extension method. (Issue [#2180](https://github.com/realm/realm-dotnet/issues/2180))
* Sync client now logs error messages received from server rather than just the size of the error message. (Core upgrade)
* Errors returned from the server when sync WebSockets get closed are now captured and surfaced as a SyncError. (Core upgrade)
* Dramatically improved performance of sequential reads on a query without a filter. (Core upgrade)

### Fixed
* Worked around an issue with the .NET Native compiler (used in UWP projects) that would result in the following exception being thrown in Release: `Incompatible MarshalAs detected in parameter named 'value'. Please refer to MCG's warning message for more information.`. (Issue [#2169](https://github.com/realm/realm-dotnet/issues/2169))
* Fixed a bug that could cause a deadlock in a multiprocess scenario where multiple processes share the same Realm file and listen for notifications from the file. (Core upgrade)
* Fixed an issue where Sync connections would fail on Windows due to `SSL server certificate rejected`. (Core upgrade)
* Fixed an issue with deleting and recreating objects with embedded objects. (Core upgrade)
* Fix a race condition which would lead to "uncaught exception in notifier thread: N5realm15InvalidTableRefE: transaction_ended" and a crash when the source Realm was closed or invalidated at a very specific time during the first run of a collection notifier (Core upgrade)

### Enhancements
* Replaced the implementation of the string query parser (the one used for [`realm.All().Filter("some-string-query")`](https://docs.mongodb.com/realm-sdks/dotnet/10.0.0-beta.3/reference/Realms.CollectionExtensions.html#Realms_CollectionExtensions_Filter__1_System_Linq_IQueryable___0__System_String_)). This results in ~5% reduction of the size of the native binary while keeping the query execution times on par with the old parser. (PR [#2185](https://github.com/realm/realm-dotnet/pull/2185), Core upgrade)
* Fix an issue when using a frozen query across threads with different transaction versions which resulted in being able to access objects from a future version in the frozen collection. (Core upgrade)
* Fixed an issue where creating an object after file format upgrade may fail with assertion "Assertion failed: lo() <= std::numeric_limits<uint32_t>::max()" (Core upgrade)
* Fixed an issue where getting an element from a query result without a filter would give incorrect results if a new object was created at index zero in the source Table. (Core upgrade)
* Fixed an issue where during synchronization the app would crash with `Assertion failed: ref + size <= next->first`. (Core upgrade)

### Compatibility
* Realm Studio: 10.0.0 or later.

### Internal
* Using Core 10.3.3.
* Migrated to bison parser.
* Using Core 10.5.0.
* Fixes the analytics version being sent.

## 10.0.0-beta.3 (2020-12-10)

### Breaking Changes
* `Credentials.Google(string)` now has an additional argument of type `GoogleCredentialType`. The available types are `IdToken`
and `AuthCode` and specify what type of credential the passed string represents.

### Fixed
* Fixed a bug that could cause incorrect property values to be read during a migration for apps running on .NET Core 3.0 or newer.
The issue manifests itself when different classes have persisted properties with the same name and could result in
the wrong property being accessed - e.g. `foo.Name` could return `foo.Bar`. This could only happen when using the
dynamic API during a migration and does not affect apps that use the strongly typed API or run on platforms other
than .NET Core 3.x/.NET 5.
* Fixed an issue that would cause deadlocks on Windows systems when 3 or more processes were listening for notifications on the same Realm file. (Core upgrade)
* Fixed a bug that would prevent eventual consistency during conflict resolution. Affected clients would experience data divergence
and potentially consistency errors as a result if they experienced conflict resolution between cycles of Create-Erase-Create for
objects with the same primary key. (Core upgrade)
* Fixed a bug that could lead to a crash when refreshing the user's custom data. (Core upgrade)
* Fixed a bug that could cause an assertion `n != realm::npos` when integrating changesets from the server. (Core upgrade)

### Enhancements
* Added support of OpenID Connect credential for the Google authentication provider. (Issue [#2108](https://github.com/realm/realm-dotnet/issues/2108))
* Optimized the internal code that handles conversions between types. This should result in a minor performance increase
for most data operations that should be most noticeable on Ahead-of-Time compiled platforms, such as iOS/UWP. Due to the
nature of the change, it's possible that conversions that previously happened automatically when working with dynamic objects
no longer do. If you encounter a `NotSupportedException` with the message `No conversion exists from *type A* to *type B*`
and believe this is a bug, please open a Github Issue. (PR [#2149](https://github.com/realm/realm-dotnet/pull/2149))

### Compatibility
* Realm Studio: 10.0.0 or later.

### Internal
* Using Core 10.3.0.
* Submit Analytics to S3/Segment in addition to Mixpanel.
* Analytics now also reports if Sync functionality is in use.
* SDK is now also tested against .NET 5.
* This release uses monorepo releases that bundle Core, Sync, and OS.
* Replaced Expressions-based Operator with T4. (PR [#2149](https://github.com/realm/realm-dotnet/pull/2149))

## 10.0.0-beta.2 (2020-11-04)

### Fixed
* Fix crash in case insensitive query on indexed string columns when nothing matches (Core upgrade)

### Enhancements
* Added an extra compile-time check to detect erroneous List<T> declarations and suggest IList<T> for collection properties in Realm objects. (Issue [#2083](https://github.com/realm/realm-dotnet/pull/2083))
* Added overloads for `Realm.Write` and `Realm.WriteAsync` that can return a value. (Issue [#2081](https://github.com/realm/realm-dotnet/issues/2081))

### Compatibility
* Realm Studio: 10.0.0 or later.

### Internal
* Using Sync 10.1.0 and Core 10.1.0.

## 10.0.0-beta.1 (2020-10-19)
## 10.0.1 (2021-02-02)

### Breaking Changes
* We no longer support Realm Cloud (legacy), but instead the new [MongoDB Realm Cloud](https://realm.mongodb.com). MongoDB Realm is a serverless platform that enables developers to quickly build applications without having to set up server infrastructure. MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the connection to your database. ([#2011](https://github.com/realm/realm-dotnet/pull/2011))
Expand All @@ -137,6 +69,7 @@ and believe this is a bug, please open a Github Issue. (PR [#2149](https://githu
* Bumped the minimum target for Xamarin.iOS apps to iOS 9.
* Bumped the minimum API level for Xamarin.Android apps to 16 (Android 4.1).
* Renamed `FullSyncConfiguration` to `SyncConfiguration`.
* Removed `RealmObject.FreezeInPlace`. To freeze a realm object use the `Freeze` extension method. (Issue [#2180](https://github.com/realm/realm-dotnet/issues/2180))

### Enhancements
* Added support for syncing to MongoDB instead of Realm Object Server. Applications must be created at [realm.mongodb.com](https://realm.mongodb.com).
Expand Down Expand Up @@ -227,12 +160,54 @@ and believe this is a bug, please open a Github Issue. (PR [#2149](https://githu
```

* The memory mapping scheme for Realm files has changed to better support opening very large files.
* Replaced the implementation of the string query parser (the one used for [`realm.All().Filter("some-string-query")`](https://docs.mongodb.com/realm-sdks/dotnet/10.0.0-beta.3/reference/Realms.CollectionExtensions.html#Realms_CollectionExtensions_Filter__1_System_Linq_IQueryable___0__System_String_)). This results in ~5% reduction of the size of the native binary while keeping the query execution times on par with the old parser. (PR [#2185](https://github.com/realm/realm-dotnet/pull/2185), Core upgrade)
* Optimized the internal code that handles conversions between types. This should result in a minor performance increase
for most data operations that should be most noticeable on Ahead-of-Time compiled platforms, such as iOS/UWP. Due to the
nature of the change, it's possible that conversions that previously happened automatically when working with dynamic objects
no longer do. If you encounter a `NotSupportedException` with the message `No conversion exists from *type A* to *type B*`
and believe this is a bug, please open a Github Issue. (PR [#2149](https://github.com/realm/realm-dotnet/pull/2149))
* Added an extra compile-time check to detect erroneous List<T> declarations and suggest IList<T> for collection properties in Realm objects. (Issue [#2083](https://github.com/realm/realm-dotnet/pull/2083))
* Added overloads for `Realm.Write` and `Realm.WriteAsync` that can return a value. (Issue [#2081](https://github.com/realm/realm-dotnet/issues/2081))

### Fixed
* Worked around an issue with the .NET Native compiler (used in UWP projects) that would result in the following exception being thrown in Release: `Incompatible MarshalAs detected in parameter named 'value'. Please refer to MCG's warning message for more information.`. (Issue [#2169](https://github.com/realm/realm-dotnet/issues/2169))
* Fixed a bug that could cause incorrect property values to be read during a migration for apps running on .NET Core 3.0 or newer.
The issue manifests itself when different classes have persisted properties with the same name and could result in
the wrong property being accessed - e.g. `foo.Name` could return `foo.Bar`. This could only happen when using the
dynamic API during a migration and does not affect apps that use the strongly typed API or run on platforms other
than .NET Core 3.x/.NET 5.
* Fixed a bug that could cause a deadlock in a multiprocess scenario where multiple processes share the same Realm file and listen for notifications from the file. (Core upgrade)
* Fixed an issue with deleting and recreating objects with embedded objects. (Core upgrade)
* Fix a race condition which would lead to "uncaught exception in notifier thread: N5realm15InvalidTableRefE: transaction_ended" and a crash when the source Realm was closed or invalidated at a very specific time during the first run of a collection notifier (Core upgrade)
* Fix crash in case insensitive query on indexed string columns when nothing matches (Core upgrade)

### Compatibility
* Realm Studio: 10.0.0 or later.

### Internal
* Using Sync 10.0.0 and Core 10.0.0.
* Using Core 10.3.3.
* Migrated to bison parser.
* Submit Analytics to S3/Segment in addition to Mixpanel.
* Analytics now also reports if Sync functionality is in use.
* SDK is now also tested against .NET 5.
* This release uses monorepo releases that bundle Core, Sync, and OS.
* Replaced Expressions-based Operator with T4. (PR [#2149](https://github.com/realm/realm-dotnet/pull/2149))

## 5.1.3 (2021-02-10)

### Fixed
* If you make a case insensitive query on an indexed string column, it may fail in a way that results in a "No such key" exception. (Core upgrade)
* Fix crash in case insensitive query on indexed string columns when nothing matches. (Core upgrade)
* Files upgraded on 32-bit devices could end up being inconsistent resulting in "Key not found" exception to be thown. (Core upgrade)
* Fixed an issue where creating an object after file format upgrade may fail with assertion `Assertion failed: lo() <= std::numeric_limits<uint32_t>::max()`. (Core upgrade)

### Compatibility
* Realm Object Server: 3.23.1 or later.
* Realm Studio: 5.0.0 or later.

### Internal
* Using Sync 5.0.32 and Core 6.2.3.
* Updated the QuickJournal example to latest Realm and Xamarin.Forms versions. (PR [#2057](https://github.com/realm/realm-dotnet/pull/2057))

## 5.1.2 (2020-10-20)

Expand Down
4 changes: 4 additions & 0 deletions CustomNetcore31DockerImg/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM mcr.microsoft.com/dotnet/sdk:3.1
RUN ABS_PATH_TO_FIX=/usr/share/dotnet/sdk/$(dotnet --version)/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets && \
mv $ABS_PATH_TO_FIX/Microsoft.WinFx.props $ABS_PATH_TO_FIX/Microsoft.WinFX.props && \
mv $ABS_PATH_TO_FIX/Microsoft.WinFx.targets $ABS_PATH_TO_FIX/Microsoft.WinFX.targets
Loading