Xamarin.WatchOS SDK API diff: 12.14.0 vs 12.16.1

Mono.Data.Sqlite.dll

Namespace Mono.Data.Sqlite

Type Changed: Mono.Data.Sqlite.SqliteCommand

Added interface:

System.IAsyncDisposable

Type Changed: Mono.Data.Sqlite.SqliteConnection

Added interface:

System.IAsyncDisposable

Type Changed: Mono.Data.Sqlite.SqliteDataReader

Added interface:

System.IAsyncDisposable

Type Changed: Mono.Data.Sqlite.SqliteTransaction

Added interface:

System.IAsyncDisposable

MonoTouch.NUnitLite.dll

Namespace MonoTouch.NUnit

Type Changed: MonoTouch.NUnit.NUnitOutputTextWriter

Added interface:

System.IAsyncDisposable

Type Changed: MonoTouch.NUnit.TcpTextWriter

Added interface:

System.IAsyncDisposable

Namespace NUnit.Framework.Api

Type Changed: NUnit.Framework.Api.ResultState

Added method:

public override bool Equals (object o);

Namespace NUnit.Framework.Constraints

Type Changed: NUnit.Framework.Constraints.MessageWriter

Added interface:

System.IAsyncDisposable

Namespace NUnit.Framework.Internal

Type Changed: NUnit.Framework.Internal.Test

Modified fields:

-[NonSerialized]
++[NonSerialized]
-protected System.Reflection.MethodInfo[] setUpMethods;
++protected System.Reflection.MethodInfo[] setUpMethods;
-[NonSerialized]
++[NonSerialized]
-protected System.Reflection.MethodInfo[] tearDownMethods;
++protected System.Reflection.MethodInfo[] tearDownMethods;

Type Changed: NUnit.Framework.Internal.TextMessageWriter

Added interface:

System.IAsyncDisposable

Namespace NUnitLite.Runner

Type Changed: NUnitLite.Runner.CommandLineOptions

Added properties:

public string Android { get; }
public string Remote { get; }
public string WebAssembly { get; }
public string iOS { get; }

Type Changed: NUnitLite.Runner.ConsoleWriter

Added interface:

System.IAsyncDisposable

Type Changed: NUnitLite.Runner.DebugWriter

Added interface:

System.IAsyncDisposable

mscorlib.dll

Namespace System

Type Changed: System.AppDomainSetup

Added properties:

public string AppDomainManagerAssembly { get; set; }
public string AppDomainManagerType { get; set; }
public string[] PartialTrustVisibleAssemblies { get; set; }

Type Changed: System.Decimal

Modified methods:

-public Decimal Parse (System.ReadOnlySpan<char> s, Globalization.NumberStyles style = 7, IFormatProvider provider = NULL)
+public Decimal Parse (System.ReadOnlySpan<char> s, Globalization.NumberStyles style = 111, IFormatProvider provider = NULL)

Type Changed: System.MemoryExtensions

Added methods:

public static System.ReadOnlyMemory<char> AsMemory (this string text, Index startIndex);
public static System.ReadOnlyMemory<char> AsMemory (this string text, Range range);
public static System.Memory<T> AsMemory<T> (this T[] array, Index startIndex);
public static System.Memory<T> AsMemory<T> (this T[] array, Range range);
public static System.Span<T> AsSpan<T> (this System.ArraySegment<T> segment, Index startIndex);
public static System.Span<T> AsSpan<T> (this System.ArraySegment<T> segment, Range range);
public static System.Span<T> AsSpan<T> (this T[] array, Index startIndex);
public static System.Span<T> AsSpan<T> (this T[] array, Range range);

Type Changed: System.Memory`1

Added interface:

System.IEquatable<System.Memory<T>>

Type Changed: System.ReadOnlyMemory`1

Added interface:

System.IEquatable<System.ReadOnlyMemory<T>>

New Type: System.Index

public struct Index, System.IEquatable<Index> {
	// constructors
	public Index (int value, bool fromEnd);
	// properties
	public static Index End { get; }
	public bool IsFromEnd { get; }
	public static Index Start { get; }
	public int Value { get; }
	// methods
	public virtual bool Equals (Index other);
	public override bool Equals (object value);
	public static Index FromEnd (int value);
	public static Index FromStart (int value);
	public override int GetHashCode ();
	public int GetOffset (int length);
	public override string ToString ();
	public static Index op_Implicit (int value);
}

New Type: System.Range

public struct Range, System.IEquatable<Range> {
	// constructors
	public Range (Index start, Index end);
	// properties
	public static Range All { get; }
	public Index End { get; }
	public Index Start { get; }
	// methods
	public static Range EndAt (Index end);
	public override bool Equals (object value);
	public virtual bool Equals (Range other);
	public override int GetHashCode ();
	public System.ValueTuple<Int32,System.Int32> GetOffsetAndLength (int length);
	public static Range StartAt (Index start);
	public override string ToString ();
}

Namespace System.Diagnostics.Tracing

Type Changed: System.Diagnostics.Tracing.EventCounter

Modified base type:

-System.Object
+System.Diagnostics.Tracing.DiagnosticCounter

Removed method:

public virtual void Dispose ();

Added method:

public void WriteMetric (double value);

Type Changed: System.Diagnostics.Tracing.EventWrittenEventArgs

Added properties:

public long OSThreadId { get; }
public System.DateTime TimeStamp { get; }

New Type: System.Diagnostics.Tracing.DiagnosticCounter

public abstract class DiagnosticCounter : System.IDisposable {
	// properties
	public string DisplayName { get; set; }
	public string DisplayUnits { get; set; }
	public EventSource EventSource { get; }
	public string Name { get; }
	// methods
	public void AddMetadata (string key, string value);
	public virtual void Dispose ();
}

New Type: System.Diagnostics.Tracing.IncrementingEventCounter

public class IncrementingEventCounter : System.Diagnostics.Tracing.DiagnosticCounter, System.IDisposable {
	// constructors
	public IncrementingEventCounter (string name, EventSource eventSource);
	// properties
	public System.TimeSpan DisplayRateTimeScale { get; set; }
	// methods
	public void Increment (double increment);
}

New Type: System.Diagnostics.Tracing.IncrementingPollingCounter

public class IncrementingPollingCounter : System.Diagnostics.Tracing.DiagnosticCounter, System.IDisposable {
	// constructors
	public IncrementingPollingCounter (string name, EventSource eventSource, System.Func<double> totalValueProvider);
	// properties
	public System.TimeSpan DisplayRateTimeScale { get; set; }
}

