[swift-evolution] [Proposal][Discussion] Modular Swift

Daniel Duan daniel at duan.org
Tue Feb 21 03:28:11 CST 2017


> On Feb 20, 2017, at 11:16 PM, Jonathan Hull via swift-evolution <swift-evolution at swift.org> wrote:
> 
> It is how it interacts with our current access control.  The scope based nature of this will conflict with the file based nature of the stuff left from Swift 2. I am convinced we need to overhaul it in one sweep to fit one metaphor or the other. The more we mix them, the harder it is to wrap your head around.  We can’t keep rehashing it every 6 months, but that is what will happen so long as it stays in this confused state.

It has been my hope that a lightweight module system will remove the need for `private` *and* `fileprivate`.  I doubt a clean "solution" to the access control story can emerge without it. FWIW.

> I think I would prefer overall trying swift’s file based system because I think we can completely close that with only 1-2 additional concepts (and it would stay conceptually simple).  I would also be fine with switching to a purely type/scope based system with protected, etc…, but I feel like that will need more complexity to get it fully working (e.g. friends), and will end up being a more complex system overall.
> 
> Thanks,
> Jon
> 
> 
>>> On Feb 20, 2017, at 11:03 PM, Robert Widmann <devteam.codafi at gmail.com> wrote:
>>> 
>>> 
>>>> On Feb 21, 2017, at 2:01 AM, Jonathan Hull <jhull at gbis.com> wrote:
>>>> 
>>>> 
>>>> On Feb 20, 2017, at 10:46 PM, Robert Widmann via swift-evolution <swift-evolution at swift.org> wrote:
>>>> 
>>>> More generally, we need to move access control away as far away from filesystems as possible.  One day, the compiler is going to get ported over to a platform with some bonkers rules that are going to turn around and bite us.
>>> 
>>> This is the key thing which I think is being debated right now.  Swift 2 defined the file as a unit of compilation and based its elegant system of access modifiers on that.  With Swift 3 we have a mix of type/scope based modifiers and file based modifiers… and it is super confusing to everyone because we have mixed our metaphors.
>>> 
>>> As much as I want modules, I am now convinced that this proposal will only make that situation worse.  We need to pick one way (file based) or the other (scope based) and commit to it… but either way, it will require a larger overhaul to make the system consistent/usable/teachable again.
>>> 
>>> As an analogy, it is like some people are trying to play rock music during a classical music concert.  Both are great independently, and different people may prefer one or the other… but trying to play them on top of one another just results in noise.
>> 
>> Is there anything specifically about this proposal that turns you off, or is it access control as it stands today?
>> 
>>> 
>>> Thanks,
>>> Jon
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170221/36440d25/attachment.html>


More information about the swift-evolution mailing list