[swift-evolution] [Review] SE-0159: Fix Private Access Levels

Carl Brown1 Carl.Brown1 at ibm.com
Fri Mar 24 23:36:59 CDT 2017

First off, SE-0159 does not, in my opinion and  the opinions of many people
on this list, present a superior experience for the end user.  It removes a
feature that many people use and will create more confusion by rendering
many online tutorials and answered questions incorrect.

Furthermore, the assertion that there is a "knowable" amount of effort
required to "roll back" corelibs-foundation is laughable.  "Look, it
compiles" is nowhere near the level of rigor required for a code base that
has as much code depending on it as Foundation has. Remember that the
standard for corelibs-foundation is not even "it works." The standard is:
"behaves the same way on Linux that Foundation does on Darwin."  If
something is accessible on Linux but not on Darwin, that's a bug, and needs
to get fixed.  Testing, finding, and fixing the regressions the "roll back"
will cause is what constitutes the bulk of the effort, and that amount of
effort cannot possibly be accurately estimated.


From:	Xiaodi Wu via swift-evolution <swift-evolution at swift.org>
To:	Drew Crawford <drew at sealedabstract.com>, Jonathan Hull
            <jhull at gbis.com>
Cc:	swift-evolution <swift-evolution at swift.org>
Date:	03/24/2017 10:48 PM
Subject:	Re: [swift-evolution] [Review] SE-0159: Fix Private Access
Sent by:	swift-evolution-bounces at swift.org

As Chris has said in the past, the core team is willing to endure a
substantial amount of implementation pain to present a superior experience
for the end user. In any case, I expect that the work needed to roll back
SE-0025 in the core libraries will likely be comparable if not less than
the remaining ongoing work needed in the compiler to make SE-0025 work
fully. Certainly, hundreds of hours would not be required to roll back
corelibs-foundation alone. The exact effort required is knowable, too, as
one can fork and migrate all uses of private to fileprivate right now and
see how long it takes.
On Fri, Mar 24, 2017 at 22:38 Drew Crawford via swift-evolution <
swift-evolution at swift.org> wrote:

  On March 24, 2017 at 10:21:17 PM, Jonathan Hull (jhull at gbis.com) wrote:

        This is exactly the problem. Both for access controls and dispatch.

  How would you respond to clattner's position piece on this?  He disputes
  this point directly:

        Swift is another case of a hybrid model: its semantics provide
        predictability between obviously static (structs, enums, and global
        funcs) and obviously dynamic (classes, protocols, and closures)
        constructs.  A focus of Swift (like Java and Javascript) is to
        provide an apparently simple programming model.  However, Swift
        also intentionally "cheats" in its global design by mixing in a few
        tricks to make the dynamic parts of the language optimizable by a
        static compiler in many common cases...
        The upshot of this is that Swift isn’t squarely in either of the
        static or dynamic camps: it aims to provide a very predictable
        performance model (someone writing a bootloader or firmware can
        stick to using Swift structs and have a simple guarantee of no
        dynamic overhead or runtime dependence) while also providing an
        expressive and clean high level programming model - simplifying
        learning and the common case where programmers don’t care to count

        Is it?  Can you point to an instance where a member of the core
        team said they are aiming for “plenty of overlap”?

  See above

        Honestly, most of your examples could just be split into multiple

  Specific arguments were advanced in those examples that they cannot.  Can
  you refute them?

        You are conflating effort by the swift design and implementation
        community with your personal effort around migration.

  No, I am referencing a Swift at IBM developer who reported that

        the open-source version of Foundation still has a long way to go to
        get the level of quality of the existing Objective-C frameworks,
        and we already have enough work to do without having to go make a
        bunch of arbitrary changes and risk a bunch of regressions because
        someone doesn't like a keyword... Accepting this proposal would
        waste hundreds of person-hours of work...
  swift-evolution mailing list
  swift-evolution at swift.org
  swift-evolution mailing list
  swift-evolution at swift.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170324/0559db5a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170324/0559db5a/attachment-0001.gif>

More information about the swift-evolution mailing list