<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">-1<div class=""><br class=""></div><div class="">Personally, I don’t like writing “nil” at all. In my understanding of Swift, “nil” is simply a C-like shorthand for "Optional<T>.none”. </div><div class="">If the compiler can’t infer T (such as “let a = nil”), it should fall-back to Optional<Any>.none; I’m very surprised that this isn’t the case currently.</div><div class=""><br class=""></div><div class="">There is a bug where the type-checker can’t always infer the type when you just write “.none”, but outside of that I think it’s a swiftier way of doing things: <a href="https://bugs.swift.org/browse/SR-2302" class="">https://bugs.swift.org/browse/SR-2302</a></div><div class=""><br class=""></div><div class="">I would be more likely to support the opposite proposal - to eliminate the “nil” literal altogether and replace it with “.none”.</div><div class=""><br class=""></div><div class="">- Karl</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 8 Nov 2016, at 21:30, Anton Zhilin via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important" class=""><a href="https://gist.github.com/Anton3/ba56a29986c59e9595368be3cb02fb1b" class="">Gist link</a></p>
<h2 id="introduction" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)" class="">Introduction</h2><p style="margin:0px 0px 1.2em!important" class="">Change <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">nil</code> literal type from <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">()</code> to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Nil</code>.<br class="">Before:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px" class=""><code class="language-swift hljs" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">protocol</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: ())
}
</code></pre><p style="margin:0px 0px 1.2em!important" class="">After:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px" class=""><code class="language-swift hljs" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">struct</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">Nil</span> </span>{
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>()
}
public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">protocol</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
associatedtype <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span> = <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Nil</span>
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span>)
}
</code></pre>
<h2 id="motivation" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)" class="">Motivation</h2><p style="margin:0px 0px 1.2em!important" class="">Currently, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">nil</code> differs from other literals: it doesn’t have its own type.<br class="">But in some cases we want to deal directly with it, without creating any instances.</p><p style="margin:0px 0px 1.2em!important" class="">The most important use case is comparison of an <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Optional</code> to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">nil</code>.<br class="">Currently, this operation is implemented using a hidden struct <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">_OptionalNilComparisonType</code>,<br class="">which is needed precisely because because <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">nil</code> does not have its own type.<br class="">Removal of such underscored types is one of the goals stated in Generics manifesto.</p><p style="margin:0px 0px 1.2em!important" class="">Additionally, declaration of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">ExpressibleByNilLiteral</code> differs from all other <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Expressible</code>s,<br class="">because it doesn’t have a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Literal</code> type. It is generally beneficial to eliminate special cases.</p>
<h2 id="proposed-solution" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)" class="">Proposed solution</h2><p style="margin:0px 0px 1.2em!important" class="">Introduce a struct <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Nil</code>, which becomes the default type for <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">nil</code> literals:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px" class=""><code class="language-swift hljs" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">struct</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">Nil</span> : <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>()
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span>)
}
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">let</span> a = <span class="hljs-built_in" style="color:rgb(0,134,179)">nil</span>
<span class="hljs-built_in" style="color:rgb(0,134,179)">print</span>(type(of: a)) <span class="hljs-comment" style="color:rgb(153,153,136);font-style:italic">//=> Nil</span>
</code></pre><p style="margin:0px 0px 1.2em!important" class="">Rewrite <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">ExpressibleByNilLiteral</code>:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px" class=""><code class="language-swift hljs" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">protocol</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
associatedtype <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span> = <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Nil</span>
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span>)
}
</code></pre><p style="margin:0px 0px 1.2em!important" class="">Make use of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Nil</code> in the standard library:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px" class=""><code class="language-swift hljs" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-func"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">func</span> == <span class="hljs-generics"><T></span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: T?, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: Nil)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> == <span class="hljs-generics"><T></span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: Nil, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: T?)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> != <span class="hljs-generics"><T></span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: T?, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: Nil)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> != <span class="hljs-generics"><T></span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: Nil, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: T?)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> ~= <span class="hljs-generics"><T></span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: Nil, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: T?)</span></span>
</code></pre>
<h2 id="source-compatibility" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)" class="">Source compatibility</h2><p style="margin:0px 0px 1.2em!important" class=""><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Nil</code> identifier is taken, therefore applications that already use it will stop compiling.<br class="">Automatic migration is somewhat possible by renaming of the old entity; manual migration is recommended.</p><p style="margin:0px 0px 1.2em!important" class="">Applications that use declare <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">ExpressibleByNilLiteral</code> conformances will stop compiling.<br class="">Automatic migration is possible.</p>
<h2 id="effect-on-abi-stability" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)" class="">Effect on ABI stability</h2><p style="margin:0px 0px 1.2em!important" class="">Applications that use <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline" class="">Nil</code> identifier will have to make ABI-breaking changes.</p><p style="margin:0px 0px 1.2em!important" class="">Otherwise, the change can mostly be applied in an ABI-compatible manner.</p>
<div title="MDH:PGRpdj5bR2lzdCBsaW5rXShodHRwczovL2dpc3QuZ2l0aHViLmNvbS9BbnRvbjMvYmE1NmEyOTk4
NmM1OWU5NTk1MzY4YmUzY2IwMmZiMWIpPC9kaXY+PGRpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiMj
IEludHJvZHVjdGlvbjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Q2hhbmdlIGBuaWxgIGxpdGVy
YWwgdHlwZSBmcm9tIGAoKWAgdG8gYE5pbGAuPC9kaXY+PGRpdj5CZWZvcmU6PC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5gYGBzd2lmdDwvZGl2PjxkaXY+cHVibGljIHByb3RvY29sIEV4cHJlc3Np
YmxlQnlOaWxMaXRlcmFsIHs8L2Rpdj48ZGl2PiZuYnNwOyBpbml0KG5pbExpdGVyYWw6ICgpKTwv
ZGl2PjxkaXY+fTwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BZnRlcjo8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYHN3aWZ0PC9kaXY+PGRpdj5wdWJsaWMgc3RydWN0
IE5pbCB7PC9kaXY+PGRpdj4mbmJzcDsgaW5pdCgpPC9kaXY+PGRpdj59PC9kaXY+PGRpdj5wdWJs
aWMgcHJvdG9jb2wgRXhwcmVzc2libGVCeU5pbExpdGVyYWwgezwvZGl2PjxkaXY+Jm5ic3A7IGFz
c29jaWF0ZWR0eXBlIE5pbExpdGVyYWxUeXBlID0gTmlsPC9kaXY+PGRpdj4mbmJzcDsgaW5pdChu
aWxMaXRlcmFsOiBOaWxMaXRlcmFsVHlwZSk8L2Rpdj48ZGl2Pn08L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+IyMgTW90aXZhdGlvbjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+Q3VycmVudGx5LCBgbmlsYCBkaWZmZXJzIGZyb20gb3RoZXIgbGl0ZXJhbHM6IGl0IGRvZXNu
J3QgaGF2ZSBpdHMgb3duIHR5cGUuPC9kaXY+PGRpdj5CdXQgaW4gc29tZSBjYXNlcyB3ZSB3YW50
IHRvIGRlYWwgZGlyZWN0bHkgd2l0aCBpdCwgd2l0aG91dCBjcmVhdGluZyBhbnkgaW5zdGFuY2Vz
LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIG1vc3QgaW1wb3J0YW50IHVzZSBjYXNlIGlz
IGNvbXBhcmlzb24gb2YgYW4gYE9wdGlvbmFsYCB0byBgbmlsYC48L2Rpdj48ZGl2PkN1cnJlbnRs
eSwgdGhpcyBvcGVyYXRpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBoaWRkZW4gc3RydWN0IGBf
T3B0aW9uYWxOaWxDb21wYXJpc29uVHlwZWAsPC9kaXY+PGRpdj53aGljaCBpcyBuZWVkZWQgcHJl
Y2lzZWx5IGJlY2F1c2UgYmVjYXVzZSBgbmlsYCBkb2VzIG5vdCBoYXZlIGl0cyBvd24gdHlwZS48
L2Rpdj48ZGl2PlJlbW92YWwgb2Ygc3VjaCB1bmRlcnNjb3JlZCB0eXBlcyBpcyBvbmUgb2YgdGhl
IGdvYWxzIHN0YXRlZCBpbiBHZW5lcmljcyBtYW5pZmVzdG8uPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5BZGRpdGlvbmFsbHksIGRlY2xhcmF0aW9uIG9mIGBFeHByZXNzaWJsZUJ5TmlsTGl0ZXJh
bGAgZGlmZmVycyBmcm9tIGFsbCBvdGhlciBgRXhwcmVzc2libGVgcyw8L2Rpdj48ZGl2PmJlY2F1
c2UgaXQgZG9lc24ndCBoYXZlIGEgYExpdGVyYWxgIHR5cGUuIEl0IGlzIGdlbmVyYWxseSBiZW5l
ZmljaWFsIHRvIGVsaW1pbmF0ZSBzcGVjaWFsIGNhc2VzLjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+IyMgUHJvcG9zZWQgc29sdXRpb248L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkludHJvZHVj
ZSBhIHN0cnVjdCBgTmlsYCwgd2hpY2ggYmVjb21lcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBgbmls
YCBsaXRlcmFsczo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYHN3aWZ0PC9kaXY+PGRpdj5w
dWJsaWMgc3RydWN0IE5pbCA6IEV4cHJlc3NpYmxlQnlOaWxMaXRlcmFsIHs8L2Rpdj48ZGl2PiZu
YnNwOyBpbml0KCk8L2Rpdj48ZGl2PiZuYnNwOyBpbml0KG5pbExpdGVyYWw6IE5pbExpdGVyYWxU
eXBlKTwvZGl2PjxkaXY+fTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bGV0IGEgPSBuaWw8L2Rp
dj48ZGl2PnByaW50KHR5cGUob2Y6IGEpKSAmbmJzcDsgLy89Jmd0OyBOaWw8L2Rpdj48ZGl2PmBg
YDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmV3cml0ZSBgRXhwcmVzc2libGVCeU5pbExpdGVy
YWxgOjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgc3dpZnQ8L2Rpdj48ZGl2PnB1YmxpYyBw
cm90b2NvbCBFeHByZXNzaWJsZUJ5TmlsTGl0ZXJhbCB7PC9kaXY+PGRpdj4mbmJzcDsgYXNzb2Np
YXRlZHR5cGUgTmlsTGl0ZXJhbFR5cGUgPSBOaWw8L2Rpdj48ZGl2PiZuYnNwOyBpbml0KG5pbExp
dGVyYWw6IE5pbExpdGVyYWxUeXBlKTwvZGl2PjxkaXY+fTwvZGl2PjxkaXY+YGBgPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5NYWtlIHVzZSBvZiBgTmlsYCBpbiB0aGUgc3RhbmRhcmQgbGlicmFy
eTo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYHN3aWZ0PC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyA9PSAmbHQ7VCZndDsobGVmdDogVD8sIHJpZ2h0OiBOaWwpPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyA9PSAmbHQ7VCZndDsobGVmdDogTmlsLCByaWdodDogVD8pPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyAhPSAmbHQ7VCZndDsobGVmdDogVD8sIHJpZ2h0OiBOaWwpPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyAhPSAmbHQ7VCZndDsobGVmdDogTmlsLCByaWdodDogVD8pPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyB+PSAmbHQ7VCZndDsobGVmdDogTmlsLCByaWdodDogVD8pPC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PiMjIFNvdXJjZSBjb21wYXRpYmlsaXR5PC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj5gTmlsYCBpZGVudGlmaWVyIGlzIHRha2VuLCB0aGVyZWZvcmUgYXBwbGljYXRp
b25zIHRoYXQgYWxyZWFkeSB1c2UgaXQgd2lsbCBzdG9wIGNvbXBpbGluZy48L2Rpdj48ZGl2PkF1
dG9tYXRpYyBtaWdyYXRpb24gaXMgc29tZXdoYXQgcG9zc2libGUgYnkgcmVuYW1pbmcgb2YgdGhl
IG9sZCBlbnRpdHk7IG1hbnVhbCBtaWdyYXRpb24gaXMgcmVjb21tZW5kZWQuPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5BcHBsaWNhdGlvbnMgdGhhdCB1c2UgZGVjbGFyZSBgRXhwcmVzc2libGVC
eU5pbExpdGVyYWxgIGNvbmZvcm1hbmNlcyB3aWxsIHN0b3AgY29tcGlsaW5nLjwvZGl2PjxkaXY+
QXV0b21hdGljIG1pZ3JhdGlvbiBpcyBwb3NzaWJsZS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
PiMjIEVmZmVjdCBvbiBBQkkgc3RhYmlsaXR5PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BcHBs
aWNhdGlvbnMgdGhhdCB1c2UgYE5pbGAgaWRlbnRpZmllciB3aWxsIGhhdmUgdG8gbWFrZSBBQkkt
YnJlYWtpbmcgY2hhbmdlcy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk90aGVyd2lzZSwgdGhl
IGNoYW5nZSBjYW4gbW9zdGx5IGJlIGFwcGxpZWQgaW4gYW4gQUJJLWNvbXBhdGlibGUgbWFubmVy
LjwvZGl2PjwvZGl2Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0" class=""></div></div></div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></body></html>