<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Okay, thanks Jordan. I appreciate your perspective, and I admit that the proposal is technically compelling. My criticism was from a place of respect and admiration, and while I may have missed the deeper technical points of the proposal, I’ll still caution about how this change will be received by the Swift developer community. Proposals like this one could benefit from a plain-language explanation that this (as Joe Groff explained on twitter) fixes a bug. Maybe even a few more before and after examples? That would help the proposal get ahead of any negative reaction.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Ash</div> <br> <div id="bloop_sign_1513884905216460032" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">--&nbsp;<br>Ash Furrow<br>https://ashfurrow.com/</div></div> <br><p class="airmail_on">On December 21, 2017 at 1:55:40 PM, Jordan Rose (<a href="mailto:jordan_rose@apple.com">jordan_rose@apple.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div></div><div>



<title></title>


<div class="">Thanks for your response, Ash. Comments inline.</div>
<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Dec 20, 2017, at 11:49, Ash Furrow via
swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div id="bloop_customfont" style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; margin: 0px;" class="">
<div class="" style="-webkit-print-color-adjust: exact; margin: 0px;">Proposal
link:&nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md</a><br class="">
</div>
<div class="" style="-webkit-print-color-adjust: exact; margin: 0px;"><br class=""></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
<b class="">What is your evaluation of the proposal?</b></p>
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
-1.</p>
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
<b class="">Is the problem being addressed significant enough to
warrant a change to Swift?</b></p>
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
I’m afraid not.</p>
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
From my perspective as a Swift user, this change represents
nontrivial language churn without providing a solution to a problem
I have. The proposal doesn’t describe any benefits to me as an open
source library maintainer or as a Swift developer. With earnest
respect, the motivation section reads like “enums grow sometimes,
but we like to exhaustively switch over them, so wouldn’t it be
cool if …”, which is only a theoretical motivation. It fails to
describe how and why this proposal would improve my Swift code or
my experience using Swift.</p>
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
This appears to be a solution to a non-existing problem. I worry
that making this change will alienate developers from Swift and I
caution against accepting it.</p>
</div>
</div>
</div>
</blockquote>
<div>I wish it were, but unfortunately it's a very real problem.
Cases are added to Cocoa all the time, and currently it is
undefined behavior if one of those cases makes it into a switch
defined in Swift. ("undefined behavior" = "no guarantees of memory
safety, type safety, or even which functions are going to get
invoked in the rest of the function") This is a terrible state of
affairs that we need to do <i class="">something</i>&nbsp;about,
and "make it a deterministic trap" isn't a good enough
answer.</div>
<div><br class=""></div>
<div>We also already know that we have clients that want to add new
cases to Swift enums without breaking source or binary
compatibility: the Apple overlays. It's true that this is more of a
"theoretical motivation" for source framework authors at this
time.</div>
<div><br class=""></div>
<div><br class=""></div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div id="bloop_customfont" style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; margin: 0px;" class="">
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
<b class="">Does this proposal fit well with the feel and direction
of Swift?</b></p>
<p class="" style="font-family: Helvetica, arial, sans-serif; -webkit-print-color-adjust: exact; margin: 0px 0px 15px;">
It may have at one time point in time, but not now.</p>
The chaotic churn of the language, the syntax, and the standard
library is supposed to be behind us. We need to accept that things
fell into place as they did, often in imperfect ways. We probably
could correct all the imperfections, but when would we ever stop?
Language churn has a cost.&nbsp;This proposal is something that I
could definitely see being a part of Swift 2 or Swift 3, but we
have already decided that enums are exhaustive. This change, and
changes fundamental to the cognitive model Swift programmers
already have of their tool, need to be heavily weighted against
language churn</div>
</div>
</div>
</blockquote>
<div><br class=""></div>
<div>There's a difference between imperfections that mean something
is a bit harder to use, or not named the right thing, and
imperfections that lead to crashes or core capabilities not being
expressible. Being able to add cases to enums is something Cocoa
developers have relied on for years in Objective-C, and so it isn't
really sensible to not have this feature in Swift. I definitely
wish we could have gotten to it sooner.</div>
<div><br class=""></div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div id="bloop_customfont" style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; margin: 0px;" class="">
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<b class=""><br class=""></b></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<b class="">If you have used other languages or libraries with a
similar feature, how do you feel that this proposal compares to
those?</b></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<b style="font-family: Helvetica, arial, sans-serif;" class=""><br class=""></b></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
Scala’s match syntax bears a striking&nbsp;resemblance to Swift’s
switch syntax; however, Scala does not require exhaustive cases. If
the developer does not include a default case and none of the cases
match the expression, an exception is thrown. Because of Swift’s
error-handling model, I don’t know that this behaviour would be
desirable either (though I will say it makes sense in Scala).</div>
</div>
</div>
</blockquote>
<div><br class=""></div>
<div>This is certainly an option; it's in the proposal under
"Alternatives considered" as 'switch!' (causing a deterministic
trap rather than an exception). That doesn't seem sufficient to
deal with the realities of Cocoa, though.</div>
<div><br class=""></div>
<div>Jordan</div>
<div><br class=""></div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div id="bloop_customfont" style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; margin: 0px;" class="">
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<b style="font-family: Helvetica, arial, sans-serif;" class=""><br class=""></b></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<b style="font-family: Helvetica, arial, sans-serif;" class="">How
much effort did you put into your review? A glance, a quick
reading, or an in-depth study?</b></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
<br class=""></div>
<div class="" style="font-family: &quot;helvetica Neue&quot;, helvetica; font-size: 14px; -webkit-print-color-adjust: exact; margin: 0px;">
I read most of the proposal (okay I skimmed some of the
nitty-gritty, but I read to the end of “Source compatibility”) as
well as looked over the pre-review threads and skimmed GitHub pull
request thread.</div>
</div>
<br style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<div id="bloop_sign_1513799318172658944" class="bloop_sign" style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<div style="font-family: helvetica, arial; font-size: 13px;" class="">--&nbsp;<br class="">
Ash Furrow<br class="">
<a href="https://ashfurrow.com/" class="">https://ashfurrow.com/</a></div>
</div>
<br style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<p class="airmail_on" style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
On December 19, 2017 at 5:58:14 PM, Ted Kremenek via
swift-evolution (<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>) wrote:</p>
<blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div class=""></div>
<div class="">
<p class="" style="-webkit-print-color-adjust: exact; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255); margin-top: 0px !important;">
<span class="">The review of "SE 0192 - Non-Exhaustive Enums"
begins now and runs through&nbsp;<strong class="" style="-webkit-print-color-adjust: exact;">January 3,
2018</strong>.</span></p>
<p class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<span class="">The proposal is available here:</span></p>
<blockquote class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; border-left-width: 4px; border-left-style: solid; border-left-color: rgb(221, 221, 221); padding: 0px 15px; color: rgb(119, 119, 119); font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<div class="" style="-webkit-print-color-adjust: exact; margin: 0px;"><span class=""><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md</a></span></div>
</blockquote>
<p class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<span class="">Reviews are an important part of the Swift evolution
process. All review feedback should be sent to the swift-evolution
mailing list at:</span></p>
<blockquote class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; border-left-width: 4px; border-left-style: solid; border-left-color: rgb(221, 221, 221); padding: 0px 15px; color: rgb(119, 119, 119); font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<div class="" style="-webkit-print-color-adjust: exact; margin: 0px;"><span class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span></div>
</blockquote>
<p class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<span class="">or, if you would like to keep your feedback private,
directly to the review manager.&nbsp;</span></p>
<p class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<span class="">When replying, please try to keep the proposal link
at the top of the message:</span></p>
<blockquote class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; border-left-width: 4px; border-left-style: solid; border-left-color: rgb(221, 221, 221); padding: 0px 15px; color: rgb(119, 119, 119); font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<div class="" style="-webkit-print-color-adjust: exact; margin: 0px;"><span class="">Proposal link:<span class="Apple-converted-space">&nbsp;</span><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md</a><br class="" style="-webkit-print-color-adjust: exact;">
...<br class="" style="-webkit-print-color-adjust: exact;">
Reply text<br class="" style="-webkit-print-color-adjust: exact;">
...<br class="" style="-webkit-print-color-adjust: exact;">
Other replies</span></div>
</blockquote>
<h3 id="toc_0" class="" style="-webkit-print-color-adjust: exact; margin: 20px 0px 10px; padding: 0px; -webkit-font-smoothing: antialiased; cursor: text; position: relative; font-size: 18px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
What goes into a review of a proposal?</h3>
<p class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
The goal of the review process is to improve the proposal under
review through constructive criticism and, eventually, determine
the direction of Swift.&nbsp;</p>
<p class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
When reviewing a proposal, here are some questions to consider:</p>
<ul class="" style="-webkit-print-color-adjust: exact; margin: 15px 0px; padding-left: 30px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255);">
<li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="-webkit-print-color-adjust: exact; margin: 0px 0px 15px;">What is
your evaluation of the proposal?</p>
</li>
<li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="-webkit-print-color-adjust: exact; margin: 0px 0px 15px;">Is the
problem being addressed significant enough to warrant a change to
Swift?</p>
</li>
<li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="-webkit-print-color-adjust: exact; margin: 0px 0px 15px;">Does
this proposal fit well with the feel and direction of Swift?</p>
</li>
<li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="-webkit-print-color-adjust: exact; margin: 0px 0px 15px;">If you
have used other languages or libraries with a similar feature, how
do you feel that this proposal compares to those?</p>
</li>
<li class="" style="-webkit-print-color-adjust: exact; margin: 0px;">
<p class="" style="-webkit-print-color-adjust: exact; margin: 0px 0px 15px;">How much
effort did you put into your review? A glance, a quick reading, or
an in-depth study?</p>
</li>
</ul>
<p class="" style="-webkit-print-color-adjust: exact; margin-top: 15px; margin-right: 0px; margin-left: 0px; font-family: Helvetica, arial, sans-serif; background-color: rgb(255, 255, 255); margin-bottom: 0px !important;">
Thanks,<br class="" style="-webkit-print-color-adjust: exact;">
Ted Kremenek<br class="" style="-webkit-print-color-adjust: exact;">
Review Manager</p>
_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
</div>
</div>
</blockquote>
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<a href="mailto:swift-evolution@swift.org" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div>
</blockquote>
</div>
<br class="">


</div></div></span></blockquote></body></html>