New Type: System.Diagnostics.Tracing.PollingCounter

public class PollingCounter : System.Diagnostics.Tracing.DiagnosticCounter, System.IDisposable {
	// constructors
	public PollingCounter (string name, EventSource eventSource, System.Func<double> metricProvider);
}

Namespace System.IO

Type Changed: System.IO.BinaryReader

Added methods:

public virtual int Read (System.Span<byte> buffer);
public virtual int Read (System.Span<char> buffer);

Type Changed: System.IO.BinaryWriter

Added interface:

System.IAsyncDisposable

Added methods:

public virtual System.Threading.Tasks.ValueTask DisposeAsync ();
public virtual void Write (System.ReadOnlySpan<byte> buffer);
public virtual void Write (System.ReadOnlySpan<char> buffer);

Type Changed: System.IO.BufferedStream

Added interface:

System.IAsyncDisposable

Added method:

public override System.Threading.Tasks.ValueTask DisposeAsync ();

Type Changed: System.IO.FileStream

Added interface:

System.IAsyncDisposable

Modified properties:

 public ---virtual--- string Name { get; }

Type Changed: System.IO.MemoryStream

Added interface:

System.IAsyncDisposable

Type Changed: System.IO.Path

Added methods:

public static System.ReadOnlySpan<char> GetExtension (System.ReadOnlySpan<char> path);
public static System.ReadOnlySpan<char> GetFileNameWithoutExtension (System.ReadOnlySpan<char> path);
public static string GetFullPath (string path, string basePath);
public static System.ReadOnlySpan<char> GetPathRoot (System.ReadOnlySpan<char> path);
public static string GetRelativePath (string relativeTo, string path);
public static bool HasExtension (System.ReadOnlySpan<char> path);
public static bool IsPathFullyQualified (System.ReadOnlySpan<char> path);
public static bool IsPathFullyQualified (string path);

Type Changed: System.IO.Stream

Added interface:

System.IAsyncDisposable

Added method:

public virtual System.Threading.Tasks.ValueTask DisposeAsync ();

Type Changed: System.IO.StreamWriter

Added interface:

System.IAsyncDisposable

Added method:

public override System.Threading.Tasks.ValueTask DisposeAsync ();

Type Changed: System.IO.StringWriter

Added interface:

System.IAsyncDisposable

Type Changed: System.IO.TextWriter

Added interface:

System.IAsyncDisposable

Added method:

public virtual System.Threading.Tasks.ValueTask DisposeAsync ();

Type Changed: System.IO.UnmanagedMemoryStream

Added interface:

System.IAsyncDisposable

Namespace System.IO.IsolatedStorage

Type Changed: System.IO.IsolatedStorage.IsolatedStorage

Modified methods:

-protected abstract System.Security.Permissions.IsolatedStoragePermission GetPermission (System.Security.PermissionSet ps)
+protected virtual System.Security.Permissions.IsolatedStoragePermission GetPermission (System.Security.PermissionSet ps)

Type Changed: System.IO.IsolatedStorage.IsolatedStorageFileStream

Added interface:

System.IAsyncDisposable

Namespace System.Numerics

Type Changed: System.Numerics.Vector`1

Added constructor:

public Vector`1 (System.Span<T> values);

Namespace System.Reflection

Type Changed: System.Reflection.Assembly

Modified constructors:

-protected Assembly ()
+public Assembly ()

Added method:

public virtual System.Type[] GetForwardedTypes ();

Namespace System.Reflection.Emit

Type Changed: System.Reflection.Emit.AssemblyBuilder

Added properties:

public override string EscapedCodeBase { get; }
public override System.Security.Policy.Evidence Evidence { get; }

Added method:

public override string ToString ();

Type Changed: System.Reflection.Emit.EventToken

Added interface:

System.IEquatable<EventToken>

Type Changed: System.Reflection.Emit.FieldToken

Added interface:

System.IEquatable<FieldToken>

Type Changed: System.Reflection.Emit.Label

Added interface:

System.IEquatable<Label>

Type Changed: System.Reflection.Emit.MethodToken

Added interface:

System.IEquatable<MethodToken>

Type Changed: System.Reflection.Emit.OpCode

Added interface:

System.IEquatable<OpCode>

Type Changed: System.Reflection.Emit.ParameterToken

Added interface:

System.IEquatable<ParameterToken>

Type Changed: System.Reflection.Emit.PropertyToken

Added interface:

System.IEquatable<PropertyToken>

Type Changed: System.Reflection.Emit.SignatureToken

Added interface:

System.IEquatable<SignatureToken>

Type Changed: System.Reflection.Emit.StringToken

Added interface:

System.IEquatable<StringToken>

Type Changed: System.Reflection.Emit.TypeToken

Added interface:

System.IEquatable<TypeToken>

Namespace System.Runtime

New Type: System.Runtime.AmbiguousImplementationException

[Serializable]
public sealed class AmbiguousImplementationException : System.Exception, Serialization.ISerializable {
	// constructors
	public AmbiguousImplementationException ();
	public AmbiguousImplementationException (string message);
	public AmbiguousImplementationException (string message, System.Exception innerException);
}

Namespace System.Runtime.CompilerServices

Type Changed: System.Runtime.CompilerServices.RuntimeFeature

Added field:

public static const string DefaultImplementationsOfInterfaces = "DefaultImplementationsOfInterfaces";

Added properties:

public static bool IsDynamicCodeCompiled { get; }
public static bool IsDynamicCodeSupported { get; }

Type Changed: System.Runtime.CompilerServices.RuntimeHelpers

Added method:

public static T[] GetSubArray<T> (T[] array, System.Range range);

New Type: System.Runtime.CompilerServices.EnumeratorCancellationAttribute

public sealed class EnumeratorCancellationAttribute : System.Attribute {
	// constructors
	public EnumeratorCancellationAttribute ();
}

New Type: System.Runtime.CompilerServices.SwitchExpressionException

