-
-
Notifications
You must be signed in to change notification settings - Fork 21.3k
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
Merge .NET 6 branch with master #64089
Conversation
3056383
to
4b217ee
Compare
@neikeq testing the editor out now on Linux, if I spot any issues is it best to keep a hold of them until this PR has been merged, then create a new issue? Don't want to spam this thread with stuff that's not related to the merge. |
For Linux issues I think it's better to wait for this to be merged, as it's the platform I've tested most and I think it's in a good enough state. But it's fine if it's something serious. |
FWIW, I sent @Byteron a binary I compiled on Windows using the VS2022 x64 developer command prompt, and that worked as expected on their end. Unsure what the difference in build environments was, but that build is working pretty well on Windows (after applying the Just a quick report: Windows users were noticing However, on my Linux machine I noticed that |
I have a similar experience with Windows built using MSVC |
modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/MarshalUtils.cs
Show resolved
Hide resolved
modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertiesGenerator.cs
Outdated
Show resolved
Hide resolved
modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptMethodsGenerator.cs
Outdated
Show resolved
Hide resolved
modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators.Sample/ExportedProperties.cs
Show resolved
Hide resolved
@reduz
Can someone elaborate on this? Very curious! |
This is likely about the "Editor and export template unification (no more Classic vs C# versions)" task in the roadmap. While most of the work was already done in the process of moving to .NET 6, it's still not complete. Check the description in the roadmap task for what's missing. |
@neikeq I have to say thank you. I just tested the Dotnet6 version on Windows, doing a simple HTTPS connection, and it worked perfectly! This solves a long standing issue with bug #36958 that affects Godot, and Unity. Congrats on the work, and continued work on bringing Dotnet 6 into the Godot engine. |
e1e1a75
to
7151ed4
Compare
I added the
This should be fixed now.
I mainly use Linux and haven't experienced this. @lewiji It could be specific to your project. I can have a look if you don't mind sharing. |
|
||
namespace Godot.SourceGenerators | ||
{ | ||
// TODO: May need to think about compatibility here. Could Godot change these values between minor versions? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There shouldn't be changes to the existing enum values between minor versions, but there might be new enum values that would be added.
There might be compat breaking changes before 4.0 is released though as especially PropertyHint
and PropertyUsageFlags
might benefit from a cleanup pass to remove obsolete ones / rename some / reorder in a better structure.
For VariantType
, I think it's unlikely to change at this stage.
Would CI pick it up if any enum value is added to core and not reflected here, or if values go out of sync?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can generate these enums in bindings_generator.cpp
just like we do for the API. This way, it will be up-to-date, and if there are usages of removed values in the project, the CI will fail as I added a step to build the C# projects.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great!
Thanks @neikeq for the amazing work porting Godot to .NET 6, and to everyone else involved for the support testing, fixing and improving the dotnet6
branch.
Let's merge and move further bug reports and enhancement proposals to their dedicated issues.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is ready to be merged, I gave it a quick last check and didn't find any big problems and it also seems to fix all issues mentioned (at least I couldn't reproduce them in Linux).
Just wanted to add a few comments but they're not blockers.
EDIT: Oops, it was merged while I was reviewing 😄
modules/mono/glue/GodotSharp/GodotSharp/Core/Bridge/GodotSerializationInfo.cs
Show resolved
Hide resolved
The documentation needs to be updated to account for the changes in this PR. |
Does it work only unmanaged delegate ( like I hope it works for Godot 4.x, too. I expected Unity3D has only .Net Standard/Core 2.x and Godot 4.x uses .Net 6.x, 7.x or 8.x ??? Thanks! |
Godot 4.2.rc1.mono, I still can't use any .Net function which requires SSL/TLS authentication in published apps to |
This isn't the same issue as what you are experiencing in 4.2. The issue previously, was that with 3.x, it was using the Mono Project's release of the Mono Runtime for Linux, and there is an outstanding issue in the 3.x tree, that any attempt to use C# SSL Network Communications would fail. By Default, Mono does not define a Central Repo of Master Authority Certificates in which to validate SSL Certificates from the web, and will not use the one installed on the host operating system, causing SSL Certificate validation to always fail. After reviewing the discussion on #84559, the issue is not this. It is the fact that the Dotnet Runtime cannot locate libssl.so, in order to access the functions needed to do any SSL cryptography, or Communication. Which is an issue that is entirely different. This is the first release of Godot 4.x tree, that has been able to be exported to Android, so there are still going to be outstanding issues with that. But make sure you look through the bug reports, to understand what specifically is going on. |
The changes from the
dotnet6
branch are ready to be merged, and future development should happen in the master branch.I rebased the changes carefully to make sure commits can be bisected. I was careful not to remove any changes merged to master while I was working on this branch, but some things changed a lot during that time. As such, I had to re-write quite a few of these changes, so there's a risk for regression there.
For building and testing these changes, please read the README I added to the module. It may be of help to avoid confusion now that we distribute our assemblies as NuGet packages.
If you've been used C# on the master branch recently, expect heavy breaking changes. Don't expect projects to run at all out of the box without fixes. Make sure to back up your projects before attempting to open them. Remember this is still unstable.
I don't know if the CI changes are welcome. The main difference is the use of
actions/setup-dotnet@v1
and that it now builds the C# projects after generating the glue. In the future,setup-dotnet
will only be required for building the C# projects, so if doing that is not desired then we could get rid of it. However, right now it's still needed for building the engine (until we replace ourlibdotnet
dependency that's used by the Godot editor to locate the .NET Sdk).