-
Notifications
You must be signed in to change notification settings - Fork 146
Conversation
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 version seems better than the other one, it's possible to add the framework test to the workflow?
Which framework test? I'm not sure I follow |
This reverts commit ad018e1.
Test it twice with the different compiler directives. |
Done. Tests now target netcoreapp3.1 and net6.0, which test the netstandard 2.1 and net6.0 versions of neo.vm respectively. However, only the net 6 version of the code coverage report is uploaded to coveralls.io. I don't have access to the coveralls.io account and I'm not sure what would happen if I uploaded both coverage reports. |
@devhawk Do you have a timeframe for updating Neo and RpcClient? I'll gladly test it when ready. |
I'm hoping the full dotnet standard 2.1 compat work will be done for 3.6 release. There are three parts to this work:
Step 2 is the time consuming one. I have started it, but that work is blocked waiting on this PR. Step 3 should be trivial once step 2 is done. I will likely be able to provide test bits once they are ready |
Now that Neo.VM 3.5 has shipped, this is ready to merge @erikzhang @shargon |
Not sure if it's a transient issue or if it's an issue with |
@shargon can you merge this? |
This is an alternative version of #498. That PR uses C# 8.0. This PR uses C# 9.0. Technically, C# 9 is only supported on .NET 5 and later, but Microsoft itself uses approaches from this PR to target older frameworks from C# 9.0. (Example).
cc @erikzhang @shargon @igormcoelho
IsExternalInit
. This is a marker class with no code, and is only used by the compiler for tracking metadata.Other changes in this PR that match changes made in #498:
BitOperations.RotateLeft
,ReferenceEqualityComparer
andBigInteger.GetBitLength
on .NET Standard 2.1 (.NET 6 uses the BCL provided versions)new byte[]
instead ofGC.AllocateUninitializedArray
on .NET Standard 2.1 (.NET 6 continues to useGC.AllocateUninitializedArray
)IDictionary<K,V>.TryGetValue
implementationsTarjan.StrongConnectNonRecursive
uses mixed declarations and assignment in deconstruction, which is a C# 10 feature. As this is the only post C# 9.0 feature used across the entire assembly, I changed the code to separate assignment and declarations into separate statements. So(v, T? w, IEnumerator<T>? s, int n) = state;
becamev = state.node; var (_, w, s, n) = state;
Note, like #498, this PR should not be merged until after Neo 3.5 has shipped.