Skip to content

Chore: Bump the nuget-minor group with 15 updates - #1221

Closed
dependabot[bot] wants to merge 4 commits into
mainfrom
dependabot/nuget/dot-config/nuget-minor-87b161a581
Closed

dependabot[bot] wants to merge 4 commits into
mainfrom
dependabot/nuget/dot-config/nuget-minor-87b161a581

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Updated Avalonia from 11.3.17 to 11.3.22.

Release notes

Sourced from Avalonia's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Avalonia.Headless from 11.3.17 to 11.3.22.

Release notes

Sourced from Avalonia.Headless's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Avalonia.Headless.NUnit from 11.3.17 to 11.3.22.

Release notes

Sourced from Avalonia.Headless.NUnit's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Avalonia.Skia from 11.3.17 to 11.3.22.

Release notes

Sourced from Avalonia.Skia's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Avalonia.Win32.Interoperability from 11.3.17 to 11.3.22.

Release notes

Sourced from Avalonia.Win32.Interoperability's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated dotnet-coverage from 18.10.0 to 18.12.0.

Release notes

Sourced from dotnet-coverage's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated dotnet-reportgenerator-globaltool from 5.5.11 to 5.5.12.

Release notes

Sourced from dotnet-reportgenerator-globaltool's releases.

5.5.12

Changes:

  • #​790 Allow a custom file reader for the source files when generating a report (contributed by @​jeremy-morren)

This release requires .NET Framework 4.7 or .NET 8.0/9.0/10.0

Commits viewable in compare view.

Updated Encoding-Converters-Core from 0.9.8 to 0.9.9.

Release notes

Sourced from Encoding-Converters-Core's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated Semi.Avalonia from 11.3.14 to 11.3.22.

Release notes

Sourced from Semi.Avalonia's releases.

11.3.22

What's Changed

New Contributors

Full Changelog: irihitech/Semi.Avalonia@v11.3.14...v11.3.22

Commits viewable in compare view.

Updated SIL.Core from 18.0.0-beta0042 to 18.0.0.

Release notes

Sourced from SIL.Core's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated SIL.libpalaso.l10ns from 18.0.0-beta0012 to 18.0.0.

Release notes

Sourced from SIL.libpalaso.l10ns's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated System.Diagnostics.DiagnosticSource from 9.0.2 to 9.0.22.

Release notes

Sourced from System.Diagnostics.DiagnosticSource's releases.

9.0.21

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.20...v9.0.21

9.0.20

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.19...v9.0.20

9.0.19

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.18...v9.0.19

9.0.18

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.17...v9.0.18

9.0.17

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.16...v9.0.17

9.0.16

Release

9.0.15

Release

9.0.14

Release

9.0.13

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.12...v9.0.13

9.0.12

Release

9.0.11

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.10...v9.0.11

9.0.10

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.9...v9.0.10

9.0.9

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.8...v9.0.9

9.0.8

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.7...v9.0.8

9.0.7

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.6...v9.0.7

9.0.6