[Serializable]
public sealed class SwitchExpressionException : System.InvalidOperationException, System.Runtime.Serialization.ISerializable {
	// constructors
	public SwitchExpressionException ();
	public SwitchExpressionException (System.Exception innerException);
	public SwitchExpressionException (object unmatchedValue);
	public SwitchExpressionException (string message);
	public SwitchExpressionException (string message, System.Exception innerException);
	// properties
	public override string Message { get; }
	public object UnmatchedValue { get; }
	// methods
	public override void GetObjectData (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
}

Namespace System.Runtime.InteropServices

Type Changed: System.Runtime.InteropServices.Marshal

Added methods:

public static System.Guid GenerateGuidForType (System.Type type);
public static string GenerateProgIdForType (System.Type type);
public static object GetComObjectData (object obj, object key);
public static IntPtr GetHINSTANCE (System.Reflection.Module m);
public static IntPtr GetIDispatchForObject (object o);
public static object GetTypedObjectForIUnknown (IntPtr pUnk, System.Type t);
public static bool SetComObjectData (object obj, object key, object data);
public static IntPtr StringToCoTaskMemUTF8 (string s);

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.AsymmetricAlgorithm

Added methods:

public virtual byte[] ExportEncryptedPkcs8PrivateKey (System.ReadOnlySpan<byte> passwordBytes, PbeParameters pbeParameters);
public virtual byte[] ExportEncryptedPkcs8PrivateKey (System.ReadOnlySpan<char> password, PbeParameters pbeParameters);
public virtual byte[] ExportPkcs8PrivateKey ();
public virtual byte[] ExportSubjectPublicKeyInfo ();
public virtual void ImportEncryptedPkcs8PrivateKey (System.ReadOnlySpan<byte> passwordBytes, System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual void ImportEncryptedPkcs8PrivateKey (System.ReadOnlySpan<char> password, System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual void ImportPkcs8PrivateKey (System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual void ImportSubjectPublicKeyInfo (System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual bool TryExportEncryptedPkcs8PrivateKey (System.ReadOnlySpan<byte> passwordBytes, PbeParameters pbeParameters, System.Span<byte> destination, out int bytesWritten);
public virtual bool TryExportEncryptedPkcs8PrivateKey (System.ReadOnlySpan<char> password, PbeParameters pbeParameters, System.Span<byte> destination, out int bytesWritten);
public virtual bool TryExportPkcs8PrivateKey (System.Span<byte> destination, out int bytesWritten);
public virtual bool TryExportSubjectPublicKeyInfo (System.Span<byte> destination, out int bytesWritten);

Type Changed: System.Security.Cryptography.CryptoStream

Added constructor:

public CryptoStream (System.IO.Stream stream, ICryptoTransform transform, CryptoStreamMode mode, bool leaveOpen);

Added interface:

System.IAsyncDisposable

Added methods:

public override System.IAsyncResult BeginRead (byte[] buffer, int offset, int count, System.AsyncCallback callback, object state);
public override System.IAsyncResult BeginWrite (byte[] buffer, int offset, int count, System.AsyncCallback callback, object state);
public override int EndRead (System.IAsyncResult asyncResult);
public override void EndWrite (System.IAsyncResult asyncResult);
public override int ReadByte ();
public override void WriteByte (byte value);

Type Changed: System.Security.Cryptography.DSA

Added methods:

public static DSA Create (int keySizeInBits);
public static DSA Create (DSAParameters parameters);
public virtual bool TryCreateSignature (System.ReadOnlySpan<byte> hash, System.Span<byte> destination, out int bytesWritten);
protected virtual bool TryHashData (System.ReadOnlySpan<byte> data, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, out int bytesWritten);
public virtual bool TrySignData (System.ReadOnlySpan<byte> data, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, out int bytesWritten);
public virtual bool VerifyData (System.ReadOnlySpan<byte> data, System.ReadOnlySpan<byte> signature, HashAlgorithmName hashAlgorithm);
public virtual bool VerifySignature (System.ReadOnlySpan<byte> hash, System.ReadOnlySpan<byte> signature);

Type Changed: System.Security.Cryptography.RSA

Added methods:

public static RSA Create (int keySizeInBits);
public static RSA Create (RSAParameters parameters);
public virtual byte[] ExportRSAPrivateKey ();
public virtual byte[] ExportRSAPublicKey ();
public virtual void ImportRSAPrivateKey (System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual void ImportRSAPublicKey (System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual bool TryDecrypt (System.ReadOnlySpan<byte> data, System.Span<byte> destination, RSAEncryptionPadding padding, out int bytesWritten);
public virtual bool TryEncrypt (System.ReadOnlySpan<byte> data, System.Span<byte> destination, RSAEncryptionPadding padding, out int bytesWritten);
public virtual bool TryExportRSAPrivateKey (System.Span<byte> destination, out int bytesWritten);
public virtual bool TryExportRSAPublicKey (System.Span<byte> destination, out int bytesWritten);
protected virtual bool TryHashData (System.ReadOnlySpan<byte> data, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, out int bytesWritten);
public virtual bool TrySignData (System.ReadOnlySpan<byte> data, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten);
public virtual bool TrySignHash (System.ReadOnlySpan<byte> hash, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding, out int bytesWritten);
public virtual bool VerifyData (System.ReadOnlySpan<byte> data, System.ReadOnlySpan<byte> signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);
public virtual bool VerifyHash (System.ReadOnlySpan<byte> hash, System.ReadOnlySpan<byte> signature, HashAlgorithmName hashAlgorithm, RSASignaturePadding padding);

Type Changed: System.Security.Cryptography.RandomNumberGenerator

Added methods:

public virtual void GetBytes (System.Span<byte> data);
public static int GetInt32 (int toExclusive);
public static int GetInt32 (int fromInclusive, int toExclusive);
public virtual void GetNonZeroBytes (System.Span<byte> data);

Type Changed: System.Security.Cryptography.Rfc2898DeriveBytes

Added constructors:

public Rfc2898DeriveBytes (byte[] password, byte[] salt, int iterations, HashAlgorithmName hashAlgorithm);
public Rfc2898DeriveBytes (string password, byte[] salt, int iterations, HashAlgorithmName hashAlgorithm);
public Rfc2898DeriveBytes (string password, int saltSize, int iterations, HashAlgorithmName hashAlgorithm);

Added property:

public HashAlgorithmName HashAlgorithm { get; }

New Type: System.Security.Cryptography.AesCcm

public sealed class AesCcm : System.IDisposable {
	// constructors
	public AesCcm (byte[] key);
	public AesCcm (System.ReadOnlySpan<byte> key);
	// properties
	public static KeySizes NonceByteSizes { get; }
	public static KeySizes TagByteSizes { get; }
	// methods
	public void Decrypt (byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[] associatedData);
	public void Decrypt (System.ReadOnlySpan<byte> nonce, System.ReadOnlySpan<byte> ciphertext, System.ReadOnlySpan<byte> tag, System.Span<byte> plaintext, System.ReadOnlySpan<byte> associatedData);
	public virtual void Dispose ();
	public void Encrypt (byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[] associatedData);
	public void Encrypt (System.ReadOnlySpan<byte> nonce, System.ReadOnlySpan<byte> plaintext, System.Span<byte> ciphertext, System.Span<byte> tag, System.ReadOnlySpan<byte> associatedData);
}

New Type: System.Security.Cryptography.AesGcm

public sealed class AesGcm : System.IDisposable {
	// constructors
	public AesGcm (byte[] key);
	public AesGcm (System.ReadOnlySpan<byte> key);
	// properties
	public static KeySizes NonceByteSizes { get; }
	public static KeySizes TagByteSizes { get; }
	// methods
	public void Decrypt (byte[] nonce, byte[] ciphertext, byte[] tag, byte[] plaintext, byte[] associatedData);
	public void Decrypt (System.ReadOnlySpan<byte> nonce, System.ReadOnlySpan<byte> ciphertext, System.ReadOnlySpan<byte> tag, System.Span<byte> plaintext, System.ReadOnlySpan<byte> associatedData);
	public virtual void Dispose ();
	public void Encrypt (byte[] nonce, byte[] plaintext, byte[] ciphertext, byte[] tag, byte[] associatedData);
	public void Encrypt (System.ReadOnlySpan<byte> nonce, System.ReadOnlySpan<byte> plaintext, System.Span<byte> ciphertext, System.Span<byte> tag, System.ReadOnlySpan<byte> associatedData);
}

New Type: System.Security.Cryptography.PbeEncryptionAlgorithm

[Serializable]
public enum PbeEncryptionAlgorithm {
	Aes128Cbc = 1,
	Aes192Cbc = 2,
	Aes256Cbc = 3,
	TripleDes3KeyPkcs12 = 4,
	Unknown = 0,
}

New Type: System.Security.Cryptography.PbeParameters

public sealed class PbeParameters {
	// constructors
	public PbeParameters (PbeEncryptionAlgorithm encryptionAlgorithm, HashAlgorithmName hashAlgorithm, int iterationCount);
	// properties
	public PbeEncryptionAlgorithm EncryptionAlgorithm { get; }
	public HashAlgorithmName HashAlgorithm { get; }
	public int IterationCount { get; }
}

Namespace System.Threading

Type Changed: System.Threading.CancellationTokenRegistration

Added interface:

System.IAsyncDisposable

Added method:

public virtual Tasks.ValueTask DisposeAsync ();

Type Changed: System.Threading.Interlocked

Added method:

public static void MemoryBarrierProcessWide ();

Type Changed: System.Threading.Timer

Added interface:

System.IAsyncDisposable

Added method:

public virtual Tasks.ValueTask DisposeAsync ();

Type Changed: System.Threading.WaitHandle

Modified base type:

-System.Object
+System.MarshalByRefObject

Namespace System.Threading.Tasks

New Type: System.Threading.Tasks.TaskAsyncEnumerableExtensions

public static class TaskAsyncEnumerableExtensions {
	// methods
	public static System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<T> ConfigureAwait<T> (this System.Collections.Generic.IAsyncEnumerable<T> source, bool continueOnCapturedContext);
	public static System.Runtime.CompilerServices.ConfiguredAsyncDisposable ConfigureAwait (this System.IAsyncDisposable source, bool continueOnCapturedContext);
	public static System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<T> WithCancellation<T> (this System.Collections.Generic.IAsyncEnumerable<T> source, System.Threading.CancellationToken cancellationToken);
}

System.Core.dll

Namespace System.IO.MemoryMappedFiles

Type Changed: System.IO.MemoryMappedFiles.MemoryMappedViewStream

Added interface:

System.IAsyncDisposable

Namespace System.IO.Pipes

Type Changed: System.IO.Pipes.AnonymousPipeClientStream

Added interface:

System.IAsyncDisposable

Type Changed: System.IO.Pipes.AnonymousPipeServerStream

Added interface:

System.IAsyncDisposable

Type Changed: System.IO.Pipes.NamedPipeClientStream

Added interface:

System.IAsyncDisposable

Type Changed: System.IO.Pipes.NamedPipeServerStream

Added interface:

System.IAsyncDisposable

Type Changed: System.IO.Pipes.PipeStream

Added interface:

System.IAsyncDisposable

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.ECDsa

Added methods:

public virtual byte[] ExportECPrivateKey ();
public virtual void ImportECPrivateKey (System.ReadOnlySpan<byte> source, out int bytesRead);
public virtual bool TryExportECPrivateKey (System.Span<byte> destination, out int bytesWritten);
protected virtual bool TryHashData (System.ReadOnlySpan<byte> data, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, out int bytesWritten);
public virtual bool TrySignData (System.ReadOnlySpan<byte> data, System.Span<byte> destination, HashAlgorithmName hashAlgorithm, out int bytesWritten);
public virtual bool TrySignHash (System.ReadOnlySpan<byte> hash, System.Span<byte> destination, out int bytesWritten);
public virtual bool VerifyData (System.ReadOnlySpan<byte> data, System.ReadOnlySpan<byte> signature, HashAlgorithmName hashAlgorithm);
public virtual bool VerifyHash (System.ReadOnlySpan<byte> hash, System.ReadOnlySpan<byte> signature);

Type Changed: System.Security.Cryptography.IncrementalHash

Added methods:

public void AppendData (System.ReadOnlySpan<byte> data);
public bool TryGetHashAndReset (System.Span<byte> destination, out int bytesWritten);

New Type: System.Security.Cryptography.ECDiffieHellman

public abstract class ECDiffieHellman : System.Security.Cryptography.AsymmetricAlgorithm, System.IDisposable {
	// constructors
	protected ECDiffieHellman ();
	// properties
	public override string KeyExchangeAlgorithm { get; }
	public virtual ECDiffieHellmanPublicKey PublicKey { get; }
	public override string SignatureAlgorithm { get; }
	// methods
	public static ECDiffieHellman Create ();
	public static ECDiffieHellman Create (ECCurve curve);
	public static ECDiffieHellman Create (ECParameters parameters);
	public static ECDiffieHellman Create (string algorithm);
	public byte[] DeriveKeyFromHash (ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm);
	public virtual byte[] DeriveKeyFromHash (ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] secretPrepend, byte[] secretAppend);
	public byte[] DeriveKeyFromHmac (ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey);
	public virtual byte[] DeriveKeyFromHmac (ECDiffieHellmanPublicKey otherPartyPublicKey, HashAlgorithmName hashAlgorithm, byte[] hmacKey, byte[] secretPrepend, byte[] secretAppend);
	public virtual byte[] DeriveKeyMaterial (ECDiffieHellmanPublicKey otherPartyPublicKey);
	public virtual byte[] DeriveKeyTls (ECDiffieHellmanPublicKey otherPartyPublicKey, byte[] prfLabel, byte[] prfSeed);
	public virtual byte[] ExportECPrivateKey ();
	public virtual ECParameters ExportExplicitParameters (bool includePrivateParameters);
	public virtual ECParameters ExportParameters (bool includePrivateParameters);
	public virtual void GenerateKey (ECCurve curve);
	public virtual void ImportECPrivateKey (System.ReadOnlySpan<byte> source, out int bytesRead);
	public virtual void ImportParameters (ECParameters parameters);
	public virtual bool TryExportECPrivateKey (System.Span<byte> destination, out int bytesWritten);
}

Namespace System.Security.Cryptography.X509Certificates

Type Changed: System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions

Added method:

public static X509Certificate2 CopyWithPrivateKey (this X509Certificate2 certificate, System.Security.Cryptography.ECDsa privateKey);

Namespace System.Threading.Tasks

Type Changed: System.Threading.Tasks.TaskExtensions

Removed methods:

public static System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<T> ConfigureAwait<T> (this System.Collections.Generic.IAsyncEnumerable<T> source, bool continueOnCapturedContext);
public static System.Runtime.CompilerServices.ConfiguredAsyncDisposable ConfigureAwait (this System.IAsyncDisposable source, bool continueOnCapturedContext);
public static System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<T> WithCancellation<T> (this System.Collections.Generic.IAsyncEnumerable<T> source, System.Threading.CancellationToken cancellationToken);

New Namespace System.Net.Sockets

New Type: System.Net.Sockets.UnixDomainSocketEndPoint

public sealed class UnixDomainSocketEndPoint : System.Net.EndPoint {
	// constructors
	public UnixDomainSocketEndPoint (string path);
	// properties
	public override AddressFamily AddressFamily { get; }
	// methods
	public override System.Net.EndPoint Create (System.Net.SocketAddress socketAddress);
	public override System.Net.SocketAddress Serialize ();
	public override string ToString ();
}

New Namespace System.Reflection

New Type: System.Reflection.DispatchProxy

public abstract class DispatchProxy {
	// constructors
	protected DispatchProxy ();
	// methods
	public static T Create<T, TProxy> ();
	protected virtual object Invoke (MethodInfo targetMethod, object[] args);
}

System.Data.dll

Namespace System.Data

Type Changed: System.Data.DataTableReader

Added interface:

System.IAsyncDisposable

New Type: System.Data.DataReaderExtensions

public static class DataReaderExtensions {
	// methods
	public static bool GetBoolean (this Common.DbDataReader reader, string name);
	public static byte GetByte (this Common.DbDataReader reader, string name);
	public static long GetBytes (this Common.DbDataReader reader, string name, long dataOffset, byte[] buffer, int bufferOffset, int length);
	public static char GetChar (this Common.DbDataReader reader, string name);
	public static long GetChars (this Common.DbDataReader reader, string name, long dataOffset, char[] buffer, int bufferOffset, int length);
	public static Common.DbDataReader GetData (this Common.DbDataReader reader, string name);
	public static string GetDataTypeName (this Common.DbDataReader reader, string name);
	public static System.DateTime GetDateTime (this Common.DbDataReader reader, string name);
	public static System.Decimal GetDecimal (this Common.DbDataReader reader, string name);
	public static double GetDouble (this Common.DbDataReader reader, string name);
	public static System.Type GetFieldType (this Common.DbDataReader reader, string name);
	public static T GetFieldValue<T> (this Common.DbDataReader reader, string name);
	public static System.Threading.Tasks.Task<T> GetFieldValueAsync<T> (this Common.DbDataReader reader, string name, System.Threading.CancellationToken cancellationToken);
	public static float GetFloat (this Common.DbDataReader reader, string name);
	public static System.Guid GetGuid (this Common.DbDataReader reader, string name);
	public static short GetInt16 (this Common.DbDataReader reader, string name);
	public static int GetInt32 (this Common.DbDataReader reader, string name);
	public static long GetInt64 (this Common.DbDataReader reader, string name);
	public static System.Type GetProviderSpecificFieldType (this Common.DbDataReader reader, string name);
	public static object GetProviderSpecificValue (this Common.DbDataReader reader, string name);
	public static System.IO.Stream GetStream (this Common.DbDataReader reader, string name);
	public static string GetString (this Common.DbDataReader reader, string name);
	public static System.IO.TextReader GetTextReader (this Common.DbDataReader reader, string name);
	public static object GetValue (this Common.DbDataReader reader, string name);
	public static bool IsDBNull (this Common.DbDataReader reader, string name);
	public static System.Threading.Tasks.Task<bool> IsDBNullAsync (this Common.DbDataReader reader, string name, System.Threading.CancellationToken cancellationToken);
}

Namespace System.Data.Common

Type Changed: System.Data.Common.DbCommand

Added interface:

System.IAsyncDisposable

Added methods:

public virtual System.Threading.Tasks.ValueTask DisposeAsync ();
public virtual System.Threading.Tasks.Task PrepareAsync (System.Threading.CancellationToken cancellationToken);

Type Changed: System.Data.Common.DbConnection

Added interface:

System.IAsyncDisposable

Added methods:

protected virtual System.Threading.Tasks.ValueTask<DbTransaction> BeginDbTransactionAsync (System.Data.IsolationLevel isolationLevel, System.Threading.CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<DbTransaction> BeginTransactionAsync (System.Threading.CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<DbTransaction> BeginTransactionAsync (System.Data.IsolationLevel isolationLevel, System.Threading.CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task ChangeDatabaseAsync (string databaseName, System.Threading.CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task CloseAsync ();
public virtual System.Threading.Tasks.ValueTask DisposeAsync ();

Type Changed: System.Data.Common.DbDataReader

Added interface:

System.IAsyncDisposable

Added methods:

public virtual System.Threading.Tasks.Task CloseAsync ();
public virtual System.Threading.Tasks.ValueTask DisposeAsync ();

Type Changed: System.Data.Common.DbProviderFactory

Added properties:

public virtual bool CanCreateCommandBuilder { get; }
public virtual bool CanCreateDataAdapter { get; }

Type Changed: System.Data.Common.DbTransaction

Added interface:

System.IAsyncDisposable

Added methods:

public virtual System.Threading.Tasks.Task CommitAsync (System.Threading.CancellationToken cancellationToken);
public virtual System.Threading.Tasks.ValueTask DisposeAsync ();
public virtual System.Threading.Tasks.Task RollbackAsync (System.Threading.CancellationToken cancellationToken);

New Type: System.Data.Common.DbProviderFactories

public static class DbProviderFactories {
	// methods
	public static DbProviderFactory GetFactory (DbConnection connection);
	public static DbProviderFactory GetFactory (System.Data.DataRow providerRow);
	public static DbProviderFactory GetFactory (string providerInvariantName);
	public static System.Data.DataTable GetFactoryClasses ();
	public static System.Collections.Generic.IEnumerable<string> GetProviderInvariantNames ();
	public static void RegisterFactory (string providerInvariantName, DbProviderFactory factory);
	public static void RegisterFactory (string providerInvariantName, string factoryTypeAssemblyQualifiedName);
	public static void RegisterFactory (string providerInvariantName, System.Type providerFactoryClass);
	public static bool TryGetFactory (string providerInvariantName, out DbProviderFactory factory);
	public static bool UnregisterFactory (string providerInvariantName);
}

Namespace System.Data.SqlClient

Type Changed: System.Data.SqlClient.SqlCommand

Added interface:

System.IAsyncDisposable

Type Changed: System.Data.SqlClient.SqlConnection

Added interface:

System.IAsyncDisposable

Type Changed: System.Data.SqlClient.SqlDataReader

Added interface:

System.IAsyncDisposable

Type Changed: System.Data.SqlClient.SqlTransaction

Added interface:

System.IAsyncDisposable

System.IO.Compression.dll

Namespace System.IO.Compression

New Type: System.IO.Compression.BrotliDecoder

public struct BrotliDecoder, System.IDisposable {
	// methods
	public System.Buffers.OperationStatus Decompress (System.ReadOnlySpan<byte> source, System.Span<byte> destination, out int bytesConsumed, out int bytesWritten);
	public virtual void Dispose ();
	public static bool TryDecompress (System.ReadOnlySpan<byte> source, System.Span<byte> destination, out int bytesWritten);
}

New Type: System.IO.Compression.BrotliEncoder

public struct BrotliEncoder, System.IDisposable {
	// constructors
	public BrotliEncoder (int quality, int window);
	// methods
	public System.Buffers.OperationStatus Compress (System.ReadOnlySpan<byte> source, System.Span<byte> destination, out int bytesConsumed, out int bytesWritten, bool isFinalBlock);
	public virtual void Dispose ();
	public System.Buffers.OperationStatus Flush (System.Span<byte> destination, out int bytesWritten);
	public static int GetMaxCompressedLength (int length);
	public static bool TryCompress (System.ReadOnlySpan<byte> source, System.Span<byte> destination, out int bytesWritten);
	public static bool TryCompress (System.ReadOnlySpan<byte> source, System.Span<byte> destination, out int bytesWritten, int quality, int window);
}

New Type: System.IO.Compression.BrotliStream

public sealed class BrotliStream : System.IO.Stream, System.IAsyncDisposable, System.IDisposable {
	// constructors
	public BrotliStream (System.IO.Stream stream, CompressionLevel compressionLevel);
	public BrotliStream (System.IO.Stream stream, CompressionMode mode);
	public BrotliStream (System.IO.Stream stream, CompressionLevel compressionLevel, bool leaveOpen);
	public BrotliStream (System.IO.Stream stream, CompressionMode mode, bool leaveOpen);
	// properties
	public System.IO.Stream BaseStream { get; }
	public override bool CanRead { get; }
	public override bool CanSeek { get; }
	public override bool CanWrite { get; }
	public override long Length { get; }
	public override long Position { get; set; }
	// methods
	public override System.IAsyncResult BeginRead (byte[] buffer, int offset, int count, System.AsyncCallback asyncCallback, object asyncState);
	public override System.IAsyncResult BeginWrite (byte[] buffer, int offset, int count, System.AsyncCallback asyncCallback, object asyncState);
	protected override void Dispose (bool disposing);
	public override int EndRead (System.IAsyncResult asyncResult);
	public override void EndWrite (System.IAsyncResult asyncResult);
	public override void Flush ();
	public override System.Threading.Tasks.Task FlushAsync (System.Threading.CancellationToken cancellationToken);
	public override int Read (System.Span<byte> buffer);
	public override int Read (byte[] buffer, int offset, int count);
	public override System.Threading.Tasks.ValueTask<int> ReadAsync (System.Memory<byte> buffer, System.Threading.CancellationToken cancellationToken);
	public override System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
	public override long Seek (long offset, System.IO.SeekOrigin origin);
	public override void SetLength (long value);
	public override void Write (System.ReadOnlySpan<byte> buffer);
	public override void Write (byte[] buffer, int offset, int count);
	public override System.Threading.Tasks.ValueTask WriteAsync (System.ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken);
	public override System.Threading.Tasks.Task WriteAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
}

System.dll

Namespace System.CodeDom.Compiler

Type Changed: System.CodeDom.Compiler.IndentedTextWriter

Added interface:

System.IAsyncDisposable

Namespace System.Diagnostics

Type Changed: System.Diagnostics.ProcessStartInfo

Added properties:

public System.Collections.ObjectModel.Collection<string> ArgumentList { get; }
public System.Text.Encoding StandardInputEncoding { get; set; }

Namespace System.IO.Compression

Type Changed: System.IO.Compression.DeflateStream

Added interface:

System.IAsyncDisposable

Added method:

protected override void ~DeflateStream ();

Type Changed: System.IO.Compression.GZipStream

Added interface:

System.IAsyncDisposable

Namespace System.Net

Type Changed: System.Net.HttpWebResponse

Added constructor:

public HttpWebResponse ();

Type Changed: System.Net.IPAddress

Added constructors:

public IPAddress (System.ReadOnlySpan<byte> address);
public IPAddress (System.ReadOnlySpan<byte> address, long scopeid);

Added methods:

public static IPAddress Parse (System.ReadOnlySpan<char> ipSpan);
public bool TryFormat (System.Span<char> destination, out int charsWritten);
public static bool TryParse (System.ReadOnlySpan<char> ipSpan, out IPAddress address);
public bool TryWriteBytes (System.Span<byte> destination, out int bytesWritten);

Type Changed: System.Net.SecurityProtocolType

Added value:

Tls13 = 12288,

Namespace System.Net.Security

Type Changed: System.Net.Security.AuthenticatedStream

Added interface:

System.IAsyncDisposable

Type Changed: System.Net.Security.NegotiateStream

Added interface:

System.IAsyncDisposable

Type Changed: System.Net.Security.SslStream

Added interface:

System.IAsyncDisposable

Added property:

public SslApplicationProtocol NegotiatedApplicationProtocol { get; }

Added methods:

public virtual void AuthenticateAsClient (string targetHost, System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates, bool checkCertificateRevocation);
public System.Threading.Tasks.Task AuthenticateAsClientAsync (SslClientAuthenticationOptions sslClientAuthenticationOptions, System.Threading.CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task AuthenticateAsClientAsync (string targetHost, System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates, bool checkCertificateRevocation);
public virtual void AuthenticateAsServer (System.Security.Cryptography.X509Certificates.X509Certificate serverCertificate, bool clientCertificateRequired, bool checkCertificateRevocation);
public System.Threading.Tasks.Task AuthenticateAsServerAsync (SslServerAuthenticationOptions sslServerAuthenticationOptions, System.Threading.CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task AuthenticateAsServerAsync (System.Security.Cryptography.X509Certificates.X509Certificate serverCertificate, bool clientCertificateRequired, bool checkCertificateRevocation);
public virtual System.IAsyncResult BeginAuthenticateAsClient (string targetHost, System.Security.Cryptography.X509Certificates.X509CertificateCollection clientCertificates, bool checkCertificateRevocation, System.AsyncCallback asyncCallback, object asyncState);
public virtual System.IAsyncResult BeginAuthenticateAsServer (System.Security.Cryptography.X509Certificates.X509Certificate serverCertificate, bool clientCertificateRequired, bool checkCertificateRevocation, System.AsyncCallback asyncCallback, object asyncState);
public override System.Threading.Tasks.ValueTask DisposeAsync ();
public override System.Threading.Tasks.Task FlushAsync (System.Threading.CancellationToken cancellationToken);

New Type: System.Net.Security.ServerCertificateSelectionCallback

public sealed delegate ServerCertificateSelectionCallback : System.MulticastDelegate, System.ICloneable, System.Runtime.Serialization.ISerializable {
	// constructors
	public ServerCertificateSelectionCallback (object object, IntPtr method);
	// methods
	public virtual System.IAsyncResult BeginInvoke (object sender, string hostName, System.AsyncCallback callback, object object);
	public virtual System.Security.Cryptography.X509Certificates.X509Certificate EndInvoke (System.IAsyncResult result);
	public virtual System.Security.Cryptography.X509Certificates.X509Certificate Invoke (object sender, string hostName);
}

New Type: System.Net.Security.SslApplicationProtocol

public struct SslApplicationProtocol, System.IEquatable<SslApplicationProtocol> {
	// constructors
	public SslApplicationProtocol (byte[] protocol);
	public SslApplicationProtocol (string protocol);
	// fields
	public static SslApplicationProtocol Http11;
	public static SslApplicationProtocol Http2;
	// properties
	public System.ReadOnlyMemory<byte> Protocol { get; }
	// methods
	public virtual bool Equals (SslApplicationProtocol other);
	public override bool Equals (object obj);
	public override int GetHashCode ();
	public override string ToString ();
	public static bool op_Equality (SslApplicationProtocol left, SslApplicationProtocol right);
	public static bool op_Inequality (SslApplicationProtocol left, SslApplicationProtocol right);
}

New Type: System.Net.Security.SslClientAuthenticationOptions

public class SslClientAuthenticationOptions {
	// constructors
	public SslClientAuthenticationOptions ();
	// properties
	public bool AllowRenegotiation { get; set; }
	public System.Collections.Generic.List<SslApplicationProtocol> ApplicationProtocols { get; set; }
	public System.Security.Cryptography.X509Certificates.X509RevocationMode CertificateRevocationCheckMode { get; set; }
	public System.Security.Cryptography.X509Certificates.X509CertificateCollection ClientCertificates { get; set; }
	public System.Security.Authentication.SslProtocols EnabledSslProtocols { get; set; }
	public EncryptionPolicy EncryptionPolicy { get; set; }
	public LocalCertificateSelectionCallback LocalCertificateSelectionCallback { get; set; }
	public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; }
	public string TargetHost { get; set; }
}

New Type: System.Net.Security.SslServerAuthenticationOptions

public class SslServerAuthenticationOptions {
	// constructors
	public SslServerAuthenticationOptions ();
	// properties
	public bool AllowRenegotiation { get; set; }
	public System.Collections.Generic.List<SslApplicationProtocol> ApplicationProtocols { get; set; }
	public System.Security.Cryptography.X509Certificates.X509RevocationMode CertificateRevocationCheckMode { get; set; }
	public bool ClientCertificateRequired { get; set; }
	public System.Security.Authentication.SslProtocols EnabledSslProtocols { get; set; }
	public EncryptionPolicy EncryptionPolicy { get; set; }
	public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; }
	public System.Security.Cryptography.X509Certificates.X509Certificate ServerCertificate { get; set; }
	public ServerCertificateSelectionCallback ServerCertificateSelectionCallback { get; set; }
}

Namespace System.Net.Sockets

Type Changed: System.Net.Sockets.NetworkStream

Added interface:

System.IAsyncDisposable

Type Changed: System.Net.Sockets.Socket

Added methods:

public int Receive (System.Span<byte> buffer, SocketFlags socketFlags, out SocketError errorCode);
public int Send (System.ReadOnlySpan<byte> buffer, SocketFlags socketFlags, out SocketError errorCode);

Type Changed: System.Net.Sockets.SocketAsyncEventArgs

Added method:

public void SetBuffer (System.Memory<byte> buffer);

Type Changed: System.Net.Sockets.SocketTaskExtensions

Added methods:

public static System.Threading.Tasks.ValueTask<int> ReceiveAsync (this Socket socket, System.Memory<byte> memory, SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken);
public static System.Threading.Tasks.ValueTask<int> SendAsync (this Socket socket, System.ReadOnlyMemory<byte> buffer, SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken);

Namespace System.Security.Authentication

Type Changed: System.Security.Authentication.SslProtocols

Added value:

Tls13 = 12288,

Namespace System.Security.Cryptography

Removed Type System.Security.Cryptography.CryptographicOperations

Namespace System.Security.Cryptography.X509Certificates

Type Changed: System.Security.Cryptography.X509Certificates.X509Store

Added constructors:

public X509Store (StoreName storeName, StoreLocation storeLocation, OpenFlags openFlags);
public X509Store (string storeName, StoreLocation storeLocation, OpenFlags openFlags);

Added property:

public bool IsOpen { get; }

New Type: System.Security.Cryptography.X509Certificates.CertificateRequest

public sealed class CertificateRequest {
	// constructors
	public CertificateRequest (X500DistinguishedName subjectName, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm);
	public CertificateRequest (X500DistinguishedName subjectName, PublicKey publicKey, System.Security.Cryptography.HashAlgorithmName hashAlgorithm);
	public CertificateRequest (string subjectName, System.Security.Cryptography.ECDsa key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm);
	public CertificateRequest (X500DistinguishedName subjectName, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.RSASignaturePadding padding);
	public CertificateRequest (string subjectName, System.Security.Cryptography.RSA key, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.RSASignaturePadding padding);
	// properties
	public System.Collections.ObjectModel.Collection<X509Extension> CertificateExtensions { get; }
	public System.Security.Cryptography.HashAlgorithmName HashAlgorithm { get; }
	public PublicKey PublicKey { get; }
	public X500DistinguishedName SubjectName { get; }
	// methods
	public X509Certificate2 Create (X509Certificate2 issuerCertificate, System.DateTimeOffset notBefore, System.DateTimeOffset notAfter, byte[] serialNumber);
	public X509Certificate2 Create (X500DistinguishedName issuerName, X509SignatureGenerator generator, System.DateTimeOffset notBefore, System.DateTimeOffset notAfter, byte[] serialNumber);
	public X509Certificate2 CreateSelfSigned (System.DateTimeOffset notBefore, System.DateTimeOffset notAfter);
	public byte[] CreateSigningRequest ();
	public byte[] CreateSigningRequest (X509SignatureGenerator signatureGenerator);
}

New Type: System.Security.Cryptography.X509Certificates.SubjectAlternativeNameBuilder

public sealed class SubjectAlternativeNameBuilder {
	// constructors
	public SubjectAlternativeNameBuilder ();
	// methods
	public void AddDnsName (string dnsName);
	public void AddEmailAddress (string emailAddress);
	public void AddIpAddress (System.Net.IPAddress ipAddress);
	public void AddUri (System.Uri uri);
	public void AddUserPrincipalName (string upn);
	public X509Extension Build (bool critical);
}

New Type: System.Security.Cryptography.X509Certificates.X509SignatureGenerator

public abstract class X509SignatureGenerator {
	// constructors
	protected X509SignatureGenerator ();
	// properties
	public PublicKey PublicKey { get; }
	// methods
	protected virtual PublicKey BuildPublicKey ();
	public static X509SignatureGenerator CreateForECDsa (System.Security.Cryptography.ECDsa key);
	public static X509SignatureGenerator CreateForRSA (System.Security.Cryptography.RSA key, System.Security.Cryptography.RSASignaturePadding signaturePadding);
	public virtual byte[] GetSignatureAlgorithmIdentifier (System.Security.Cryptography.HashAlgorithmName hashAlgorithm);
	public virtual byte[] SignData (byte[] data, System.Security.Cryptography.HashAlgorithmName hashAlgorithm);
}

Removed Namespace System.IO.Enumeration

Removed Type System.IO.Enumeration.FileSystemName

System.Net.Http.dll

Namespace System.Net.Http

Type Changed: System.Net.Http.HttpClient

Added methods:

public System.Threading.Tasks.Task<HttpResponseMessage> PatchAsync (string requestUri, HttpContent content);
public System.Threading.Tasks.Task<HttpResponseMessage> PatchAsync (System.Uri requestUri, HttpContent content);
public System.Threading.Tasks.Task<HttpResponseMessage> PatchAsync (string requestUri, HttpContent content, System.Threading.CancellationToken cancellationToken);
public System.Threading.Tasks.Task<HttpResponseMessage> PatchAsync (System.Uri requestUri, HttpContent content, System.Threading.CancellationToken cancellationToken);

Type Changed: System.Net.Http.HttpClientHandler

Added property:

public static System.Func<HttpRequestMessage,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors,System.Boolean> DangerousAcceptAnyServerCertificateValidator { get; }

Type Changed: System.Net.Http.HttpMethod

Added property:

public static HttpMethod Patch { get; }

Type Changed: System.Net.Http.HttpResponseMessage

Added property:

public Headers.HttpResponseHeaders TrailingHeaders { get; }

New Type: System.Net.Http.ReadOnlyMemoryContent

public sealed class ReadOnlyMemoryContent : System.Net.Http.HttpContent, System.IDisposable {
	// constructors
	public ReadOnlyMemoryContent (System.ReadOnlyMemory<byte> content);
	// methods
	protected override System.Threading.Tasks.Task SerializeToStreamAsync (System.IO.Stream stream, System.Net.TransportContext context);
	protected override bool TryComputeLength (out long length);
}

System.Xml.dll

Namespace System.Xml.Serialization

Type Changed: System.Xml.Serialization.XmlSchemaImporter

Modified base type:

-System.Object
+System.Xml.Serialization.SchemaImporter

New Type: System.Xml.Serialization.SchemaImporter

public abstract class SchemaImporter {
	// constructors
	protected SchemaImporter ();
}

Xamarin.WatchOS.dll

Namespace Compression

Type Changed: Compression.CompressionStream

Added interface:

System.IAsyncDisposable

Namespace Foundation

Type Changed: Foundation.NSArray

Added methods:

public static NSArray FromNSObjects<T> (T[0...,0...] items);
public static NSArray FromNSObjects<T> (T[][] items);

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

-public const string Version = "12.14.0";
+public const string Version = "12.16.1";

Namespace System.Net.Http

Type Changed: System.Net.Http.NSUrlSessionHandler

Added property:

public bool AllowsCellularAccess { get; set; }