There was an order of magnitude more than 60 emails about this. In my inbox, I 
count 452 emails that have 0117 in the title. Discussion had already started 
before the proposal and I'm not counting these.

Félix

> Le 14 août 2016 à 02:17:36, John Holdsworth via swift-evolution 
> <swift-evolution@swift.org> a écrit :
> 
> Hi folks,
> 
> I see from building the latest Swift-3.0 branch that I’m a little behind the 
> times and this proposal has been accepted :(
> 
> https://github.com/apple/swift-evolution/blob/master/proposals/0117-non-public-subclassable-by-default.md
> 
> Is there no way we can revisit this decision? 60 emails on a mail group not 
> read by the whole community
> doesn’t quite seem enough validation for such a significant change to me. Of 
> those that expressed an
> opinion on the thread many were against sealing classes outside the module. 
> 
> https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160627/022364.html
> 
> I personally feel it's a huge mistake for the following reasons:
> 
> 1) it “breaks open source” reducing the reusability of third party software 
> by default.
> 
> 2) Contrary to arguments about the likely performance benefits of 
> de-virtualisation of method dispatch it is
> likely to make Swift programs launch more slowly due to the dynamic linker 
> having to slide large numbers
> of function pointers for most method calls (itself an expensive operation) 
> whether a call is even made.
> 
> On the first point it's an established technique in OOP to be able to 
> subclass and override to adapt a class
> for a role perhaps it’s author never considered. Call this “monkey-patching” 
> if you like but it is a part of being
> able to use open source libraries without having to make a fork as would be 
> the case if sealed by default.
> Are we expecting developers to remember to leave their classes (and methods?) 
> "open”? If they do feel
> that others shouldn’t subclass or override there was always “final". 
> Distinctions about whether this is possible
> inside or outside a module seem a mute point to me.
> 
> The second point is more of an engineering one. “Virtual” dispatch on Swift 
> is not a significant overhead
> compared to fully dynamic dispatch on Objective-C which even then was seldom 
> a problem. There is a
> cost however to de-virtualisation and resolving to a direct call to a method 
> address in that the dynamic
> linker has to resolve and slide the pointer on load. This type of concern is 
> a bad argument to use in 
> designing a language anyway even if it is called Swift.
> 
> Well, I know the boat has left on this one and I’ll likely have to live with 
> it but this is the proposal I
> most disagree with on evolution this far. Programmers have morals and just 
> because you shouldn’t
> do something doesn’t mean the language needs to turn that into can’t by 
> default when the need arises.
> If this change does go ahead please try to get it into the next Xcode beta as 
> it is a very incompatible one.
> 
> Cheers,
> 
> John
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to