Skip to content
This repository has been archived by the owner on Jun 6, 2019. It is now read-only.

Latest commit

 

History

History
899 lines (751 loc) · 31 KB

File metadata and controls

899 lines (751 loc) · 31 KB
id title
94F5C387-364B-49C9-A3BF-AC81674CA70A
iOS 11.3.0 to 11.4.0

API diff

mscorlib.dll

System.dll

System.Core.dll

System.IO.Compression.dll

Mono.Security.dll

Xamarin.iOS.dll


<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

mscorlib.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System

Type Changed: System.Exception

Modified properties:

public virtual final Exception InnerException { get; }
public virtual final Reflection.MethodBase TargetSite { get; }

Modified methods:

public virtual final Type GetType ()

Namespace System.Collections

Type Changed: System.Collections.DictionaryEntry

Added method:

	public void Deconstruct (object key, object value);

Namespace System.Collections.Generic

Type Changed: System.Collections.Generic.Dictionary`2

Removed methods:

	public TValue GetValueOrDefault (TKey key);
	public TValue GetValueOrDefault (TKey key, TValue defaultValue);

Added method:

	public bool Remove (TKey key, TValue value);

Type Changed: System.Collections.Generic.KeyValuePair`2

Added method:

	public void Deconstruct (TKey key, TValue value);

New Type System.Collections.Generic.CollectionExtensions

public static class CollectionExtensions {
	// methods
	public static TValue GetValueOrDefault<TKey, TValue> (System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> dictionary, TKey key);
	public static TValue GetValueOrDefault<TKey, TValue> (System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> dictionary, TKey key, TValue defaultValue);
	public static bool Remove<TKey, TValue> (System.Collections.Generic.IDictionary<TKey,TValue> dictionary, TKey key, TValue value);
	public static bool TryAdd<TKey, TValue> (System.Collections.Generic.IDictionary<TKey,TValue> dictionary, TKey key, TValue value);
}

New Type System.Collections.Generic.KeyValuePair

public static class KeyValuePair {
	// methods
	public static System.Collections.Generic.KeyValuePair<TKey,TValue> Create<TKey, TValue> (TKey key, TValue value);
}

Namespace System.Diagnostics.Tracing

Type Changed: System.Diagnostics.Tracing.EventListener

Modified constructors:

protected public EventListener ()

Modified methods:

protected abstract virtual void OnEventWritten (EventWrittenEventArgs eventData)

Namespace System.Runtime.CompilerServices

New Type System.Runtime.CompilerServices.IsByRefLikeAttribute

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

New Type System.Runtime.CompilerServices.IsReadOnlyAttribute

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

New Type System.Runtime.CompilerServices.RuntimeFeature

public static class RuntimeFeature {
	// fields
	public static const string PortablePdb = "PortablePdb";
	// methods
	public static bool IsSupported (string feature);
}

Namespace System.Runtime.ExceptionServices

Type Changed: System.Runtime.ExceptionServices.ExceptionDispatchInfo

Added method:

	public static void Throw (System.Exception source);

Namespace System.Runtime.InteropServices

New Type System.Runtime.InteropServices.EXCEPINFO

public struct EXCEPINFO {
	// fields
	public string bstrDescription;
	public string bstrHelpFile;
	public string bstrSource;
	public int dwHelpContext;
	public IntPtr pfnDeferredFillIn;
	public IntPtr pvReserved;
	public short wCode;
	public short wReserved;
}

Namespace System.Security.Policy

Type Changed: System.Security.Policy.PolicyException

Removed interface:

	System.Runtime.InteropServices._Exception

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.Net

Type Changed: System.Net.SecurityProtocolType

Added value:

	SystemDefault = 0,

Namespace System.Net.Security

Type Changed: System.Net.Security.SslStream

Modified properties:

public virtual final System.Net.TransportContext TransportContext { get; }

Modified methods:

public virtual final void Write (byte[] buffer)

Added method:

	public virtual System.Threading.Tasks.Task ShutdownAsync ();

Namespace System.Text.RegularExpressions

Type Changed: System.Text.RegularExpressions.Group

Added property:

	public string Name { get; }

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.Core.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.Security.Cryptography

