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

Prepare for 12.3.0 #3648

Merged
merged 4 commits into from
Jul 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .github/pkl-workflows/helpers/Actions.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ const mergePR = "juliangruber/merge-pull-request-action@9234b8714dda9a08f3d1df5b
const createPR = "peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e" // 6.0.5
const publishGithubRelease = "ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5" // 1.14.0
const releaseToSlack = "realm/ci-actions/release-to-slack@6418e15ed9bbdb19b7d456a347e5623779f95cdf"
const setupCmake = "jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be" // 2.0.2
23 changes: 23 additions & 0 deletions .github/pkl-workflows/helpers/Package.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,27 @@ local const function buildDocs(condition: String): Listing<gha.Step> = new {
}
run = "C:\\docfx\\docfx Docs/docfx.json"
}
new {
name = "Update Improve this doc links"
`if` = condition
run = """
Get-ChildItem Docs/_site -Filter *.html -Recurse -File |
ForEach-Object {
$content = ($_ | Get-Content -Raw)
$content = $content -replace "/Docs/apispec/new\\?filename", "/Docs/apispec?filename"
Set-Content $_.FullName $content
}
"""
shell = "pwsh"
}
new {
name = "Archive docs"
`if` = condition
run = """
Compress-Archive -Path Docs/_site -DestinationPath "Realm/packages/Docs.zip"
"""
}
(Steps.uploadArtifacts("Docs.zip", "Realm/packages/Docs.zip")) {
`if` = condition
}
}
8 changes: 8 additions & 0 deletions .github/pkl-workflows/helpers/Steps.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ const function setupXcode(version: String): gha.Step = new {
}
}

const function setupCmake(version: String): gha.Step = new {
name = "Setup Cmake"
uses = Actions.setupCmake
with {
["cmake-version"] = version
}
}

const function setupMSVC(edition: String): gha.Step = new {
name = "Setup MSVC"
run = "Start-Process \"C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vs_installer.exe\" -ArgumentList 'modify --installPath \"C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\" --quiet --add Microsoft.VisualStudio.Component.VC.14.35.17.5.\(edition)' -Wait -PassThru"
Expand Down
7 changes: 7 additions & 0 deletions .github/pkl-workflows/wrappers.pkl
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,19 @@ jobs {
} |> wrappersJob(new JobConfig {
cmd = "./wrappers/build-macos.sh"
platform = "macos"
intermediateSteps {
Steps.setupCmake("3.29.0")
}
})
["catalyst"] = new Job {
`runs-on` = "macos-12"
name = "Catalyst"
} |> wrappersJob(new JobConfig {
cmd = "pwsh ./wrappers/build-apple-platform.ps1 Catalyst"
platform = "catalyst"
intermediateSteps {
Steps.setupCmake("3.29.0")
}
})
["apple-platform"] = new MatrixJob {
strategy {
Expand All @@ -75,6 +81,7 @@ jobs {
platform = "${{ matrix.platform }}-${{ matrix.target }}"
intermediateSteps {
Steps.setupXcode("14")
Steps.setupCmake("3.29.0")
}
ifCondition = "\(Common.applePlatformTargets((platform, target) -> "needs.\(job_CheckCache).outputs.wrappers-\(platform)-\(target) != 'true'").join(" || "))"
})
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,27 @@ jobs:
env:
DOCFX_SOURCE_BRANCH_NAME: ${{ github.head_ref }}
run: C:\docfx\docfx Docs/docfx.json
- name: Update Improve this doc links
if: contains(github.head_ref, 'release')
run: |-
Get-ChildItem Docs/_site -Filter *.html -Recurse -File |
ForEach-Object {
$content = ($_ | Get-Content -Raw)
$content = $content -replace "/Docs/apispec/new\?filename", "/Docs/apispec?filename"
Set-Content $_.FullName $content
}
shell: pwsh
- name: Archive docs
if: contains(github.head_ref, 'release')
run: Compress-Archive -Path Docs/_site -DestinationPath "Realm/packages/Docs.zip"
- name: Store artifacts for Docs.zip
if: contains(github.head_ref, 'release')
uses: actions/upload-artifact@v4
with:
name: Docs.zip
path: Realm/packages/Docs.zip
retention-days: ${{ github.event_name != 'pull_request' && 30 || 1 }}
if-no-files-found: error
build-unity:
name: Package Unity
needs:
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,27 @@ jobs:
env:
DOCFX_SOURCE_BRANCH_NAME: ${{ github.head_ref }}
run: C:\docfx\docfx Docs/docfx.json
- name: Update Improve this doc links
if: contains(github.head_ref, 'release')
run: |-
Get-ChildItem Docs/_site -Filter *.html -Recurse -File |
ForEach-Object {
$content = ($_ | Get-Content -Raw)
$content = $content -replace "/Docs/apispec/new\?filename", "/Docs/apispec?filename"
Set-Content $_.FullName $content
}
shell: pwsh
- name: Archive docs
if: contains(github.head_ref, 'release')
run: Compress-Archive -Path Docs/_site -DestinationPath "Realm/packages/Docs.zip"
- name: Store artifacts for Docs.zip
if: contains(github.head_ref, 'release')
uses: actions/upload-artifact@v4
with:
name: Docs.zip
path: Realm/packages/Docs.zip
retention-days: ${{ github.event_name != 'pull_request' && 30 || 1 }}
if-no-files-found: error
build-unity:
name: Package Unity
needs:
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/wrappers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,11 @@ jobs:
with:
path: ./wrappers/build/**
key: wrappers-macos-Release-${{hashFiles('./wrappers/**')}}
- name: Setup Cmake
if: steps.check-cache.outputs.cache-hit != 'true'
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be
with:
cmake-version: 3.29.0
- name: Build Wrappers
if: steps.check-cache.outputs.cache-hit != 'true'
run: ./wrappers/build-macos.sh --configuration=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION='ON'
Expand Down Expand Up @@ -434,6 +439,11 @@ jobs:
with:
path: ./wrappers/build/**
key: wrappers-catalyst-Release-${{hashFiles('./wrappers/**')}}
- name: Setup Cmake
if: steps.check-cache.outputs.cache-hit != 'true'
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be
with:
cmake-version: 3.29.0
- name: Build Wrappers
if: steps.check-cache.outputs.cache-hit != 'true'
run: pwsh ./wrappers/build-apple-platform.ps1 Catalyst -Configuration Release -EnableLTO
Expand Down Expand Up @@ -468,6 +478,11 @@ jobs:
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd
with:
xcode-version: '14'
- name: Setup Cmake
if: steps.check-cache.outputs.cache-hit != 'true'
uses: jwlawson/actions-setup-cmake@802fa1a2c4e212495c05bf94dba2704a92a472be
with:
cmake-version: 3.29.0
- name: Build Wrappers
if: steps.check-cache.outputs.cache-hit != 'true'
run: 'pwsh ./wrappers/build-apple-platform.ps1 ${{ matrix.platform }} -Targets ${{ matrix.target }} -Configuration Release '
Expand Down
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## vNext (TBD)
## 12.3.0 (2024-07-17)

### Deprecations
* The `Logger` has been deprecated in favor of `RealmLogger`, which `Logger` currently derives from. (PR [#3634](https://github.com/realm/realm-dotnet/pull/3634))
Expand All @@ -24,6 +24,8 @@
```csharp
RealmLogger.Default.Log(LogLevel.Warn, LogCategory.Realm, "A warning message");
```
* On Windows devices Device Sync will additionally look up SSL certificates in the Windows Trusted Root Certification Authorities certificate store when establishing a connection. (Core 14.11.0)
* Role and permissions changes no longer require a client reset to update the local realm. (Core 14.11.0)

### Fixed
* A `ForCurrentlyOutstandingWork` progress notifier would not immediately call its callback after registration. Instead you would have to wait for some data to be received to get your first update - if you were already caught up when you registered the notifier you could end up waiting a long time for the server to deliver a download that would call/expire your notifier. (Core 14.8.0)
Expand All @@ -41,6 +43,11 @@
* Fixed removing backlinks from the wrong objects if the link came from a nested list, nested dictionary, top-level dictionary, or list of `RealmValue`, and the source table had more than 256 objects. This could manifest as `array_backlink.cpp:112: Assertion failed: int64_t(value >> 1) == key.value` when removing an object. (Core 14.10.3)
* Fixed the collapse/rejoin of clusters which contained nested collections with links. This could manifest as `array.cpp:319: Array::move() Assertion failed: begin <= end [2, 1]` when removing an object. (Core 14.10.3)
* `Session.WaitForUpload()` was inconsistent in how it handled commits which did not produce any changesets to upload. Previously it would sometimes complete immediately if all commits waiting to be uploaded were empty, and at other times it would wait for a server roundtrip. It will now always complete immediately. (Core 14.10.3)
* When a property is remapped, calling `.Filter("... SORT/DISTINCT(mapped-to-name)")` with the internal name could throw an error like `Cannot sort on key path 'NAME': property 'PersonObject.NAME' does not exist`. (Core 14.10.4)
* Sync client can crash if a session is resumed while the session is being suspended. (Core 14.11.0)
* If a sync session is interrupted by a disconnect or restart while downloading a bootstrap, stale data from the previous bootstrap may be included when the session reconnects and downloads the bootstrap. This can lead to objects stored in the database that do not match the actual state of the server and potentially leading to compensating writes. (Core 14.11.0)
* Fixed unnecessary server roundtrips when there is no download to acknowledge. (Core 14.11.0)


### Compatibility
* Realm Studio: 15.0.0 or later.
Expand Down
2 changes: 1 addition & 1 deletion Realm/AssemblyInfo.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Product Condition="'$(Product)' == ''">Realm .NET</Product>
<VersionPrefix>12.2.0</VersionPrefix>
<VersionPrefix>12.3.0</VersionPrefix>
<Description Condition="'$(Description)' == ''">Realm is a mobile database: a replacement for SQLite</Description>
<Company>Realm Inc.</Company>
<Copyright>Copyright © $([System.DateTime]::Now.ToString(yyyy)) Realm Inc.</Copyright>
Expand Down
2 changes: 1 addition & 1 deletion Realm/Realm.Unity/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "io.realm.unity",
"version": "12.2.0",
"version": "12.3.0",
"displayName": "Realm",
"description": "Realm is an embedded, object-oriented database that lets you build real-time, always-on applications. With Realm, data is directly exposed as objects and queryable by code, removing the need for ORM's riddled with performance & maintenance issues. Additionally, objects and collections in Realm are always live, meaning that they always reflect the latest data stored in the database. You can subscribe to changes, letting you keep your UI consistently up to date.\nThe .NET Realm SDK also provide access to Atlas App Services, a secure backend that can sync data between devices, authenticate and manage users, and run serverless JavaScript functions.",
"unity": "2021.1",
Expand Down
2 changes: 1 addition & 1 deletion wrappers/realm-core
Submodule realm-core updated 44 files
+51 −2 CHANGELOG.md
+1 −1 Package.swift
+4 −3 dependencies.yml
+2 −1 evergreen/config.yml
+19 −3 src/realm.h
+5 −0 src/realm/object-store/c_api/app.cpp
+17 −0 src/realm/object-store/c_api/schema.cpp
+2 −0 src/realm/object-store/c_api/sync.cpp
+12 −0 src/realm/object-store/c_api/types.hpp
+3 −0 src/realm/object-store/results.cpp
+19 −0 src/realm/object-store/sync/async_open_task.cpp
+9 −0 src/realm/object-store/sync/async_open_task.hpp
+3 −1 src/realm/object-store/sync/sync_session.hpp
+4 −6 src/realm/sync/CMakeLists.txt
+55 −67 src/realm/sync/client.cpp
+21 −11 src/realm/sync/config.hpp
+123 −2 src/realm/sync/network/network_ssl.cpp
+2 −0 src/realm/sync/network/network_ssl.hpp
+12 −0 src/realm/sync/noinst/client_history_impl.cpp
+9 −0 src/realm/sync/noinst/client_history_impl.hpp
+40 −28 src/realm/sync/noinst/client_impl_base.cpp
+15 −12 src/realm/sync/noinst/client_impl_base.hpp
+13 −5 src/realm/sync/noinst/pending_bootstrap_store.cpp
+2 −1 src/realm/sync/noinst/pending_bootstrap_store.hpp
+10 −5 src/realm/sync/noinst/protocol_codec.hpp
+22 −6 src/realm/sync/protocol.hpp
+1 −3 src/realm/sync/tools/apply_to_state_command.cpp
+1 −0 test/object-store/CMakeLists.txt
+72 −32 test/object-store/c_api/c_api.cpp
+25 −2 test/object-store/results.cpp
+1 −16 test/object-store/sync/app.cpp
+109 −19 test/object-store/sync/client_reset.cpp
+1,223 −0 test/object-store/sync/flx_role_change.cpp
+74 −77 test/object-store/sync/flx_sync.cpp
+9 −6 test/object-store/sync/session/connection_change_notifications.cpp
+280 −18 test/object-store/sync/session/progress_notifications.cpp
+84 −36 test/object-store/util/sync/baas_admin_api.cpp
+12 −5 test/object-store/util/sync/baas_admin_api.hpp
+1 −1 test/object-store/util/sync/flx_sync_harness.hpp
+23 −17 test/object-store/util/sync/sync_test_utils.cpp
+12 −0 test/object-store/util/sync/sync_test_utils.hpp
+14 −2 test/object-store/util/test_utils.hpp
+3 −3 test/test_sync_pending_bootstraps.cpp
+73 −0 test/test_util_network_ssl.cpp
Loading