From 3ea87d81f24d792f521ad997864b5e098db67d3d Mon Sep 17 00:00:00 2001 From: Raul Santos Date: Sat, 16 Nov 2024 08:19:54 +0100 Subject: [PATCH 1/4] Add progress report article about .NET 8 --- .../_article/godotsharp-packages-net8.md | 68 +++++++++++ storage/blog/dotnet/release-schedule-dark.svg | 106 ++++++++++++++++++ .../blog/dotnet/release-schedule-light.svg | 82 ++++++++++++++ 3 files changed, 256 insertions(+) create mode 100644 collections/_article/godotsharp-packages-net8.md create mode 100644 storage/blog/dotnet/release-schedule-dark.svg create mode 100644 storage/blog/dotnet/release-schedule-light.svg diff --git a/collections/_article/godotsharp-packages-net8.md b/collections/_article/godotsharp-packages-net8.md new file mode 100644 index 0000000000..d0d076d9dd --- /dev/null +++ b/collections/_article/godotsharp-packages-net8.md @@ -0,0 +1,68 @@ +--- +title: "Godot C# packages move to .NET 8" +excerpt: "On moving to the latest .NET LTS release, and what it means for users." +categories: ["progress-report"] +author: Raul Santos +image: /storage/blog/covers/progress-update-csharp-3.webp +date: 2024-11-26 17:00:00 +--- + +A new version of .NET is released every year on November, alternating Long Term Support (LTS) and Standard Term Support (STS) releases. The quality of all releases is the same. The only difference is the length of support. LTS releases are supported for 3 years, while STS releases are supported for 1 year and a half. + +With the release of Godot 4.0 we moved our C# packages from targeting Mono to .NET 6. This version of .NET was released on November 8, 2021 and ended support on November 12, 2024. + +With .NET 6 ending support, Godot C# packages in 4.4 will now target the next LTS release .NET 8. Thanks to [RedworkDE](https://github.com/RedworkDE) and [Paul Joannon](https://github.com/paulloz) for the great work in [GH-92131](https://github.com/godotengine/godot/pull/92131). + +
+ + + + +
.NET release cadence from the .NET official support policy.
+
+ +## What does this mean for users? + +This means your project now needs to target .NET 8 or newer, otherwise it will be incompatible with the new `GodotSharp` packages. But you can still use libraries that target older .NET versions. + +Existing projects will be automatically upgraded to target `net8.0` when they are opened with Godot 4.4. If your project already targets .NET 8 or newer, nothing will change. Thanks to [Andreia Gaita](https://github.com/shana) for implementing this in [GH-82927](https://github.com/godotengine/godot/pull/82927). + +## What took so long? + +The version of .NET that a library targets becomes the minimum required version for consumers of that library. That is, if the `GodotSharp` package targets `net7.0`, your game project needs to target `net7.0` or newer. We didn't want to force our users to upgrade to a non-LTS release. + +When .NET 8 was released, it would've been a good time to bump the target version in Godot C# packages, since .NET 8 is an LTS release. Unfortunately, there were some breaking changes in .NET 7[^1] that prevented us from upgrading and making the required changes took us longer than we hoped. + +However, users could always use the latest version of .NET in their projects. Up until now, .NET 6 has been the minimum required version, but newer versions have always been supported from day one (even the pre-releases[^2]). In 4.4, the new minimum is now .NET 8, but as always, your projects can target the recent STS release .NET 9 and any newer version that is released in the future. + +Libraries tend to stay on older versions of .NET to support as many consumers as possible. But upgrading to the latest version of .NET brings benefits that we want to take advantage of. + +[^1]: .NET 7 introduced the new `scoped` keyword. This feature breaks compatibility in some low-level scenarios that affected Godot. + +[^2]: While pre-releases are usually supported by Godot, they may require users to enable them by setting the `DOTNET_ROLL_FORWARD_TO_PRERELEASE` environment variable to `1`. Keep in mind pre-releases are still a work-in-progress so there may be bugs. + +## What about older Godot releases? + +We encourage users to upgrade to the latest version of Godot. We work hard to prevent breaking compatibility, to ensure you can safely upgrade to the next version of Godot when it's released. Please, make sure to test the pre-releases and let us know if you find some bugs so we can fix them before the stable release. + +Older versions of Godot will keep targeting .NET 6, we won't change the target version in patch updates, since that would be a big breaking change. So if you still need to target .NET 6 you can stay on an older version of Godot, but we strongly encourage you to update to benefit from all the fixes and improvements included in the latest version of Godot and the .NET runtime. + +## What about future .NET releases? + +Godot always supports the latest .NET version. The version targeted by Godot's C# packages is only the minimum version that your project can target, but you are always free to target a newer .NET version. To target the latest .NET 9 release in your project, you just need to install the latest version of the .NET SDK and change the `TargetFramework` property in your `.csproj`: + +```xml + + + + net9.0 + true + + +``` + +
+