Type Changed: System.Security.Cryptography.ECDiffieHellmanPublicKey

Added constructor:

	protected ECDiffieHellmanPublicKey ();

Added methods:

	public virtual ECParameters ExportExplicitParameters ();
	public virtual ECParameters ExportParameters ();

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

System.IO.Compression.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace System.IO.Compression

Type Changed: System.IO.Compression.ZipArchiveEntry

Added property:

	public int ExternalAttributes { get; set; }

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

Mono.Security.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace Mono.Security.Interface

Type Changed: Mono.Security.Interface.IMonoSslStream

Added property:

	public virtual System.Net.Security.SslStream SslStream { get; }

Added method:

	public virtual System.Threading.Tasks.Task ShutdownAsync ();

Type Changed: Mono.Security.Interface.MonoTlsProviderFactory

Removed methods:

	[Obsolete ("Use GetProvider() instead.")]
	public static MonoTlsProvider GetDefaultProvider ();

	[Obsolete ("Use Initialize(string provider) instead.")]
	public static void SetDefaultProvider (string name);

Added method:

	public static IMonoSslStream GetMonoSslStream (System.Net.HttpListenerContext context);

Type Changed: Mono.Security.Interface.MonoTlsSettings

Added property:

	public System.DateTime? CertificateValidationTime { get; set; }

<style scoped=""> .obsolete { color: gray; } .added { color: green; } .removed-inline { text-decoration: line-through; } .removed-breaking-inline { color: red;} .added-breaking-inline { text-decoration: underline; } .nonbreaking { color: black; } .breaking { color: red; } </style> <script type="text/javascript">
// Only some elements have 'data-is-[non-]breaking' attributes. Here we
// iterate over all descendents elements, and set 'data-is-[non-]breaking'
// depending on whether there are any descendents with that attribute.
function propagateDataAttribute (element)
{
	if (element.hasAttribute ('data-is-propagated'))
		return;

	var i;
	var any_breaking = element.hasAttribute ('data-is-breaking');
	var any_non_breaking = element.hasAttribute ('data-is-non-breaking');
	for (i = 0; i < element.children.length; i++) {
		var el = element.children [i];
		propagateDataAttribute (el);
		any_breaking |= el.hasAttribute ('data-is-breaking');
		any_non_breaking |= el.hasAttribute ('data-is-non-breaking');
	}
	
	if (any_breaking)
		element.setAttribute ('data-is-breaking', null);
	else if (any_non_breaking)
		element.setAttribute ('data-is-non-breaking', null);
	element.setAttribute ('data-is-propagated', null);
}

function hideNonBreakingChanges ()
{
	var topNodes = document.querySelectorAll ('[data-is-topmost]');
	var n;
	var i;
	for (n = 0; n < topNodes.length; n++) {
		propagateDataAttribute (topNodes [n]);
		var elements = topNodes [n].querySelectorAll ('[data-is-non-breaking]');
		for (i = 0; i < elements.length; i++) {
			var el = elements [i];
			if (!el.hasAttribute ('data-original-display'))
				el.setAttribute ('data-original-display', el.style.display);
			el.style.display = 'none';
		}
	}
	
	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
}

function showNonBreakingChanges ()
{
	var elements = document.querySelectorAll ('[data-original-display]');
	var i;
	for (i = 0; i < elements.length; i++) {
		var el = elements [i];
		el.style.display = el.getAttribute ('data-original-display');
	}

	var links = document.getElementsByClassName ('hide-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = '';
	links = document.getElementsByClassName ('restore-nonbreaking');
	for (i = 0; i < links.length; i++)
		links [i].style.display = 'none';
}

</script>

Xamarin.iOS.dll

[Hide non-breaking changes](javascript: hideNonBreakingChanges (); ) [Show non-breaking changes](javascript: showNonBreakingChanges (); )

Namespace ObjCRuntime

Type Changed: ObjCRuntime.Constants

Modified fields:

public const string Version = "11.3.0" "11.4.0";

New Type ObjCRuntime.BindAsAttribute

public class BindAsAttribute : System.Attribute {
	// constructors
	public BindAsAttribute (System.Type type);
	// fields
	public System.Type OriginalType;
	public System.Type Type;
}