[Late Pitch] Deprecations, Moves, and Renames

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability (now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` => `TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

···

on Wed Aug 10 2016, Ben Rimmington <me-AT-benrimmington.com> wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

--
Dave

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability (now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

done: Revert [Custom]PlaygroundQuickLook[able] moves · apple/swift-xcode-playground-support@0f42ade · GitHub

···

on Wed Aug 10 2016, Dave Abrahams <swift-evolution@swift.org> wrote:

on Wed Aug 10 2016, Ben Rimmington <me-AT-benrimmington.com> wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

* Deprecate the Indexable protocols with a message indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` => `TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
-Dave

<https://github.com/apple/swift/pull/4200&gt;
<https://github.com/apple/swift/pull/4201&gt;

-- Ben

···

On 10 Aug 2016, at 17:24, Dave Abrahams wrote:

on Wed Aug 10 2016, Ben Rimmington wrote:

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` => `TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecate the Indexable protocols with a message indicating that they
will be gone in Swift 4.

Should IndexableBase get the same treatment?

Yes, see <https://github.com/apple/swift/pull/4091&gt; from the SE-0137 proposal.

<https://github.com/apple/swift/blob/8a73f0b/stdlib/public/core/Collection.swift#L18-L19&gt;

What he said!

···

Sent from my moss-covered three-handled family gradunza

On Aug 11, 2016, at 7:14 AM, Ben Rimmington <me@benrimmington.com> wrote:

On 11 Aug 2016, at 00:24, Brent Royal-Gordon wrote:
On Aug 9, 2016, at 12:09 PM, Dave Abrahams wrote:

That's bad; we'll make sure to update the unavailable annotation for
StringInterpolationConvertible so this doesn't happen!

···

on Fri Aug 12 2016, Ben Rimmington <swift-evolution@swift.org> wrote:

On 12 Aug 2016, at 21:03, Dave Abrahams wrote:

on Fri Aug 12 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

Can the deprecation of ExpressibleByStringInterpolation be reverted next year,
if a backwards-compatible design is proposed for Swift 4.0?

Yes, that's the plan, even if a backwards-compatible design isn't
proposed. The reason to deprecate it now is that we're not sure a
backwards-compatible design will be possible.

The only downside is when manually converting to current Swift syntax:

1. :warning: 'StringInterpolationConvertible' is deprecated:
    renamed to 'ExpressibleByStringInterpolation'

2. :ballot_box_with_check: Fix-it: Use 'ExpressibleByStringInterpolation' instead

3. :warning: 'ExpressibleByStringInterpolation' is deprecated:
    it will be replaced or redesigned in Swift 4.0.
    Instead of conforming to 'ExpressibleByStringInterpolation',
    consider adding an 'init(_:String)'

--
-Dave

Some protocols of SE-0104 seem to be part of the latest Swift 3 snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake then, if they won’t be in Swift 3.0?

···

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com>wrote:

> > On 10 Aug 2016, at 00:36, Dave Abrahams wrote:
> >
> > > on Tue Aug 09 2016, Ben Rimmington wrote:
> > >
> > > > On 9 Aug 2016, at 20:09, Dave Abrahams wrote:
>
> > > >
> > > > Hi Everybody,
> > > >
> > > > With another round of apologies for taking late action, we propose to
> > > > make some deprecations, moves, and renames. The background for these
> > > > moves is as follows:
> > > >
> > > > We've always known that when Swift reached ABI stability (now slated for
> > > > Swift 4), we would be committed to supporting many of the standard
> > > > library's design decisions for years to come. What we only realized
> > > > very recently is that, although Swift 3.0 is *not* shipping with a
> > > > stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
> > > > code creates similar implications when it comes to certain protocols,
> > > > today. Especially where these protocols show up in refinement
> > > > hierarchies, we can't keep Swift 3 code working in the future without
> > > > carrying them forward into future libraries.
> > > >
> > > > The proposed changes are as follows:
> > > >
> > > > * Move `CustomPlaygroundQuickLookable` to the PlaygroundSupport module.
> > > > This component is really only useful for playgrounds, and doesn't
> > > > belong in the standard library.
> > >
> > > I didn't think it was possible to `import PlaygroundSupport` unless the
> > > current file is within a playground. If so, how can corelibs-foundation
> > > or third-party modules add `CustomPlaygroundQuickLookable`
> > > conformance?
> >
> > Ahhh... yeah, I didn't realize that, and we don't have time to change
> > that restriction for Swift 3. It's not a problem for
> > corelibs-foundation but it would be for 3rd-party libraries.
> >
> > OK, Dmitri and I just figured out how we can change the home of these
> > types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
> > So I'm going to withdraw this part of the proposal.
>
> Will the following need to be reverted?
>
> <https://github.com/apple/swift/pull/4089&gt;
>
> <https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
> <https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
> <https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
> <https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
> <https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;
Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

> > > > * Deprecate the Indexable protocols with a message indicating that they
> > > > will be gone in Swift 4. These protocols are implementation details
> > > > of the standard library designed to work around language limitations
> > > > that we expect to be gone in Swift 4. There's no reason for anyone to
> > > > ever touch these; users should always use a corresponding Collection
> > > > protocol (e.g. instead of MutableIndexable, use MutableCollection).
> > > >
> > > > * Deprecate the ExpressibleByStringInterpolation protocol with a
> > > > message indicating that its design is expected to change. We know
> > > > this protocol to be mis-designed
> > > > (https://bugs.swift.org/browse/SR-1260\) and limited
> > > > (https://bugs.swift.org/browse/SR-2303\), but there's no time to fix it
> > > > for Swift 3. If we knew what the new design should look like, we
> > > > might be able to calculate that the current API is supportable in a
> > > > forward-compatible way (as we do for Comparable). Unfortunately, we
> > > > do not.
> > > >
> > > > * Rename Streamable to TextOutputStreamable and add a deprecated
> > > > Streamable typealias for it. Now that OutputStream been renamed to
> > > > TextOutputStream, we should also move Streamable out of the way.
>
> In apple/swift#4131, these lines have overrun the 80 column limit:
>
> <https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
> <https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;
>
> <https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
> <https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;
>
> TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:
>
> <https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;
Pull requests gratefully accepted for all of these corrections

> > > > Deprecation is being proposed instead of underscoring or renaming
> > > > because it allows existing code to keep working (with warnings). At
> > > > this late stage, it would be bad to actually break anything.
> > >
> > > If the SE-0104 (protocol-oriented integers) proposal has been deferred,
> > > should any protocols (e.g. SignedNumber) be deprecated?
>
> Will the SE-0104 proposal be accepted for Swift 4.0?
It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

They’re still in Swift 3. Did something go wrong, or will they simply not show up in the final Swift 3.0?

···

On 10 Aug 2016, at 22:28, Dave Abrahams <dabrahams@apple.com> wrote:

on Wed Aug 10 2016, Tim Vermeulen <tvermeulen-AT-me.com <http://tvermeulen-at-me.com/&gt;&gt; wrote:

Some protocols of SE-0104 seem to be part of the latest Swift 3
snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake
then, if they won’t be in Swift 3.0?

Yes, they've been pulled out of the release branch:
Remove integers from 3.0 branch by dabrahams · Pull Request #4112 · apple/swift · GitHub

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com>wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability
(now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the
PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message
indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time
to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

--
-Dave

They’re still in Swift 3. Did something go wrong, or will they simply not show up in the final Swift 3.0?

Please elaborate on what you mean: what is in that shouldn’t be?

-Chris

···

On Sep 7, 2016, at 12:58 PM, Tim Vermeulen via swift-evolution <swift-evolution@swift.org> wrote:

On 10 Aug 2016, at 22:28, Dave Abrahams <dabrahams@apple.com <mailto:dabrahams@apple.com>> wrote:

on Wed Aug 10 2016, Tim Vermeulen <tvermeulen-AT-me.com <http://tvermeulen-at-me.com/&gt;&gt; wrote:

Some protocols of SE-0104 seem to be part of the latest Swift 3
snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake
then, if they won’t be in Swift 3.0?

Yes, they've been pulled out of the release branch:
Remove integers from 3.0 branch by dabrahams · Pull Request #4112 · apple/swift · GitHub

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com <http://me-at-benrimmington.com/&gt;&gt;wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability
(now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the
PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message
indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time
to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

--
-Dave

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

I think he is pointing out that in
https://github.com/apple/swift/blob/master/stdlib/public/core/Integers.swift.gyb
there is the FixedWidthInteger protocol, which is part of SE-104.
Also, there is
static func doubleWidthMultiply (line 392)
and
static func doubleWidthDivide (line 394)
but then only
public static func doubleWidthDivide (line 589)
and there is no
public static func doubleWidthMultiply
anywhere in the file.
If the static func doubleWidthMultiply in line 392 exists, shouldn't there
be a public static func for it, too?
Why is there this asymmetry regarding multiplication and division?

Sincerely,
Björn

···

On Fri, Sep 9, 2016 at 1:35 AM, Chris Lattner via swift-evolution < swift-evolution@swift.org> wrote:

On Sep 7, 2016, at 12:58 PM, Tim Vermeulen via swift-evolution < > swift-evolution@swift.org> wrote:

They’re still in Swift 3. Did something go wrong, or will they simply not
show up in the final Swift 3.0?

Please elaborate on what you mean: what is in that shouldn’t be?

-Chris

On 10 Aug 2016, at 22:28, Dave Abrahams <dabrahams@apple.com> wrote:

on Wed Aug 10 2016, Tim Vermeulen <tvermeulen-AT-me.com > <http://tvermeulen-at-me.com/&gt;&gt; wrote:

Some protocols of SE-0104 seem to be part of the latest Swift 3
snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake
then, if they won’t be in Swift 3.0?

Yes, they've been pulled out of the release branch:
Remove integers from 3.0 branch by dabrahams · Pull Request #4112 · apple/swift · GitHub

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com > <http://me-at-benrimmington.com/&gt;&gt;wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability
(now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the
PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message
indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time
to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/
public/core/Mirror.swift#L843>
<https://github.com/apple/swift/blob/f2443f4/stdlib/
public/core/Mirror.swift#L893>

<https://github.com/apple/swift/blob/f2443f4/stdlib/
public/core/Print.swift#L177>
<https://github.com/apple/swift/blob/f2443f4/stdlib/
public/core/Print.swift#L228>

TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

--
-Dave

_______________________________________________
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

The new integer protocols (Arithmetic, FixedWidthInteger, etc) aren’t supposed to be in Swift 3.0, right? They show up in the latest snapshot.

···

On 9 Sep 2016, at 01:35, Chris Lattner <clattner@apple.com> wrote:

On Sep 7, 2016, at 12:58 PM, Tim Vermeulen via swift-evolution <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:

They’re still in Swift 3. Did something go wrong, or will they simply not show up in the final Swift 3.0?

Please elaborate on what you mean: what is in that shouldn’t be?

-Chris

On 10 Aug 2016, at 22:28, Dave Abrahams <dabrahams@apple.com <mailto:dabrahams@apple.com>> wrote:

on Wed Aug 10 2016, Tim Vermeulen <tvermeulen-AT-me.com <http://tvermeulen-at-me.com/&gt;&gt; wrote:

Some protocols of SE-0104 seem to be part of the latest Swift 3
snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake
then, if they won’t be in Swift 3.0?

Yes, they've been pulled out of the release branch:
Remove integers from 3.0 branch by dabrahams · Pull Request #4112 · apple/swift · GitHub

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com <http://me-at-benrimmington.com/&gt;&gt;wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability
(now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the
PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message
indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time
to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

--
-Dave

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

Actually, it seems as though they are only in the development snapshot, and not the default Xcode 8.0 toolchain. I didn’t realise the development snapshots already included things for beyond Swift 3.0.

···

On 9 Sep 2016, at 01:35, Chris Lattner <clattner@apple.com> wrote:

On Sep 7, 2016, at 12:58 PM, Tim Vermeulen via swift-evolution <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:

They’re still in Swift 3. Did something go wrong, or will they simply not show up in the final Swift 3.0?

Please elaborate on what you mean: what is in that shouldn’t be?

-Chris

On 10 Aug 2016, at 22:28, Dave Abrahams <dabrahams@apple.com <mailto:dabrahams@apple.com>> wrote:

on Wed Aug 10 2016, Tim Vermeulen <tvermeulen-AT-me.com <http://tvermeulen-at-me.com/&gt;&gt; wrote:

Some protocols of SE-0104 seem to be part of the latest Swift 3
snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake
then, if they won’t be in Swift 3.0?

Yes, they've been pulled out of the release branch:
Remove integers from 3.0 branch by dabrahams · Pull Request #4112 · apple/swift · GitHub

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com <http://me-at-benrimmington.com/&gt;&gt;wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability
(now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the
PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message
indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time
to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

--
-Dave

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

Actually, it seems as though they are only in the development snapshot, and not the default Xcode 8.0 toolchain. I didn’t realise the development snapshots already included things for beyond Swift 3.0.

Right. Master and the development snapshots that come from it include things beyond Swift 3.

-Chris

···

On Sep 9, 2016, at 4:11 AM, Tim Vermeulen <tvermeulen@me.com> wrote:

On 9 Sep 2016, at 01:35, Chris Lattner <clattner@apple.com <mailto:clattner@apple.com>> wrote:

On Sep 7, 2016, at 12:58 PM, Tim Vermeulen via swift-evolution <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:

They’re still in Swift 3. Did something go wrong, or will they simply not show up in the final Swift 3.0?

Please elaborate on what you mean: what is in that shouldn’t be?

-Chris

On 10 Aug 2016, at 22:28, Dave Abrahams <dabrahams@apple.com <mailto:dabrahams@apple.com>> wrote:

on Wed Aug 10 2016, Tim Vermeulen <tvermeulen-AT-me.com <http://tvermeulen-at-me.com/&gt;&gt; wrote:

Some protocols of SE-0104 seem to be part of the latest Swift 3
snapshots (Arithmetic, FixedWidthInteger, etc) - was this a mistake
then, if they won’t be in Swift 3.0?

Yes, they've been pulled out of the release branch:
Remove integers from 3.0 branch by dabrahams · Pull Request #4112 · apple/swift · GitHub

on Wed Aug 10 2016, Ben Rimmington<me-AT-benrimmington.com <http://me-at-benrimmington.com/&gt;&gt;wrote:

On 10 Aug 2016, at 00:36, Dave Abrahams wrote:

on Tue Aug 09 2016, Ben Rimmington wrote:

On 9 Aug 2016, at 20:09, Dave Abrahams wrote:

Hi Everybody,

With another round of apologies for taking late action, we propose to
make some deprecations, moves, and renames. The background for these
moves is as follows:

We've always known that when Swift reached ABI stability
(now slated for
Swift 4), we would be committed to supporting many of the standard
library's design decisions for years to come. What we only realized
very recently is that, although Swift 3.0 is *not* shipping with a
stable ABI, the promise that Swift 3.0 code will work with Swift 4.0
code creates similar implications when it comes to certain protocols,
today. Especially where these protocols show up in refinement
hierarchies, we can't keep Swift 3 code working in the future without
carrying them forward into future libraries.

The proposed changes are as follows:

* Move `CustomPlaygroundQuickLookable` to the
PlaygroundSupport module.
This component is really only useful for playgrounds, and doesn't
belong in the standard library.

I didn't think it was possible to `import PlaygroundSupport` unless the
current file is within a playground. If so, how can corelibs-foundation
or third-party modules add `CustomPlaygroundQuickLookable`
conformance?

Ahhh... yeah, I didn't realize that, and we don't have time to change
that restriction for Swift 3. It's not a problem for
corelibs-foundation but it would be for 3rd-party libraries.

OK, Dmitri and I just figured out how we can change the home of these
types for Swift 4 without breaking Swift 3 code (mirrors to the rescue!)
So I'm going to withdraw this part of the proposal.

Will the following need to be reverted?

<https://github.com/apple/swift/pull/4089&gt;

<https://github.com/apple/swift-xcode-playground-support/commit/aab7af4&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/865fd0c&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/ab605ef&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/4bd6575&gt;
<https://github.com/apple/swift-xcode-playground-support/commit/acee2e1&gt;

Technically, no, because typealiases make it unnecessary, but yes, we
plan to do that.

* Deprecate the Indexable protocols with a message
indicating that they
will be gone in Swift 4. These protocols are implementation details
of the standard library designed to work around language limitations
that we expect to be gone in Swift 4. There's no reason for anyone to
ever touch these; users should always use a corresponding Collection
protocol (e.g. instead of MutableIndexable, use MutableCollection).

* Deprecate the ExpressibleByStringInterpolation protocol with a
message indicating that its design is expected to change. We know
this protocol to be mis-designed
(https://bugs.swift.org/browse/SR-1260\) and limited
(https://bugs.swift.org/browse/SR-2303\), but there's no time
to fix it
for Swift 3. If we knew what the new design should look like, we
might be able to calculate that the current API is supportable in a
forward-compatible way (as we do for Comparable). Unfortunately, we
do not.

* Rename Streamable to TextOutputStreamable and add a deprecated
Streamable typealias for it. Now that OutputStream been renamed to
TextOutputStream, we should also move Streamable out of the way.

In apple/swift#4131, these lines have overrun the 80 column limit:

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L843&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Mirror.swift#L893&gt;

<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L177&gt;
<https://github.com/apple/swift/blob/f2443f4/stdlib/public/core/Print.swift#L228&gt;

TextFormatting.rst also needs `Streamable` =>`TextOutputStreamable`:

<https://github.com/apple/swift/blob/master/docs/TextFormatting.rst&gt;

Pull requests gratefully accepted for all of these corrections

Deprecation is being proposed instead of underscoring or renaming
because it allows existing code to keep working (with warnings). At
this late stage, it would be bad to actually break anything.

If the SE-0104 (protocol-oriented integers) proposal has been deferred,
should any protocols (e.g. SignedNumber) be deprecated?

Will the SE-0104 proposal be accepted for Swift 4.0?

It is expected to be. We may even be able to get it into a Swift 3
point-release (e.g. 3.1)

--
Dave

--
-Dave

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

"SE-0104: Protocol-oriented integers" was removed from the `swift-3.0-branch` in <https://github.com/apple/swift/pull/4112&gt;

A partial implementation is in the `master` branch:

* Merged: <https://github.com/apple/swift/pull/3479&gt;
* Merged: <https://github.com/apple/swift/pull/3502&gt;
* Open: <https://github.com/apple/swift/pull/3796&gt;

-- Ben

···

On 9 Sep 2016, at 12:09, Tim Vermeulen wrote:

The new integer protocols (Arithmetic, FixedWidthInteger, etc) aren’t supposed to be in Swift 3.0, right? They show up in the latest snapshot.