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

.NET 9 #3576

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open

.NET 9 #3576

wants to merge 9 commits into from

Conversation

chenzhitong
Copy link
Member

update to .net 9

@@ -126,7 +126,7 @@ public ScriptBuilder EmitPush(bool value)
/// <returns>A reference to this instance after the emit operation has completed.</returns>
public ScriptBuilder EmitPush(ReadOnlySpan<byte> data)
{
if (data == null)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Data Length == 0 is empty too?

@@ -54,7 +54,7 @@ public void TestGetBitLength()
var random = new Random();

// Big Number (net standard didn't work)
VerifyGetBitLength(BigInteger.One << 32 << int.MaxValue, 2147483680);
Assert.ThrowsException<OverflowException>(() => VerifyGetBitLength(BigInteger.One << 32 << int.MaxValue, 2147483680));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this change? the behavor is no longer the same?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BigInteger.One << 32 << int.MaxValue will throw OverflowException in .net 9

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then this test is useless

@@ -25,7 +25,7 @@ public class UT_ByteExtensions
public void TestToHexString()
{
byte[] nullStr = null;
Assert.ThrowsException<NullReferenceException>(() => nullStr.ToHexString());
Assert.ThrowsException<ArgumentNullException>(() => nullStr.ToHexString());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this mean Net9.0 has changed the exception type?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this mean Net9.0 has changed the exception type?

ToHexString uses Convert.ToHexStrongLower when run with NET.9.
May need to add an argument null-check to keep same semantics.

@cschuchardt88
Copy link
Member

cschuchardt88 commented Nov 14, 2024

I rather not go to dotnet 9.0 it removes a lot of stuff and changes the way things work. and community is not to happy about it. Also its a Short Term Release.

Also you missed global.json

@chenzhitong
Copy link
Member Author

I rather not go to dotnet 9.0 it removes a lot of stuff and changes the way things work. and community is not to happy about it. Also its a Short Term Release.

Also you missed global.json

I didn't miss global.json

{
  "sdk": {
    "version": "9.0.100",
    "rollForward": "latestFeature",
    "allowPrerelease": false
  }
}

I’m not sure whether to upgrade to .NET 9. I'll leave it up to you core developers to decide!

@vncoelho
Copy link
Member

I am in favor, next year we move to long term again and so on.

@shargon
Copy link
Member

shargon commented Nov 14, 2024

I am in favor, next year we move to long term again and so on.

me too

@cschuchardt88
Copy link
Member

This will break the functionally of RestServer

@cschuchardt88
Copy link
Member

I’m not sure whether to upgrade to .NET 9. I'll leave it up to you core developers to decide!

No dont leave it up to them. If it's dotnet 9.0 then have to upgrade. there is no way around it.

cschuchardt88
cschuchardt88 previously approved these changes Nov 14, 2024
Copy link
Member

@cschuchardt88 cschuchardt88 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you changing *.cs files?

@chenzhitong
Copy link
Member Author

Why are you changing *.cs files?

Because some of the exception types change, and some of the dotnet format rules change.

@shargon
Copy link
Member

shargon commented Nov 15, 2024

I’m not sure whether to upgrade to .NET 9. I'll leave it up to you core developers to decide!

No dont leave it up to them. If it's dotnet 9.0 then have to upgrade. there is no way around it.

That's true

@@ -126,7 +126,8 @@ public ScriptBuilder EmitPush(bool value)
/// <returns>A reference to this instance after the emit operation has completed.</returns>
public ScriptBuilder EmitPush(ReadOnlySpan<byte> data)
{
if (data == null)
ReadOnlySpan<byte> nullData = null;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because if (data == null) will fail the format check in .net 9.

@@ -28,7 +29,8 @@ public static bool NotNull(this StackItem item)

public static string ToBase64(this ReadOnlySpan<byte> item)
{
return item == null ? String.Empty : Convert.ToBase64String(item);
ReadOnlySpan<byte> nullData = null;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because item == null will fail the format check in .net 9.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add test to ensure if IsEmpty check null and not Length != 0

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Running dotnet format automatically changes item == null to item.IsEmpty. If you use item.IsEmpty, the unit test will fail, I tried it. So I've changed it to ReadOnlySpan<byte> nullData = null; item == nullData;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just edit the .editorconfig and turn that off.

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

Successfully merging this pull request may close these issues.

6 participants