A lot of new hardware to talk and think about from Tuesday’s Apple Event. And a lot of new software to look forward to — which includes a whole lot of the features the Swift team has been working on. I’m very much looking forward to the new software in particular, and the app updates it will bring.
有兴趣赞助 Swift Weekly Brief?点击这里
News and community
The Gradle team announced Swift support to compile, link and install applications and libraries, C++ interoperability, dependency management and more.
Jordan Rose shared a document explaining name translation from C to Swift.
Commits and pull requests
Slava Pestov merged a pull request that directly leads to the elimination of over 400 lines of code from the compiler. 🎉
Johannes Weiss merged a pull request enabling the thread sanitizer for SwiftNIO, now that it works well enough on Linux, thanks to Julian Lettner.
Proposals in review
SE-0263: Add a String Initializer with Access to Uninitialized Storage is under review.
This proposal suggests a new initializer for
String
that provides access to a String’s uninitialized storage buffer.
String
today is well-suited to interoperability with raw memory buffers when a contiguous buffer is already available, such as when dealing withmalloc
ed C strings. However, there are quite a few situations where no such buffer is available, requiring a temporary one to be allocated and copied into. One example is bridgingNSString
toString
, which currently uses standard library internals to get good performance when usingCFStringGetBytes
. Another, also from the standard library, isInt
andFloat
, which currently create temporary stack buffers and do extra copying. We expect libraries like SwiftNIO will also find this useful for dealing with streaming data.
Swift Forums
Davide Mendolia pitched a proposal to introduce generalized Generic Coveriance.
As far as I know, only Arrays support Generic Covariance. Is it possible to generalize it or to introduce in core elements like
Result
and allow libraries like Combine to use it?
Would allow simplification of the following code instead of throwing errors and require casting. Somethings that’s already done today for
Optional
s andArray
.
Richard Wei shared a proposal for Differentiable Programming.
We have completed a comprehensive proposal for the differentiable programming feature we’ve been incubating over the last 1.5 years. We’ve gone over many iterations on the feature design, and have partially completed the implementation. Now we are ready to start a discussion on Swift Evolution, specifically on upstreaming and standardizing the feature.
Since this proposal is overly long (~60 pages), we hope to start by merging it into the
docs/
directory via this pull request, and draft bite-sized proposals that contain references to the mega-proposal.
You can find the full proposal here.
Gwynne Raskind pitched a proposal to support varargs “splat”.
Forwarding variadic arguments has come up fairly often in discussion, and I thought I’d try my hand at working up a proposal, with a focus on arguments against the oft-proposed “prefix operator” syntax.
You can find the full proposal here.
Owen Voorhees pitched a proposal to extend the capabilities of error messages.
As a follow up from Future of Diagnostics UX a couple weeks back, I wanted to further explore the idea of “extended diagnostic messages” and see if they would be a good fit for Swift. What follows is a rough pitch for what that might look like. I’m not sure if this will/should result in an evolution proposal, but I think writing this up using the pitch format makes it easy to evaluate and discuss alternatives.
I’m interested in any and all feedback people have on whether they’d find this useful! I’m especially interested in hearing from anyone who has worked with Rust/Elm in the past and can comment on the benefits & drawbacks of their approaches to diagnostics.
Johannes Weiss shared meeting notes from the Swift on the Server Working Group that took place on August 8.
Finally
I know, I know… Still a good joke in my books.