You should always use the latest version of the .NET SDK even when targeting an older .NET version in your projects.

+
+ +We'll keep updating our C# packages to the latest LTS release as they are released. The next LTS release will be .NET 10 which will be released on November 2025. diff --git a/storage/blog/dotnet/release-schedule-dark.svg b/storage/blog/dotnet/release-schedule-dark.svg new file mode 100644 index 0000000000..ac0a0d97eb --- /dev/null +++ b/storage/blog/dotnet/release-schedule-dark.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/storage/blog/dotnet/release-schedule-light.svg b/storage/blog/dotnet/release-schedule-light.svg new file mode 100644 index 0000000000..3b08861341 --- /dev/null +++ b/storage/blog/dotnet/release-schedule-light.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 594b99f83019aa1e5401b1ec967acc0e7197008d Mon Sep 17 00:00:00 2001 From: Emi <2206700+coppolaemilio@users.noreply.github.com> Date: Mon, 18 Nov 2024 13:29:47 +0100 Subject: [PATCH 2/4] fix dark theme image --- collections/_article/godotsharp-packages-net8.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collections/_article/godotsharp-packages-net8.md b/collections/_article/godotsharp-packages-net8.md index d0d076d9dd..8af411b355 100644 --- a/collections/_article/godotsharp-packages-net8.md +++ b/collections/_article/godotsharp-packages-net8.md @@ -16,7 +16,7 @@ With .NET 6 ending support, Godot C# packages in 4.4 will now target the next LT
- +
.NET release cadence from the .NET official support policy.
From 2731c3bb008e97aa9aa8a0a56ca6cf2f4ad1747e Mon Sep 17 00:00:00 2001 From: Raul Santos Date: Mon, 18 Nov 2024 21:34:29 +0100 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: John Veness --- collections/_article/godotsharp-packages-net8.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/collections/_article/godotsharp-packages-net8.md b/collections/_article/godotsharp-packages-net8.md index 8af411b355..3a6024cde2 100644 --- a/collections/_article/godotsharp-packages-net8.md +++ b/collections/_article/godotsharp-packages-net8.md @@ -7,11 +7,11 @@ image: /storage/blog/covers/progress-update-csharp-3.webp date: 2024-11-26 17:00:00 --- -A new version of .NET is released every year on November, alternating Long Term Support (LTS) and Standard Term Support (STS) releases. The quality of all releases is the same. The only difference is the length of support. LTS releases are supported for 3 years, while STS releases are supported for 1 year and a half. +A new version of .NET is released in November each year, alternating Long Term Support (LTS) and Standard Term Support (STS) releases. The quality of all releases is the same. The only difference is the length of support. LTS releases are supported for 3 years, while STS releases are supported for 18 months. -With the release of Godot 4.0 we moved our C# packages from targeting Mono to .NET 6. This version of .NET was released on November 8, 2021 and ended support on November 12, 2024. +With the release of Godot 4.0, we moved our C# packages from targeting Mono to .NET 6. This version of .NET was released on November 8, 2021 and ended support on November 12, 2024. -With .NET 6 ending support, Godot C# packages in 4.4 will now target the next LTS release .NET 8. Thanks to [RedworkDE](https://github.com/RedworkDE) and [Paul Joannon](https://github.com/paulloz) for the great work in [GH-92131](https://github.com/godotengine/godot/pull/92131). +With .NET 6 ending support, Godot C# packages in 4.4 will target the current LTS release, .NET 8. Thanks to [RedworkDE](https://github.com/RedworkDE) and [Paul Joannon](https://github.com/paulloz) for their great work in [GH-92131](https://github.com/godotengine/godot/pull/92131).
@@ -23,7 +23,7 @@ With .NET 6 ending support, Godot C# packages in 4.4 will now target the next LT ## What does this mean for users? -This means your project now needs to target .NET 8 or newer, otherwise it will be incompatible with the new `GodotSharp` packages. But you can still use libraries that target older .NET versions. +Starting with Godot 4.4, your project will need to target .NET 8 or newer, otherwise it will be incompatible with the new `GodotSharp` packages. You will still be able to use other libraries that target older .NET versions. Existing projects will be automatically upgraded to target `net8.0` when they are opened with Godot 4.4. If your project already targets .NET 8 or newer, nothing will change. Thanks to [Andreia Gaita](https://github.com/shana) for implementing this in [GH-82927](https://github.com/godotengine/godot/pull/82927). @@ -31,7 +31,7 @@ Existing projects will be automatically upgraded to target `net8.0` when they ar The version of .NET that a library targets becomes the minimum required version for consumers of that library. That is, if the `GodotSharp` package targets `net7.0`, your game project needs to target `net7.0` or newer. We didn't want to force our users to upgrade to a non-LTS release. -When .NET 8 was released, it would've been a good time to bump the target version in Godot C# packages, since .NET 8 is an LTS release. Unfortunately, there were some breaking changes in .NET 7[^1] that prevented us from upgrading and making the required changes took us longer than we hoped. +When .NET 8 was released in November 2023, it would've been a good time to bump the target version in Godot C# packages, since .NET 8 is an LTS release. Unfortunately, there were some breaking changes in .NET 7[^1] that prevented us from upgrading, and making the required changes took us longer than we hoped. However, users could always use the latest version of .NET in their projects. Up until now, .NET 6 has been the minimum required version, but newer versions have always been supported from day one (even the pre-releases[^2]). In 4.4, the new minimum is now .NET 8, but as always, your projects can target the recent STS release .NET 9 and any newer version that is released in the future. @@ -43,9 +43,9 @@ Libraries tend to stay on older versions of .NET to support as many consumers as ## What about older Godot releases? -We encourage users to upgrade to the latest version of Godot. We work hard to prevent breaking compatibility, to ensure you can safely upgrade to the next version of Godot when it's released. Please, make sure to test the pre-releases and let us know if you find some bugs so we can fix them before the stable release. +We encourage users to upgrade to the latest version of Godot. We work hard to prevent breaking compatibility, to ensure you can safely upgrade to new versions of Godot when they are released. Please, make sure to test the pre-releases and let us know if you find some bugs so we can fix them before the stable release. -Older versions of Godot will keep targeting .NET 6, we won't change the target version in patch updates, since that would be a big breaking change. So if you still need to target .NET 6 you can stay on an older version of Godot, but we strongly encourage you to update to benefit from all the fixes and improvements included in the latest version of Godot and the .NET runtime. +Older versions of Godot will keep targeting .NET 6; we won't change the target version in patch updates, since that would be a big breaking change. If you still need to target .NET 6, you can stay on an older version of Godot, but we strongly encourage you to update to benefit from all the fixes and improvements included in the latest version of Godot and the .NET runtime. ## What about future .NET releases? @@ -65,4 +65,4 @@ Godot always supports the latest .NET version. The version targeted by Godot's C

