[swift-dev] `withUnsafePointer` mutates `self`

Dave Abrahams dabrahams at apple.com
Tue Dec 15 20:39:36 CST 2015


> On Dec 15, 2015, at 6:33 PM, Kevin Ballard via swift-dev <swift-dev at swift.org> wrote:
> 
> On Tue, Dec 15, 2015, at 03:03 PM, Joe Groff via swift-dev wrote:
>> 
>> Yeah, it seems to me like a reasonable refinement for 'withUnsafePointer' to take an immutable parameter. Since this is a stdlib API change, you should suggest that on swift-evolution.
> 
> A change like that is going to break any code that relies on the inout optimization (where it uses call-by-reference instead of copy-in copy-out when possible). Yes, such code is in violation of Swift semantics today, but it does work.

Two questions:

1. Don’t we want a withUnsafeMutablePointer for the mutating cases (where the inout optimization can take effect) anyway?

2. Joe, these APIs predate many of your changes that make &x transparently convert to Unsafe[Mutable]Pointer arguments.  Are they obsolete?  Can we replace them with { x: Unsafe[Mutable]Pointer in … }(&y) ?

-Dave





More information about the swift-dev mailing list