<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="font-family: Helvetica; font-size: 12px; 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;">The strongest your argument can be is “someone could use dynamic member lookup in their API to produce an API with a footgun that hurts their users”. I submit for your consideration that there are lots and lots of ways that people can create poor APIs that hurt users. If someone uses this feature inappropriately, then their API is crappy and you shouldn’t use it, just like any other misuse of languages features. </div></div></blockquote></div><br class=""><div class="">I wish that attitude had more weight in the past, when things like forbidding inheritance or adding warnings for unused results were discussed…</div><div class="">You can write stupid code in every real programming language, no matter how safe it claims to be, so you can’t argue against a feature just by pointing out that it can be misused.</div><div class=""><br class=""></div><div class="">But I guess many people got the impression that Swift tries very hard to protect us:</div><div class="">Things like let and struct help ensuring that things aren’t changed unexpectedly (and sometimes, you are forced to acknowledge that a parameter can be changed with „&“), Optionals help to eliminate nil-value problems, and a strong type system protects us from trying to call methods that aren’t there.</div><div class="">Now we are talking about something that allows us to call methods that "aren’t there“, and although I wouldn’t call it a footgun, it’s definitely a huge change for the language. Even if it is no contradiction to the spirit of Swift (who could decide that if not you?), big changes tend to make people afraid — especially under the prospect that they might come before next year, and will stay forever.</div><div class="">Yes, dynamic dispatch isn’t completely new to Swift, but you barely notice that Cocoa-types have special rules (unless you have to keep it in mind because you implement those rules in the compiler).</div><div class=""><br class=""></div><div class="">The two proposals have benefits, but they have risks as well — and imho nobody can foresee their full impact now.</div><div class="">Therefor, I’m convinced they should not be accepted under the normal terms:</div><div class="">Look back at what renaming private to fileprivate did to Swift, and all the churn that could have been avoided with a trial phase.</div><div class=""><br class=""></div></body></html>