<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div style="font-family:Arial;">OK, understood. Thanks!<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">Zach<br></div>
<div><br></div>
<div>On Tue, Apr 4, 2017, at 05:53 PM, Itai Ferber wrote:<br></div>
<blockquote type="cite"><div style="font-family:sans-serif;"><div style="white-space:normal;"><p>Hi Zach,<br></p><p><div style="font-family:Arial;">Thanks for your comments!<br></div>
<div style="font-family:Arial;"> The type is called "unkeyed", but I assume "nonkeyed" was a typo and that's what you meant. As far as the phrasing of "ordered" and "sequential", both sound good, but:<br></div>
</p><ol><li value="1">The symmetry between "keyed" and "unkeyed" is helpful in creating opposition between types of encoding (and especially so in comparison to "single value", which is the odd man out — and you'd extremely rarely need to interact with it)<br></li><li value="2">Given something that's "x" or "not x", you'd generally gravitate toward the thing with the more positive phrasing. As you mention, we really want to encourage keyed containers and diminish the use of unkeyed containers unless truly necessary, because they're fragile. The problem is, it's much easier to use the unkeyed containers — especially accidentally as a novice, since they're much simpler API — and I think "ordered" and "sequential" don't go far enough to detract from their usage.<br></li></ol><p>They sound good, and in fact, too good, and we find that more negative phrasing is helpful.<br></p><p>— Itai<br></p><p>On 3 Apr 2017, at 16:01, Zach Waldowski via swift-evolution wrote:<br></p><p><br></p></div>
<div style="white-space:normal;"><br></div>
<blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(119, 119, 119);color:rgb(119, 119, 119);margin-top:0px;margin-right:0px;margin-bottom:5px;margin-left:0px;padding-left:5px;"><div><div style="font-family:Arial;">Itai and co:<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">This is a solid improvement.<br></div>
<div style="font-family:Arial;"><br></div>
<div style="font-family:Arial;">I think it's appropriate to diminish the importance of non-keyed containers. "Nonkeyed" as the name is pretty iffy to me, though, even though I admit it makes the use case pretty clear. "Ordered" or "Sequential" both sound fine, even for an encoder that's slot-based instead of  NSArchiver-like model. An array is ordered but you don't have to traverse it in order.<br></div>
<div style="font-family:Arial;"><br></div>
<div><div><span class="font" style="font-family:arial, sans-serif, sans-serif">Best,</span><span class="font" style="font-family:arial, sans-serif, sans-serif"></span><br></div>
<div><span class="font" style="font-family:arial, sans-serif, sans-serif">&nbsp; Zachary Waldowski</span><span class="font" style="font-family:arial, sans-serif, sans-serif"></span><br></div>
<div><span class="font" style="font-family:arial, sans-serif, sans-serif">&nbsp;&nbsp;</span><a href="mailto:zach@waldowski.me"><span class="font" style="font-family:arial, sans-serif, sans-serif">zach@waldowski.me</span></a><br></div>
</div>
<div><br></div>
<div><br></div>
<div>On Mon, Apr 3, 2017, at 04:31 PM, Itai Ferber via swift-evolution wrote:<br></div>
<blockquote type="cite"><div><div style="font-family:sans-serif;"><div style="white-space:normal;"><p style=""><span class="size" style="font-size:14px">Hi everyone,</span><br></p><p style=""><span class="size" style="font-size:14px">With feedback from swift-evolution and additional internal review, we've pushed updates to this proposal, and to the <a href="https://github.com/apple/swift-evolution/pull/640" style="color:rgb(57, 131, 196);">Swift Encoders</a> proposal.<br> In the interest of not blowing up mail clients with the full HTML again, I'll simply be linking to the <a href="https://github.com/apple/swift-evolution/pull/639" style="color:rgb(57, 131, 196);">swift-evolution PR here</a>, as well as the <a href="https://github.com/apple/swift-evolution/pull/639/commits/d619eef9166f8b45ffac152d06376cbdab536241" style="color:rgb(57, 131, 196);">specific diff</a> of what's changed.</span></p><p style=""><span class="size" style="font-size:14px">At a high level:</span><br></p><ul style="font-size:14px;"><li>The <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">Codable</code> protocol has been split up into <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">Encodable</code> and <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">Decodable</code><br></li><li>String keys on <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">CodingKey</code> are no longer optional<br></li><li><code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">KeyedEncodingContainer</code> has become <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">KeyedEncodingContainerProtocol</code>, with a concrete type-erased <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">KeyedEncodingContainer</code> struct to hold it<br></li><li>Array responsibilities have been removed from <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">KeyedEncodingContainer</code>, and have been added to a new <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">UnkeyedEncodingContainer</code> type<br></li><li><code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">codingKeyContext</code> has been renamed <code style="background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0.4em;padding-bottom:0px;padding-left:0.4em;" bgcolor="#F7F7F7">codingPath</code><br></li></ul><p style=""><span class="size" style="font-size:14px">There are some specific changes inline — I know it might be a bit of a pain, but let's keep discussion here on the mailing list instead of on GitHub.<br> We'll be looking to start the official review process very soon, so we're interested in any additional feedback.</span></p><p style=""><span class="size" style="font-size:14px">Thanks!</span><br></p><p style=""><span class="size" style="font-size:14px">— Itai</span><br></p></div>
</div>
</div>
<div><u>_______________________________________________</u><br></div>
<div>swift-evolution mailing list<br></div>
<div><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br></div>
<div><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
</blockquote><div style="font-family:Arial;"><br></div>
</div>
</blockquote><div style="white-space:normal;"><blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(119, 119, 119);color:rgb(119, 119, 119);margin-top:0px;margin-right:0px;margin-bottom:5px;margin-left:0px;padding-left:5px;"><br></blockquote><p><div style="font-family:Arial;">_______________________________________________<br></div>
<div style="font-family:Arial;"> swift-evolution mailing list<br></div>
<div style="font-family:Arial;"> swift-evolution@swift.org<br></div>
<div style="font-family:Arial;"> <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="color:rgb(57, 131, 196);">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
</p></div>
<div style="white-space:normal;"><br></div>
</div>
</blockquote><div style="font-family:Arial;"><br></div>
</body>
</html>