You should always use the latest version of the .NET SDK even when targeting an older .NET version in your projects.

-We'll keep updating our C# packages to the latest LTS release as they are released. The next LTS release will be .NET 10 which will be released on November 2025. +We'll keep updating our C# packages to the latest LTS version as they are released. The next LTS release will be .NET 10, due in November 2025. From 4553ec4beaf8c3772046b3052a0c350312339426 Mon Sep 17 00:00:00 2001 From: Raul Santos Date: Wed, 18 Dec 2024 22:15:28 +0100 Subject: [PATCH 4/4] Fix link to PR that implements upgrading TFM --- collections/_article/godotsharp-packages-net8.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collections/_article/godotsharp-packages-net8.md b/collections/_article/godotsharp-packages-net8.md index 3a6024cde2..74b2b92549 100644 --- a/collections/_article/godotsharp-packages-net8.md +++ b/collections/_article/godotsharp-packages-net8.md @@ -25,7 +25,7 @@ With .NET 6 ending support, Godot C# packages in 4.4 will target the current LTS Starting with Godot 4.4, your project will need to target .NET 8 or newer, otherwise it will be incompatible with the new `GodotSharp` packages. You will still be able to use other libraries that target older .NET versions. -Existing projects will be automatically upgraded to target `net8.0` when they are opened with Godot 4.4. If your project already targets .NET 8 or newer, nothing will change. Thanks to [Andreia Gaita](https://github.com/shana) for implementing this in [GH-82927](https://github.com/godotengine/godot/pull/82927). +Existing projects will be automatically upgraded to target `net8.0` when they are opened with Godot 4.4. If your project already targets .NET 8 or newer, nothing will change. This was implemented in [GH-100195](https://github.com/godotengine/godot/pull/100195). ## What took so long?