From 029197f3befbb1c1e6147ccfbf2415a7a5773242 Mon Sep 17 00:00:00 2001 From: Tom Atwood Date: Sat, 26 Sep 2026 12:51:27 -0400 Subject: [PATCH] docs: target 8.0.0 for 10 November 2026 That is the scheduled .NET 11 general availability. The date is on the 8.0.0 milestone. --- CHANGELOG.md | 2 +- CONTRIBUTING.md | 2 +- README.md | 4 ++-- docfx/docs/dynamitey.md | 4 ++-- docfx/docs/releasing.md | 4 ++-- docfx/index.md | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9c141c..65d6c4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Each release has a `## [version]` section. When a `v*.*.*` tag is pushed, the Pu ### Docs -- 7.0.0 is documented as the last release that supports .NET Standard 2.0, which covers .NET Framework 4.6.1 through 4.8.1. 8.0.0 follows Dynamitey.Community 5.0.0 and drops that target (#108). +- 7.0.0 is documented as the last release that supports .NET Standard 2.0, which covers .NET Framework 4.6.1 through 4.8.1. 8.0.0 follows Dynamitey.Community 5.0.0 and drops that target. The target date is 10 November 2026 (#108). ## [7.0.0] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 964914f..725e141 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,4 +49,4 @@ PRs build the site; only `master` deploys to GitHub Pages. 7.0.0 is the last release that targets `netstandard2.0`. That is the build a .NET Framework 4.6.1 through 4.8.1 application uses. Do not drop it in a 7.x change. Framework 4.8.1 is serviced with Windows and does not gain BCL APIs, so those applications stay on 7.0.0. -8.0.0 ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108)) targets `net10.0` and `net11.0` only. It waits on [Dynamitey.Community 5.0.0](https://github.com/dynamitey-community/dynamitey/issues/95), which drops the same target after .NET 11 is generally available. The point of that drop is one implementation: `ThrowIfNull`, ordinal hashing, and the BCL .NET 10 and .NET 11 already ship, without a second Framework copy of the call-site code. +8.0.0 ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108), [milestone](https://github.com/fsprojects/FSharp.Interop.Dynamic/milestone/2)) targets `net10.0` and `net11.0` only. The target date is 10 November 2026. It waits on [Dynamitey.Community 5.0.0](https://github.com/dynamitey-community/dynamitey/issues/95), which drops the same target once .NET 11 is generally available. The point of that drop is one implementation: `ThrowIfNull`, ordinal hashing, and the BCL .NET 10 and .NET 11 already ship, without a second Framework copy of the call-site code. diff --git a/README.md b/README.md index 0bbb44b..4265a3a 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,9 @@ F# has no `dynamic` keyword. Use this when the member is not known at compile ti **7.0.0** is the current package, and the last one that supports .NET Standard 2.0. That target is what reaches .NET Framework 4.6.1 through 4.8.1. It also builds for `net10.0`, on [Dynamitey.Community 4.0.0](https://www.nuget.org/packages/Dynamitey.Community/4.0.0). The namespace is still `Dynamitey`. The assembly is `Dynamitey.Community`. `Dyn.namedArg`, `Dyn.staticContext`, and `Dyn.staticTarget` return types from that assembly. A project that also references the `Dynamitey` 3.0.3 package gets `CS0433`. -A Framework application stays on 7.0.0. Framework 4.8.1 is still serviced with Windows. It does not get new BCL APIs. .NET Standard 2.0 freezes this library on the Framework 4.6.1 surface. A newer API is either skipped, or written twice. That is the tax. [Dynamitey.Community #95](https://github.com/dynamitey-community/dynamitey/issues/95) is the same decision for the dependency: 4.0.0 is its last `netstandard2.0` release, and 5.0.0 (after .NET 11 is generally available in November 2026) targets `net10.0` and `net11.0` only. +A Framework application stays on 7.0.0. Framework 4.8.1 is still serviced with Windows. It does not get new BCL APIs. .NET Standard 2.0 freezes this library on the Framework 4.6.1 surface. A newer API is either skipped, or written twice. That is the tax. [Dynamitey.Community #95](https://github.com/dynamitey-community/dynamitey/issues/95) is the same decision for the dependency: 4.0.0 is its last `netstandard2.0` release, and 5.0.0 (after .NET 11 is generally available) targets `net10.0` and `net11.0` only. -**8.0.0** ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108)) follows that. It targets `net10.0` and `net11.0` and drops .NET Standard 2.0, once Dynamitey.Community 5.0.0 has dropped the same target. The gains are in that library, and this package takes them by referencing it: +**8.0.0** ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108), [milestone](https://github.com/fsprojects/FSharp.Interop.Dynamic/milestone/2)) follows that. The target date is 10 November 2026, the scheduled .NET 11 general availability. It targets `net10.0` and `net11.0` and drops .NET Standard 2.0, once Dynamitey.Community 5.0.0 has dropped the same target. The gains are in that library, and this package takes them by referencing it: - One copy of Dynamitey's call-site code. The `netstandard2.0` branch, `Guard.NotNull`, and the attribute polyfills go away. `ArgumentNullException.ThrowIfNull` is on every target. - Ordinal hashing and `string.Contains(string, StringComparison)`. The Framework build cannot call those overloads, so it uses a different hash and three `IndexOf` calls. diff --git a/docfx/docs/dynamitey.md b/docfx/docs/dynamitey.md index 0b0810a..e2dbde8 100644 --- a/docfx/docs/dynamitey.md +++ b/docfx/docs/dynamitey.md @@ -21,9 +21,9 @@ Jay Tuley wrote Dynamitey. The `Dynamitey` package id stopped at 3.0.3. The cont `Dyn.namedArg`, `Dyn.staticContext`, and `Dyn.staticTarget` return `InvokeArg` and `InvokeContext` from that assembly. A project that also references `Dynamitey` 3.0.3 fails to compile with `CS0433`. ImpromptuInterface still references the original package. How to alias that is in the [community readme](https://github.com/dynamitey-community/dynamitey#if-you-end-up-with-both-packages). -[#95](https://github.com/dynamitey-community/dynamitey/issues/95) is Dynamitey.Community 5.0.0. It ships after .NET 11 is generally available (scheduled 10 November 2026) and targets `net10.0` and `net11.0`. The `netstandard2.0` leg is why that library still carries `#if NETSTANDARD2_0`, a `Guard.NotNull` helper instead of `ArgumentNullException.ThrowIfNull`, attribute polyfills, a C# 7.3 language default, and package references to `Microsoft.CSharp` 4.* and `System.Reflection.Emit` 4.7.0. Those packages are in the shared framework on .NET 10 and .NET 11. The Framework hash of a member name cannot call `string.GetHashCode(StringComparison.Ordinal)`, so it does not match the ordinal `Equals`. 5.0.0 deletes that split. It does not make a warm `InvokeMember` faster, and it does not make the library trim-safe. +[#95](https://github.com/dynamitey-community/dynamitey/issues/95) is Dynamitey.Community 5.0.0. It ships after .NET 11 is generally available, scheduled 10 November 2026, and targets `net10.0` and `net11.0`. The `netstandard2.0` leg is why that library still carries `#if NETSTANDARD2_0`, a `Guard.NotNull` helper instead of `ArgumentNullException.ThrowIfNull`, attribute polyfills, a C# 7.3 language default, and package references to `Microsoft.CSharp` 4.* and `System.Reflection.Emit` 4.7.0. Those packages are in the shared framework on .NET 10 and .NET 11. The Framework hash of a member name cannot call `string.GetHashCode(StringComparison.Ordinal)`, so it does not match the ordinal `Equals`. 5.0.0 deletes that split. It does not make a warm `InvokeMember` faster, and it does not make the library trim-safe. -7.0.0 of this library is the matching line: the last release with `netstandard2.0`. A Framework 4.6.1 through 4.8.1 application stays here. **8.0.0** ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108)) takes Dynamitey.Community 5.0.0 and drops .NET Standard 2.0. [#29](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/29) was the older ticket. It is closed. The 4.0.0 switch is [#130](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/130). +7.0.0 of this library is the matching line: the last release with `netstandard2.0`. A Framework 4.6.1 through 4.8.1 application stays here. **8.0.0** ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108), [milestone](https://github.com/fsprojects/FSharp.Interop.Dynamic/milestone/2)) takes Dynamitey.Community 5.0.0 and drops .NET Standard 2.0. The target date is 10 November 2026. [#29](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/29) was the older ticket. It is closed. The 4.0.0 switch is [#130](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/130). ## Do not take a compile-time dependency on Dynamitey internals diff --git a/docfx/docs/releasing.md b/docfx/docs/releasing.md index 6de61bc..13017f6 100644 --- a/docfx/docs/releasing.md +++ b/docfx/docs/releasing.md @@ -6,7 +6,7 @@ NuGet publish is tag-triggered. The workflow is `.github/workflows/publish.yml`. `VersionPrefix` is **7.0.0**. That release references Dynamitey.Community 4.0.0 and targets `netstandard2.0` and `net10.0`. It is the last release that supports .NET Standard 2.0, and so the last release a .NET Framework 4.6.1 through 4.8.1 application can take. -**8.0.0** drops `netstandard2.0` and targets `net10.0` and `net11.0` ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108)). It follows [Dynamitey.Community 5.0.0](https://github.com/dynamitey-community/dynamitey/issues/95). Not another 5.x. +**8.0.0** drops `netstandard2.0` and targets `net10.0` and `net11.0` ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108), [milestone](https://github.com/fsprojects/FSharp.Interop.Dynamic/milestone/2)). The target date is 10 November 2026. It follows [Dynamitey.Community 5.0.0](https://github.com/dynamitey-community/dynamitey/issues/95). Not another 5.x. ## Cut a release @@ -40,4 +40,4 @@ Pull requests never publish. ## After it lands -Confirm nuget.org lists the new version and that README / getting-started install instructions match it. After 7.0.0, the next planned major is 8.0.0 (drop `netstandard2.0`). Not another 5.x. +Confirm nuget.org lists the new version and that README / getting-started install instructions match it. After 7.0.0, the next planned major is 8.0.0 on 10 November 2026 (drop `netstandard2.0`). Not another 5.x. diff --git a/docfx/index.md b/docfx/index.md index b0ff08b..29006db 100644 --- a/docfx/index.md +++ b/docfx/index.md @@ -54,7 +54,7 @@ Reach for ordinary F# when the member is known at compile time. Reach for this l ## Supported frameworks -7.0.0 targets `netstandard2.0` and `net10.0`. `netstandard2.0` is how a .NET Framework 4.6.1 through 4.8.1 application uses this package. It is also the last release that includes that target. 8.0.0 targets `net10.0` and `net11.0` only ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108)), after [Dynamitey.Community 5.0.0](https://github.com/dynamitey-community/dynamitey/issues/95) drops `netstandard2.0`. Framework 4.8.1 stays serviced with Windows and does not gain BCL APIs, so a Framework application stays on 7.0.0. +7.0.0 targets `netstandard2.0` and `net10.0`. `netstandard2.0` is how a .NET Framework 4.6.1 through 4.8.1 application uses this package. It is also the last release that includes that target. 8.0.0 targets `net10.0` and `net11.0` only ([#108](https://github.com/fsprojects/FSharp.Interop.Dynamic/issues/108)). The target date is 10 November 2026, on the [8.0.0 milestone](https://github.com/fsprojects/FSharp.Interop.Dynamic/milestone/2), after [Dynamitey.Community 5.0.0](https://github.com/dynamitey-community/dynamitey/issues/95) drops `netstandard2.0`. Framework 4.8.1 stays serviced with Windows and does not gain BCL APIs, so a Framework application stays on 7.0.0. ## A word on trimming and AOT