Bug Fixes

  • Read messages from binlog if process output is missing build finished message (#​114676)
    Improves reliability of the WebAssembly build process by reading messages from the binlog when the process output does not contain the expected build finished message, preventing build failures in certain scenarios.

  • Fix debugger app hangs related to thread exit (#​114917)
    Resolves an issue where applications could hang during debugging when threads exit, ensuring smoother debugging experiences and preventing deadlocks.

  • [Mono] Workaround MSVC miscompiling sgen_clz (#​114903)
    Addresses a compiler miscompilation issue in MSVC affecting the Mono garbage collector, improving runtime stability and correctness on affected platforms.

  • Do not set the salt or info if they are NULL for OpenSSL HKDF (#​114877)
    Fixes a cryptographic issue by ensuring that the salt or info parameters are not set when they are NULL in OpenSSL HKDF, preventing potential errors or unexpected behavior in key derivation.

  • [Test Only] Fix Idn tests (#​115032)
    Corrects issues in Internationalized Domain Name (Idn) tests, ensuring accurate and reliable test results for domain name handling.

  • JIT: revised fix for fp division issue in profile synthesis (#​115026)
    Provides a more robust fix for floating-point division issues in JIT profile synthesis, improving numerical accuracy and preventing incorrect calculations.

  • Handle OSSL 3.4 change to SAN:othername formatting (#​115361)
    Updates certificate handling to accommodate changes in Subject Alternative Name (SAN) formatting introduced in OpenSSL 3.4, ensuring compatibility and correct parsing of certificates.

  • [Mono] Fix c11 ARM64 atomics to issue full memory barrier (#​115635)
    Fixes atomic operations on ARM64 in Mono to issue a full memory barrier, ensuring correct synchronization and preventing subtle concurrency bugs.

Performance Improvements

  • [WinHTTP] Certificate caching on WinHttpHandler to eliminate extra call to Custom Certificate Validation (#​114678)
    Improves HTTP performance by caching certificates in WinHttpHandler, reducing redundant calls to custom certificate validation and speeding up secure connections.

  • Improve distribute_free_regions (#​115167)
    Optimizes memory management by enhancing the algorithm for distributing free memory regions, leading to better memory utilization and potentially improved application performance.

Technical Improvements

  • Strip trailing slash from source dir for cmake4 (#​114905)
    Refines build scripts by removing trailing slashes from source directories when using CMake 4, preventing potential build path issues and improving build reliability.

  • Don't expose TrustedCertificatesDirectory() and StartNewTlsSessionContext() to NetFx (#​114995)
    Restricts certain internal APIs from being exposed to .NET Framework, reducing surface area and preventing unintended usage.

  • Add support for more libicu versions (#​115376)
    Expands compatibility by supporting additional versions of the International Components for Unicode (ICU) library, enhancing globalization features across more environments.

Infrastructure

  • Run outerloop pipeline only for release branches, not staging/preview (#​115011)
    Optimizes CI/CD resources by limiting the outerloop pipeline to run only on release branches, reducing unnecessary test runs and speeding up development workflows.

... (truncated)

9.0.5

Release

What's Changed

9.0.4

Release

What's Changed

Full Changelog: dotnet/runtime@v9.0.3...v9.0.4

9.0.3

Release

What's Changed

Description has been truncated


This change is Reviewable

Bumps Avalonia from 11.3.17 to 11.3.22
Bumps Avalonia.Headless from 11.3.17 to 11.3.22
Bumps Avalonia.Headless.NUnit from 11.3.17 to 11.3.22
Bumps Avalonia.Skia from 11.3.17 to 11.3.22
Bumps Avalonia.Win32.Interoperability from 11.3.17 to 11.3.22
Bumps dotnet-coverage from 18.10.0 to 18.12.0
Bumps dotnet-reportgenerator-globaltool from 5.5.11 to 5.5.12
Bumps Encoding-Converters-Core from 0.9.8 to 0.9.9
Bumps Semi.Avalonia from 11.3.14 to 11.3.22
Bumps SIL.Core from 18.0.0-beta0042 to 18.0.0
Bumps SIL.libpalaso.l10ns from 18.0.0-beta0012 to 18.0.0
Bumps System.Diagnostics.DiagnosticSource from 9.0.2 to 9.0.22
Bumps System.Drawing.Common from 9.0.18 to 9.0.22
Bumps System.Resources.Extensions from 9.0.18 to 9.0.22
Bumps System.Security.Permissions from 9.0.18 to 9.0.22

---
updated-dependencies:
- dependency-name: Avalonia
  dependency-version: 11.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: Avalonia.Headless
  dependency-version: 11.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: Avalonia.Headless.NUnit
  dependency-version: 11.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: Avalonia.Skia
  dependency-version: 11.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: Avalonia.Win32.Interoperability
  dependency-version: 11.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: dotnet-coverage
  dependency-version: 18.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-minor
- dependency-name: dotnet-reportgenerator-globaltool
  dependency-version: 5.5.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: Encoding-Converters-Core
  dependency-version: 0.9.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: Semi.Avalonia
  dependency-version: 11.3.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: SIL.Core
  dependency-version: 18.0.0
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: SIL.libpalaso.l10ns
  dependency-version: 18.0.0
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: System.Diagnostics.DiagnosticSource
  dependency-version: 9.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: System.Drawing.Common
  dependency-version: 9.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: System.Resources.Extensions
  dependency-version: 9.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
- dependency-name: System.Security.Permissions
  dependency-version: 9.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Nov 1, 2026
SIL.LibPalaso 18.0.0 needs icu.net 4, L10NSharp 11 and 10.0.x
Microsoft.Extensions/System.Resources.Extensions, which fails restore
with NU1109. The Icu.NativeMethods pin note on DependencyModel makes
that a separate, tested upgrade, so keep the beta0042 packages.

Avalonia.Desktop stayed at 11.3.17 while the other Avalonia packages
moved to 11.3.22, which fails the build with MSB3277. Move it too.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@codecov-commenter

codecov-commenter commented Nov 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 40.36%. Comparing base (936ae91) to head (cd6cfb0).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1221      +/-   ##
==========================================
- Coverage   40.36%   40.36%   -0.01%     
==========================================
  Files        1550     1550              
  Lines      355615   355615              
  Branches    41476    41476              
==========================================
- Hits       143536   143530       -6     
- Misses     182770   182775       +5     
- Partials    29309    29310       +1     

see 4 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

NUnit Tests

    1 files  ±0      1 suites  ±0   13m 25s ⏱️ - 1m 42s
6 948 tests ±0  6 863 ✅ ±0  85 💤 ±0  0 ❌ ±0 
6 957 runs  ±0  6 872 ✅ ±0  85 💤 ±0  0 ❌ ±0 

Results for commit cd6cfb0. ± Comparison against base commit 936ae91.

♻️ This comment has been updated with latest results.

johnml1135 and others added 2 commits November 2, 2026 12:47
The package moved from 9.0.2 to 9.0.22, whose net462 assembly is
version 9.0.0.22, but the hand-written redirect in the FieldWorks
App.config still pointed at 9.0.0.2. Avalonia would fail to bind at
runtime, which CI does not exercise.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Both were bumped by the earlier combined dependency PR, which this
one now replaces. Neither version was held on main for a reason:
beta0180 was set by the Find Lexical Entry change with no pin note,
and the 10.0.10 Reflection.Metadata pin carries no hold comment.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@johnml1135

Copy link
Copy Markdown
Contributor

icu.net 4 upgrade: triage recorded here, no change to this PR. This PR stays on LibPalaso beta0042 and icu.net 3, so the upgrade is follow-up work that should rebase over it. Four research passes covered the icu.net 4 release notes, other SIL repos, FieldWorks history and old PRs, and the FieldWorks code. That produced 52 items, listed below.

Nothing here has been built or run. Findings marked VERIFIED were checked against package metadata and source. Line numbers are at main 936ae91fe.

  • No data migration: native ICU stays at 70.1.152, so projects need no migration or reindex.
  • No API breaks: icu.net 3.0.1 to 4.0.0 removes nothing from the public API. Its assembly version does go from 3.0.0.0 to 4.0.0.0, so anything built against 3 needs a redirect.
  • The real work: this is a coordinated package move, not a single bump. The main risks are mixed versions at load time, which CI may not catch.

Gates

ID Gate Recommendation Decision still open
T1 DependencyModel 10.0.9 in the net48 test host. #1000 reverted 9.0.17 for FileLoadException, and 10.0.9 is untested. Run the full test.ps1 first. If it fails, block the upgrade or stay on icu.net 3? Recommend blocking and investigating.
T2 Pins below the new minimums: Bcl.AsyncInterfaces, Reflection.Metadata, ValueTuple, Resources.Extensions, L10NSharp. Raise them in the upgrade PR. None
T3 The Paratext plugin has no redirects and doesn't merge icu.net, so merged LCM references 3.0.0.0 while WritingSystems 18 references 4.0.0.0. Inspect the merged references, then smoke-test in real Paratext. See T4
T4 No LCM release is built on icu.net 4 or LibPalaso 18; beta0184 is still on 3.0.1. Build LCM on icu.net 4 first. Build LCM first, or ship on redirects?
T5 Hand-written L10NSharp 10.0.0.0 redirects in three config files break startup once L10NSharp 11 is deployed. Update them to the deployed version. Remove or update? Recommend update, removing only if generated redirects cover it.
T6 Wrapper.Cleanup() at PUAInstaller.cs:311 (sillsdev/icu-dotnet#237). It is the only production call, in UnicodeCharEditor, which creates no handle-owning ICU objects. Gate on a PUA install smoke test. Accept after the smoke test, or wait for sillsdev/icu-dotnet#239 or sillsdev/icu-dotnet#245? Recommend accepting.

Order: this PR lands, liblcm builds on icu.net 4 (not started), then the FieldWorks upgrade PR rebases over both, gated on T1, T3, T5 and T6. FlexBridge rebuilds afterwards; that step is advisory.

Not yet verified: T1 at runtime, restore results for the T2 pins, Paratext in-host binding, Cleanup at runtime, ICU 68 and 70 co-loading, the L10NSharp WinForms API diff, and the sillsdev/icu-dotnet#130 reproduction.

Full triage: all 52 items, evidence, landing order, what could not be verified

Key verified facts (basis for the items)

  • icu.net 4.0.0 is a managed-wrapper release only. Native ICU stays at FieldWorks' 70.1.152 (IcuNugetVersion, Build/SilVersions.props). VERIFIED: icu.net 4 and LibPalaso 18 nuspecs have no native ICU dependency; Chorus beta0065/0084 list Icu4c.Win.Min 59.1.7 with all assets excluded; LCM Core beta0182/0184 depend on Icu4c.Win.Fw 70.1.152.
  • Public API icu.net 3.0.1 net451 vs 4.0.0 net462: zero removals or signature changes (full member/flag/enum-value dump). Only UDecompositionType.COUNT and UNumericType.COUNT gain [Obsolete]; ~700 additive Character enum lines. So LCM builds compiled against 3 are source/binary API compatible.
  • But AssemblyVersion changes 3.0.0.0 -> 4.0.0.0 (same token 416fdd914afa6b66). Anything compiled against 3 needs a binding redirect. References to 3.0.0.0: LCM Core beta0182/0184, LCM beta0182, ParatextData 9.5.0.20/.24, SIL.WritingSystems 18.0.0-beta0042. References to 4.0.0.0: SIL.WritingSystems 18.0.0 stable. LibChorus beta0065/0084 have no direct icu.net reference.
  • Latest published LCM is beta0184, still on icu.net 3.0.1 / SIL.* 17. liblcm main (da7140f) has no icu.net 4 or LibPalaso 18 PR. Chorus beta0084 is published with icu.net 4 / L10NSharp 11 / Resources.Extensions 10.0.13.

A. Blockers and release gates

T1. Net48 test host with DependencyModel 10.0.9 (and its dependency floors)

T2. Missed dependency floors from the new package set

  • What/why: nuspec comparison against central pins (VERIFIED at nuspec level; restore not run): Microsoft.Bcl.AsyncInterfaces 9.0.16 -> >=10.0.9; System.Reflection.Metadata 10.0.10 -> >=10.0.12 (PR Chore: Bump the nuget-minor group with 15 updates #1221 does this); System.ValueTuple 4.6.1 -> >=4.6.2; System.Resources.Extensions 9.0.18 (Chore: Bump the nuget-minor group with 15 updates #1221: 9.0.22) -> >=10.0.12, Chorus beta0084 needs >=10.0.13; L10NSharp(+Windows.Forms) 10.0.0-beta0014 -> >=11.0.1. New runtime assemblies appear: System.Text.Json 10.0.9, Encodings.Web, IO.Pipelines, Formats.Nrbf.
  • Bcl.AsyncInterfaces is ILRepack-merged into the Paratext plugin (pinned for DI internalization, PR Chore: Bump 15 dependencies from 3 dependabot PRs #1059), so the bump needs a plugin merge check.
  • Evidence: package nuspecs; Directory.Packages.props:24,38,141,152; Src/FwParatextLexiconPlugin/ILRepack.targets.
  • Disposition: do in upgrade PR (part of T10); confirm by restore (UNVERIFIED). Confidence high. Size M. No decision needed.

T3. Paratext plugin in-host binding with mixed icu.net 3.0.0.0 / 4.0.0.0 references

  • What/why: FwParatextLexiconPlugin.dll is ILRepack-merged (SIL.Core, Core.Desktop, LCModel, LCModel.Core, WritingSystems, Lexicon, etc.) but icu.net and DependencyModel are not merged. Merged LCM carries icu.net 3.0.0.0, merged WritingSystems 18 carries 4.0.0.0. Paratext provides no binding redirects, so a 3.0.0.0 ref cannot bind to a 4.0.0.0 file, or two icu.net copies coexist with separate Init/Confine state and a different native ICU each (Paratext ICU 59 vs FieldWorks 70).
  • Evidence: ILRepack.targets (comment: Paratext "provides no binding redirects"); reference dumps for LCM/ParatextData/WritingSystems (VERIFIED); runtime behaviour UNVERIFIED (whether ILRepack keeps both AssemblyRefs not inspected).
  • Disposition: release gate. Before merge: inspect merged plugin AssemblyRefs; run real Paratext smoke (T38/T39). Prefer an LCM built on icu.net 4 (T4). Confidence: high that the hazard exists, unknown outcome. Size L.
  • Decision needed: ship without LCM-on-icu.net-4, or wait for it (see T4).

T4. LCM built on icu.net 4 / LibPalaso 18 does not exist yet

  • What/why: Published LCM (beta0182/0184) is on icu.net 3.0.1 and SIL.* 17.0.0 (a 17 -> 18 redirect is needed even today). Taking icu.net 4 / LibPalaso 18 in FieldWorks without an LCM on 4 depends on redirects everywhere (T3, T9). No liblcm PR exists.
  • Evidence: liblcm main da7140f; LCM nuspecs beta0182/0184 (VERIFIED).
  • Disposition: do before (liblcm owners) or accept the redirect-only combination. Confidence high. Size L (others' repo).
  • Decision needed: wait for LCM, or proceed on redirects and rely on the T3 smoke.

T5. Manual L10NSharp 10.0.0.0 binding redirect breaks startup after L10NSharp 11

  • What/why: Src/Common/FieldWorks/App.config, Src/AppForTests.config:21-25 and Src/FwParatextLexiconPlugin/FwParatextLexiconPluginTests/App.config:18-21 force 0.0.0.0-10.0.0.0 -> 10.0.0.0. With L10NSharp 11 deployed (11.0.0.0) this yields FileLoadException. Existing comment ("Chorus references 9.0.0") is stale; Chorus beta0065 references 10.0.0.0, beta0084 references 11.0.0.0.
  • Disposition: do in upgrade PR (change to 11.0.0.0 or remove). Also keep the DiagnosticSource redirect (Chore: Bump the nuget-minor group with 15 updates #1221: 9.0.0.22) tracking the deployed version (Chorus references 9.0.0.2). Confidence high (VERIFIED). Size S.
  • Decision needed: remove vs update redirect.

T6. PUAInstaller Wrapper.Cleanup() with icu.net 4 (sillsdev/icu-dotnet#237)

B. Required changes in the upgrade PR

T7. Raise central pins together: icu.net 4.0.0, DependencyModel >=10.0.9, ValueTuple 4.6.2, Bcl.AsyncInterfaces, Reflection.Metadata, Resources.Extensions, L10NSharp + .Windows.Forms 11.0.1. (Directory.Packages.props, Build/SilVersions.props). Confidence high. Size M.
T8. Take Chorus beta0084 and LibPalaso 18.0.0 stable (SilVersions.props:15-24). Chorus beta0084 brings L10NSharp 11 and Resources.Extensions >=10.0.13; WritingSystems 18.0.0 stable is built against icu.net 4. Note PR #1221 keeps LibPalaso beta0042 (references icu.net 3.0.0.0). Size M. Decision needed: order relative to #1221.
T9. Verify generated binding redirects (FieldWorks.exe, UnicodeCharEditor, test hosts, plugin tests) include icu.net 3->4, SIL.* 17->18, L10NSharp, DependencyModel; regenerate test .dll.config via Build/Agent/Rebuild-TestProjects.ps1. FieldWorks exes/test hosts use AutoGenerateBindingRedirects. Size S.
T10. Apply the LibPalaso stable change set: sillsdev/libpalaso#1550 culture-independent ordinal searches and invariant compare, sillsdev/libpalaso#1552 UseICUForLanguageNames, sillsdev/libpalaso#1547 net8 target, sillsdev/libpalaso#1543 package floors (Markdig 1.4.0, FFMpegCore 5.5.0 via SIL.Media). Size M. Check output behaviour (T45, T47).
T11. Check consumers of L10NSharp's removed WCF/System.ServiceModel transitive reference. L10NSharp 11 dropped Bing/WCF from .Windows.Forms. FieldWorks uses only LocalizationManagerWinforms.Create/GetUILanguages/SetUILanguage/UILanguageId (FieldWorks.cs:3681-3710) and xWorksTests TestLocalizationManagerBootstrap; the v10 removals (CanCustomizeLocalizations, EmailForSubmissions, Create parameters, Translator classes, LmGrid) were absorbed by the v10 move. Core 10 beta0014 vs 11.0.1 API diff has no removals (VERIFIED); .Windows.Forms API diff not done (UNVERIFIED). Size S.
T12. ILRepack merge check for the Paratext plugin after the pin changes (Bcl.AsyncInterfaces, new System.Text.Json graph, icu.net refs). Size M. Ties to T3.
T13. Dependabot: remove the DependencyModel ignore (.github/dependabot.yml:31-37) once 10.0.9+ is accepted; keep the global major-version ignore. Size S.
T14. Confirm ConfineIcuVersions(70) still works and add it where missing. FieldWorks.cs:153-161 calls Icu.Wrapper.ConfineIcuVersions(70) before FwUtils.InitializeIcu (FwUtils.cs:165-213); maxIcuVersion=-1 sets max = min, so exactly 70 (VERIFIED). v4 fix sillsdev/icu-dotnet#222 filters candidates before picking the highest, so it is effective and changes nothing in a standard layout (lib/x64 is searched before the assembly directory). Gap (pre-existing): UnicodeCharEditor does not call the confine; only LCM CustomIcu.InitIcuDataDir confines, after Init. Size S. Decision needed: add confine to UnicodeCharEditor now or leave.
T15. Wrapper.IcuVersion returns a string such as "70.1"; compare the major in assertions (see T36). Size S.

C. Deferred work this unblocks or can now be removed

T16. Stale DependencyModel hold note in Directory.Packages.props:29-32 and Test.runsettings:59-74. Remove once T1 passes. Size S.
T17. SIL.Core.Desktop codeBase hint in Src/Common/FieldWorks/App.config; needs an assembly identity check before removal. Size S.
T18. Stale comments: ICU54DataDir, Icu50, FwUtils icudt54 comment. Size S.
T19. TextsTriStateTreeView AccessViolation catch (sillsdev/icu-dotnet#130, LT-20194). Possibly removable if the icu.net 4 collator/normalizer fixes cover it; needs the Yuruti NFD repro first (UNVERIFIED). Size M.
T20. PR #1183 (LT-22840 ICU data-path) is separate from this upgrade; revisit after merge. Size S.
T21. Rebuild FlexBridge on icu.net 4. FlexBridge is a separately installed offline installer (own ICU 54 process); FieldWorks references only SIL.FLExBridge.IPCFramework in process (FwUtils.csproj:31), so this is advisory, not a restore dependency. Size M (others' repo).

D. Tests to add

T35. PUA install and GUI smoke on net48 x64 after Cleanup (Character calls post-Cleanup). Size S.
T36. Startup and test-host assertion that Wrapper.IcuVersion major is 70 (AssemblyInfoForTests.cs:44 InitializeIcu(IcuVersion=70)). Plus full net48 test.ps1 and .trx grep (T1). Size S.
T37. ICU discovery test with multiple ICU majors present (68 beside 70, see T49). Size S.
T38. Paratext in-host plugin smoke, plus existing ParatextCanInitialize (ParatextDataIntegrationTests.cs:98-103, asserts no FileLoadException). Size M.
T39. Inspect merged plugin AssemblyRefs after ILRepack (T3, T12). Size S.
T40. Generated redirect inspection for FieldWorks, UnicodeCharEditor, tests and plugin (T9). Size S.
T41. Concurrent shared-collator GetSortKey regression (sillsdev/icu-dotnet#119; sillsdev/icu-dotnet#240 fixes only the sort-key buffer). Size M.
T42. Yuruti NFD compare (sillsdev/icu-dotnet#130) and a separate Cleanup lifetime test (sillsdev/icu-dotnet#237). Size M.
T43. Empty, invalid and custom collation-rule regression. Size S.
T44. Converter dialog, high-expansion transliteration (U+FDFA) and EC co-load smoke. Size M.
T45. Culture-sensitive string (th-TH) regression for sillsdev/libpalaso#1550. Size S.
T46. Install-path length check (long path, sillsdev/icu-dotnet#244 info) and Markdig output check for the 1.4.0 floor. Size S.

E. Separate from this upgrade (out of this PR)

T47. Native ICU bump work: regenerate nfc_fw.nrm / nfkc_fw.nrm, ICU_DATA system variable in installer, IcuCommon.h, CustomIcu.Version, Icu70/icudt70l layout. Not needed for icu.net 4. Separate issue. Size L.
T48. Native search TODOs (ICU bug 3083, FWNX-207 line-break classes). Separate issue. Size M.
T49. Encoding Converters ICU 68 beside ICU 70. EC 0.9.8/0.9.9 native files icudt68/icuin68/icuuc68.dll (+ IcuTranslitEC.dll importing icuuc68/icuin68 by name) are copied to the output root (Build/Windows.targets:111-113, PackageRestore.targets:567-583); ICU 70 goes to lib/x64 and lib/x86 (PackageRestore.targets:422-445). VERIFIED: versioned names so they coexist; icu.net searches lib/x64 first and confinement to 70 filters 68 out, so the 68 files are never selected by icu.net. IcuEC.dll is managed EC 4.0.0.0 with no icu.net reference. EC 0.9.9 net9.0-windows variants include icu.net.dll but are not in the copy list. Runtime co-load UNVERIFIED. Disposition: no change; covered by T44. Size S.
T50. Minor TODOs: ReferenceLauncher dumb sort, XAmple Debug lib names, AddCnvtrDlg U_FILE_ACCESS_ERROR restart, SmartBstr ICU conversion TODOs. Separate issues. Size S each.
T51. Motif pin of icu.net 3.0.2 (macOS Cleanup workaround): Motif's own decision. Size S.
T52. icu.net 4.0.1 stable and sillsdev/icu-dotnet#237 fixes (sillsdev/icu-dotnet#239/#245): wait on upstream; recheck when released. Size S.
T53. ParatextData update (references icu.net 3.0.0.0): others' repo/timing. Size S.

F. No action, information only

T54. sillsdev/icu-dotnet#244 long-path \\?\ failure in DirectoryOfThisAssembly: VERIFIED by source that the #if NET path uses Assembly.Location (fails) while the net462 build uses CodeBase ?? Location (a file URI), so not reached on net48. FieldWorks has no net8+ product targets. Fix only in 4.0.1-beta.1. Three reviews treated it as a gate; downgraded here (disagreement D3). Recheck if any non-net48 tool uses icu.net. UNVERIFIED on a real net48 long path.
T55. sillsdev/icu-dotnet#232 (Normalizer FCD/NONE mapped to NFKD) and sillsdev/icu-dotnet#246 (BiDi.SetLine out IntPtr): no FieldWorks call site.
T56. Open sillsdev/icu-dotnet#148/#173/#177/#234: not relevant.
T57. Transliterator overflow retry: FieldWorks only calls GetIdsAndNames (CnvtrPropertiesCtrl.cs:494-508).
T58. Missing native exports now throw MissingMethodException (behaviour change, no known caller).
T59. Android target is opt-in.
T60. The 3.0.2 changes shipped in 4.0.0 (compatibility review item 19), including the macOS Cleanup behaviour.
T61. Ecosystem consumers: TheCombine on icu.net 4; Bloom on LibPalaso 18; HearThis, Glyssen, Pathway, PA, WeSay, Solid, SayMore (ICU56 CopyLibaries.bat), FwLite, LfMerge (uses Cleanup).
T62. Machine SIL.Scripture transitive graph not verified.
T63. sillsdev/chorus#405 (missing DiagnosticSource); sillsdev/chorus#404 merged.
T64. FlexBridge ICU 54 separate process; ICU_DATA inheritance risk if the FieldWorks system variable leaks.
T65. No project data migration or reindex is needed (compat matrix); Keyman and Graphite are separate.

Landing order

  1. Already published, others' repos: icu.net 4.0.0, LibPalaso 18.0.0, L10NSharp 11.0.1, Chorus beta0084.
  2. liblcm (others): LCM release on icu.net 4 / LibPalaso 18. Not started. Hard prerequisite only for a clean Paratext plugin and a supported combination (T3, T4); FieldWorks can proceed on redirects at its own risk.
  3. FieldWorks upgrade PR (FieldWorks' control): pins (T7, T2), Chorus/LibPalaso (T8), redirects (T5, T9), ILRepack check (T12, T39), tests (D), then Paratext and PUA smoke (T3, T6). Rebase over Chore: Bump the nuget-minor group with 15 updates #1221 (DiagnosticSource redirect, LCM beta0182).
  4. FlexBridge rebuild (others; advisory, separate installer).
  5. Out of band: icu.net 4.0.1 stable (Fix crash when icu.net.dll path is longer than MAX_PATH icu-dotnet#244), Wrapper.Cleanup() leaves outstanding ICU handles dangling, causing AccessViolationException icu-dotnet#237 fix (fix: Invalidate outstanding ICU handles in Wrapper.Cleanup() icu-dotnet#239/LT-22017: Fix between content for multirun strings & unit test #245), ParatextData update, native ICU bump.

Disagreements between the reviews, and how they were settled

D1. DependencyModel original failure: release review says reproduced (PR #1000); SIL-repos review says later reruns did not reproduce. PR #1000 body documents the reproduction and revert; No later non-reproduction was found. Unsettled; treated as a gate (T1).
D2. FlexBridge ordering: SIL-repos review overstated it as a prerequisite. FieldWorks references only IPCFramework in process, so it is advisory (T21).
D3. sillsdev/icu-dotnet#244 gate: release, code and SIL-repos reviews gate on it; source shows net462 is unaffected (T54).
D4. Cleanup risk: code review marks UNVERIFIED, history review calls it a blocker. Source: one production call site in a process without handle-owning objects; kept as a smoke gate (T6).

Could not verify

DependencyModel 10.0.9 net48 runtime; Cleanup at runtime; Paratext in-host binding and whether ILRepack keeps both icu.net AssemblyRefs; EC ICU 68+70 co-load; L10NSharp.Windows.Forms API diff (tool failed on WinForms facades); restore results (NU1109) for the extra floors; sillsdev/icu-dotnet#130 reproduction; sillsdev/icu-dotnet#244 on a real net48 long path; Machine/SIL.Scripture transitive graph; deployed FlexBridge and LCM beta0180 binaries.

@jasonleenaylor

Copy link
Copy Markdown
Contributor

Superseded by #1235.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants