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

API diff between .NET 9 Preview1 and .NET 9 Preview2 #9220

Merged
merged 5 commits into from
Mar 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# API Difference 9.0-preview1 vs 9.0-preview2

API listing follows standard diff formatting.
Lines preceded by a '+' are additions and a '-' indicates removal.

* [Microsoft.AspNetCore.Authentication.OAuth](9.0-preview2_Microsoft.AspNetCore.Authentication.OAuth.md)
* [Microsoft.AspNetCore.Builder](9.0-preview2_Microsoft.AspNetCore.Builder.md)
* [Microsoft.AspNetCore.Components.Server](9.0-preview2_Microsoft.AspNetCore.Components.Server.md)
* [Microsoft.AspNetCore.Server.HttpSys](9.0-preview2_Microsoft.AspNetCore.Server.HttpSys.md)

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Microsoft.AspNetCore.Authentication.OAuth

``` diff
namespace Microsoft.AspNetCore.Authentication.OAuth {
public class OAuthOptions : RemoteAuthenticationOptions {
+ public IDictionary<string, string> AdditionalAuthorizationParameters { get; }
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Microsoft.AspNetCore.Builder

``` diff
namespace Microsoft.AspNetCore.Builder {
public static class ServerRazorComponentsEndpointConventionBuilderExtensions {
+ public static RazorComponentsEndpointConventionBuilder AddInteractiveServerRenderMode(this RazorComponentsEndpointConventionBuilder builder, Action<ServerComponentsEndpointOptions> configure);
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Microsoft.AspNetCore.Components.Server

``` diff
namespace Microsoft.AspNetCore.Components.Server {
+ public class ServerComponentsEndpointOptions {
+ public ServerComponentsEndpointOptions();
+ public Func<HttpContext, WebSocketAcceptContext, Task>? ConfigureWebSocketAcceptContext { get; set; }
+ public string ContentSecurityFrameAncestorsPolicy { get; set; }
+ public bool DisableWebSocketCompression { get; set; }
+ }
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Microsoft.AspNetCore.Server.HttpSys

``` diff
namespace Microsoft.AspNetCore.Server.HttpSys {
public sealed class AuthenticationManager {
+ public bool CaptureCredentials { get; set; }
+ public bool EnableKerberosCredentialCaching { get; set; }
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# API Difference 9.0-preview1 vs 9.0-preview2

API listing follows standard diff formatting.
Lines preceded by a '+' are additions and a '-' indicates removal.

* [System](9.0-preview2_System.md)
* [System.IO](9.0-preview2_System.IO.md)
* [System.Net.Http](9.0-preview2_System.Net.Http.md)
* [System.Numerics](9.0-preview2_System.Numerics.md)
* [System.Runtime.Intrinsics](9.0-preview2_System.Runtime.Intrinsics.md)
* [System.Runtime.Intrinsics.Arm](9.0-preview2_System.Runtime.Intrinsics.Arm.md)
* [System.Runtime.Intrinsics.X86](9.0-preview2_System.Runtime.Intrinsics.X86.md)
* [System.Security.Cryptography.X509Certificates](9.0-preview2_System.Security.Cryptography.X509Certificates.md)
* [System.Text.Json](9.0-preview2_System.Text.Json.md)
* [System.Text.Json.Serialization](9.0-preview2_System.Text.Json.Serialization.md)
* [System.Threading](9.0-preview2_System.Threading.md)

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# System.IO

``` diff
namespace System.IO {
public class FileStream : Stream {
+ public override void CopyTo(Stream destination, int bufferSize);
Copy link
Member

Choose a reason for hiding this comment

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

This is not new, the last time it was touched was 3 years ago:

image

Copy link
Member

Choose a reason for hiding this comment

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

Was it in the ref?

Copy link
Member

Choose a reason for hiding this comment

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

@stephentoub Yes, at least since since 2020:

image

BTW GH does not like the size of this file:

image

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

Choose a reason for hiding this comment

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

image

[Insert moral philosophy joke here]

}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# System.Net.Http

``` diff
namespace System.Net.Http {
public class HttpIOException : IOException {
+ public override string Message { get; }
}
public sealed class HttpProtocolException : HttpIOException {
- public HttpProtocolException(long errorCode, string? message, Exception? innerException);
+ public HttpProtocolException(long errorCode, string message, Exception? innerException);
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# System.Numerics
Copy link
Member

Choose a reason for hiding this comment

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

System.Numerics LGTM


``` diff
namespace System.Numerics {
public static class Vector {
+ public static Vector<T> CreateSequence<T>(T start, T step);
}
public readonly struct Vector<T> : IEquatable<Vector<T>>, IFormattable {
+ public static Vector<T> Indices { get; }
}
}
```

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# System.Runtime.Intrinsics.X86
Copy link
Member

Choose a reason for hiding this comment

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

System.Runtime.Intrinsics.X86 LGTM


``` diff
namespace System.Runtime.Intrinsics.X86 {
public abstract class Avx512DQ : Avx512F {
+ public static Vector256<float> ConvertToVector256Single(Vector512<long> value, FloatRoundingMode mode);
+ public static Vector256<float> ConvertToVector256Single(Vector512<ulong> value, FloatRoundingMode mode);
+ public static Vector512<double> ConvertToVector512Double(Vector512<long> value, FloatRoundingMode mode);
+ public static Vector512<double> ConvertToVector512Double(Vector512<ulong> value, FloatRoundingMode mode);
+ public static Vector512<long> ConvertToVector512Int64(Vector256<float> value, FloatRoundingMode mode);
+ public static Vector512<long> ConvertToVector512Int64(Vector512<double> value, FloatRoundingMode mode);
+ public static Vector512<ulong> ConvertToVector512UInt64(Vector256<float> value, FloatRoundingMode mode);
+ public static Vector512<ulong> ConvertToVector512UInt64(Vector512<double> value, FloatRoundingMode mode);
}
public abstract class Avx512F : Avx2 {
+ public static Vector512<float> Add(Vector512<float> left, Vector512<float> right, FloatRoundingMode mode);
+ public static Vector128<double> AddScalar(Vector128<double> left, Vector128<double> right, FloatRoundingMode mode);
+ public static Vector128<float> AddScalar(Vector128<float> left, Vector128<float> right, FloatRoundingMode mode);
+ public static Vector128<float> ConvertScalarToVector128Single(Vector128<float> upper, int value, FloatRoundingMode mode);
+ public static Vector128<float> ConvertScalarToVector128Single(Vector128<float> upper, Vector128<double> value, FloatRoundingMode mode);
+ public static Vector128<float> ConvertScalarToVector128Single(Vector128<float> upper, uint value, FloatRoundingMode mode);
+ public static int ConvertToInt32(Vector128<double> value, FloatRoundingMode mode);
+ public static int ConvertToInt32(Vector128<float> value, FloatRoundingMode mode);
+ public static uint ConvertToUInt32(Vector128<double> value, FloatRoundingMode mode);
+ public static uint ConvertToUInt32(Vector128<float> value, FloatRoundingMode mode);
+ public static Vector256<int> ConvertToVector256Int32(Vector512<double> value, FloatRoundingMode mode);
+ public static Vector256<float> ConvertToVector256Single(Vector512<double> value, FloatRoundingMode mode);
+ public static Vector256<uint> ConvertToVector256UInt32(Vector512<double> value, FloatRoundingMode mode);
+ public static Vector512<int> ConvertToVector512Int32(Vector512<float> value, FloatRoundingMode mode);
+ public static Vector512<float> ConvertToVector512Single(Vector512<int> value, FloatRoundingMode mode);
+ public static Vector512<float> ConvertToVector512Single(Vector512<uint> value, FloatRoundingMode mode);
+ public static Vector512<uint> ConvertToVector512UInt32(Vector512<float> value, FloatRoundingMode mode);
+ public static Vector512<double> Divide(Vector512<double> left, Vector512<double> right, FloatRoundingMode mode);
+ public static Vector512<float> Divide(Vector512<float> left, Vector512<float> right, FloatRoundingMode mode);
+ public static Vector128<double> DivideScalar(Vector128<double> left, Vector128<double> right, FloatRoundingMode mode);
+ public static Vector128<float> DivideScalar(Vector128<float> left, Vector128<float> right, FloatRoundingMode mode);
+ public static Vector512<double> FusedMultiplyAdd(Vector512<double> a, Vector512<double> b, Vector512<double> c, FloatRoundingMode mode);
+ public static Vector512<float> FusedMultiplyAdd(Vector512<float> a, Vector512<float> b, Vector512<float> c, FloatRoundingMode mode);
+ public static Vector512<double> FusedMultiplyAddNegated(Vector512<double> a, Vector512<double> b, Vector512<double> c, FloatRoundingMode mode);
+ public static Vector512<float> FusedMultiplyAddNegated(Vector512<float> a, Vector512<float> b, Vector512<float> c, FloatRoundingMode mode);
+ public static Vector128<double> FusedMultiplyAddNegatedScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c, FloatRoundingMode mode);
+ public static Vector128<float> FusedMultiplyAddNegatedScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c, FloatRoundingMode mode);
+ public static Vector128<double> FusedMultiplyAddScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c, FloatRoundingMode mode);
+ public static Vector128<float> FusedMultiplyAddScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c, FloatRoundingMode mode);
+ public static Vector512<double> FusedMultiplyAddSubtract(Vector512<double> a, Vector512<double> b, Vector512<double> c, FloatRoundingMode mode);
+ public static Vector512<float> FusedMultiplyAddSubtract(Vector512<float> a, Vector512<float> b, Vector512<float> c, FloatRoundingMode mode);
+ public static Vector512<double> FusedMultiplySubtract(Vector512<double> a, Vector512<double> b, Vector512<double> c, FloatRoundingMode mode);
+ public static Vector512<float> FusedMultiplySubtract(Vector512<float> a, Vector512<float> b, Vector512<float> c, FloatRoundingMode mode);
+ public static Vector512<double> FusedMultiplySubtractAdd(Vector512<double> a, Vector512<double> b, Vector512<double> c, FloatRoundingMode mode);
+ public static Vector512<float> FusedMultiplySubtractAdd(Vector512<float> a, Vector512<float> b, Vector512<float> c, FloatRoundingMode mode);
+ public static Vector512<double> FusedMultiplySubtractNegated(Vector512<double> a, Vector512<double> b, Vector512<double> c, FloatRoundingMode mode);
+ public static Vector512<float> FusedMultiplySubtractNegated(Vector512<float> a, Vector512<float> b, Vector512<float> c, FloatRoundingMode mode);
+ public static Vector128<double> FusedMultiplySubtractNegatedScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c, FloatRoundingMode mode);
+ public static Vector128<float> FusedMultiplySubtractNegatedScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c, FloatRoundingMode mode);
+ public static Vector128<double> FusedMultiplySubtractScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c, FloatRoundingMode mode);
+ public static Vector128<float> FusedMultiplySubtractScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c, FloatRoundingMode mode);
+ public static Vector512<double> Multiply(Vector512<double> left, Vector512<double> right, FloatRoundingMode mode);
+ public static Vector512<float> Multiply(Vector512<float> left, Vector512<float> right, FloatRoundingMode mode);
+ public static Vector128<double> MultiplyScalar(Vector128<double> left, Vector128<double> right, FloatRoundingMode mode);
+ public static Vector128<float> MultiplyScalar(Vector128<float> left, Vector128<float> right, FloatRoundingMode mode);
+ public static Vector512<double> Scale(Vector512<double> left, Vector512<double> right, FloatRoundingMode mode);
+ public static Vector512<float> Scale(Vector512<float> left, Vector512<float> right, FloatRoundingMode mode);
+ public static Vector128<double> ScaleScalar(Vector128<double> left, Vector128<double> right, FloatRoundingMode mode);
+ public static Vector128<float> ScaleScalar(Vector128<float> left, Vector128<float> right, FloatRoundingMode mode);
+ public static Vector512<double> Sqrt(Vector512<double> value, FloatRoundingMode mode);
+ public static Vector512<float> Sqrt(Vector512<float> value, FloatRoundingMode mode);
+ public static Vector128<double> SqrtScalar(Vector128<double> upper, Vector128<double> value, FloatRoundingMode mode);
+ public static Vector128<float> SqrtScalar(Vector128<float> upper, Vector128<float> value, FloatRoundingMode mode);
+ public static Vector512<double> Subtract(Vector512<double> left, Vector512<double> right, FloatRoundingMode mode);
+ public static Vector512<float> Subtract(Vector512<float> left, Vector512<float> right, FloatRoundingMode mode);
+ public static Vector128<double> SubtractScalar(Vector128<double> left, Vector128<double> right, FloatRoundingMode mode);
+ public static Vector128<float> SubtractScalar(Vector128<float> left, Vector128<float> right, FloatRoundingMode mode);
public new abstract class X64 : Avx2.X64 {
+ public static Vector128<double> ConvertScalarToVector128Double(Vector128<double> upper, long value, FloatRoundingMode mode);
+ public static Vector128<double> ConvertScalarToVector128Double(Vector128<double> upper, ulong value, FloatRoundingMode mode);
+ public static Vector128<float> ConvertScalarToVector128Single(Vector128<float> upper, long value, FloatRoundingMode mode);
+ public static Vector128<float> ConvertScalarToVector128Single(Vector128<float> upper, ulong value, FloatRoundingMode mode);
+ public static long ConvertToInt64(Vector128<double> value, FloatRoundingMode mode);
+ public static long ConvertToInt64(Vector128<float> value, FloatRoundingMode mode);
+ public static ulong ConvertToUInt64(Vector128<double> value, FloatRoundingMode mode);
+ public static ulong ConvertToUInt64(Vector128<float> value, FloatRoundingMode mode);
}
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# System.Runtime.Intrinsics
Copy link
Member

Choose a reason for hiding this comment

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

System.Runtime.Intrinsics LGTM


``` diff
namespace System.Runtime.Intrinsics {
public static class Vector128 {
+ public static Vector128<T> CreateSequence<T>(T start, T step);
}
public readonly struct Vector128<T> : IEquatable<Vector128<T>> {
+ public static Vector128<T> Indices { get; }
}
public static class Vector256 {
+ public static Vector256<T> CreateSequence<T>(T start, T step);
}
public readonly struct Vector256<T> : IEquatable<Vector256<T>> {
+ public static Vector256<T> Indices { get; }
}
public static class Vector512 {
+ public static Vector512<T> CreateSequence<T>(T start, T step);
}
public readonly struct Vector512<T> : IEquatable<Vector512<T>> {
+ public static Vector512<T> Indices { get; }
}
public static class Vector64 {
+ public static Vector64<T> CreateSequence<T>(T start, T step);
}
public readonly struct Vector64<T> : IEquatable<Vector64<T>> {
+ public static Vector64<T> Indices { get; }
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# System.Security.Cryptography.X509Certificates

``` diff
namespace System.Security.Cryptography.X509Certificates {
public enum X509SubjectKeyIdentifierHashAlgorithm {
+ Sha256 = 3,
+ Sha384 = 4,
+ Sha512 = 5,
+ ShortSha256 = 6,
+ ShortSha384 = 7,
+ ShortSha512 = 8,
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# System.Text.Json.Serialization

``` diff
namespace System.Text.Json.Serialization {
public sealed class JsonSourceGenerationOptionsAttribute : JsonAttribute {
+ public bool AllowOutOfOrderMetadataProperties { get; set; }
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# System.Text.Json

``` diff
namespace System.Text.Json {
- public struct JsonReaderState
+ public readonly struct JsonReaderState
public sealed class JsonSerializerOptions {
+ public bool AllowOutOfOrderMetadataProperties { get; set; }
Copy link
Member

Choose a reason for hiding this comment

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

STJ changes LGTM.

}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# System.Threading

``` diff
namespace System.Threading {
public static class Interlocked {
+ public static byte CompareExchange(ref byte location1, byte value, byte comparand);
+ public static short CompareExchange(ref short location1, short value, short comparand);
+ public static sbyte CompareExchange(ref sbyte location1, sbyte value, sbyte comparand);
+ public static ushort CompareExchange(ref ushort location1, ushort value, ushort comparand);
+ public static byte Exchange(ref byte location1, byte value);
+ public static short Exchange(ref short location1, short value);
+ public static sbyte Exchange(ref sbyte location1, sbyte value);
+ public static ushort Exchange(ref ushort location1, ushort value);
Comment on lines +6 to +13
Copy link
Member

Choose a reason for hiding this comment

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

The unsigned overloads have an [System.CLSCompliantAttribute(false)] attribute on them, should that also be shown here? LGTM otherwise.

Copy link
Member Author

Choose a reason for hiding this comment

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

If the attribute was freshly added or removed, it should've showed up in the diff. Was that the case?

These are the only attributes I'm explicitly excluding (by request from past api diff PRs):
https://github.com/carlossanlop/arcade/blob/AsmDiffUpdates/src/Microsoft.DotNet.AsmDiff/AttributesToExclude.txt

I opened this issue to track the request: dotnet/arcade#14585

Copy link
Member

Choose a reason for hiding this comment

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

It looks like the APIs were added along with the attribute.

}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# System

``` diff
namespace System {
public abstract class Delegate : ICloneable, ISerializable {
+ public bool HasSingleTarget { get; }
+ public static Delegate.InvocationListEnumerator<TDelegate> EnumerateInvocationList<TDelegate>(TDelegate? d) where TDelegate : Delegate;
+ public struct InvocationListEnumerator<TDelegate> where TDelegate : Delegate {
+ public TDelegate Current { get; }
+ public Delegate.InvocationListEnumerator<TDelegate> GetEnumerator();
+ public bool MoveNext();
+ }
}
public static class MemoryExtensions {
- public static int LastIndexOf<T>(this Span<T> span, ReadOnlySpan<T> value) where T : IEquatable<T?>;
+ public static int LastIndexOf<T>(this Span<T> span, ReadOnlySpan<T> value) where T : IEquatable<T>?;
}
public readonly ref struct ReadOnlySpan<T> {
+ public static ReadOnlySpan<T> CastUp<TDerived>(ReadOnlySpan<TDerived> items) where TDerived : class?, T?;
}
public class Uri : IFormattable, ISerializable, ISpanFormattable {
+ public static string EscapeDataString(ReadOnlySpan<char> charsToEscape);
+ public static bool TryEscapeDataString(ReadOnlySpan<char> charsToEscape, Span<char> destination, out int charsWritten);
+ public static bool TryUnescapeDataString(ReadOnlySpan<char> charsToUnescape, Span<char> destination, out int charsWritten);
+ public static string UnescapeDataString(ReadOnlySpan<char> charsToUnescape);
}
}
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# API Difference 9.0-preview1 vs 9.0-preview2

API listing follows standard diff formatting.
Lines preceded by a '+' are additions and a '-' indicates removal.

* [System.Drawing](9.0-preview2_System.Drawing.md)
* [System.Drawing.Drawing2D](9.0-preview2_System.Drawing.Drawing2D.md)
* [System.Drawing.Imaging](9.0-preview2_System.Drawing.Imaging.md)
* [System.Drawing.Imaging.Effects](9.0-preview2_System.Drawing.Imaging.Effects.md)
* [System.Drawing.Printing](9.0-preview2_System.Drawing.Printing.md)
* [System.Windows.Forms](9.0-preview2_System.Windows.Forms.md)
* [System.Windows.Forms.Design](9.0-preview2_System.Windows.Forms.Design.md)
* [System.Windows.Markup](9.0-preview2_System.Windows.Markup.md)
* [Windows.Win32.System.Com](9.0-preview2_Windows.Win32.System.Com.md)
* [Windows.Win32.UI.Controls.Dialogs](9.0-preview2_Windows.Win32.UI.Controls.Dialogs.md)

Loading
Loading