[SWIFT开源] Swift 开源周刊#14Swift 周报 #76

原文地址:http://swiftweekly.github.io/issue-14/
译者:PMST

作者:Jesse
Squires,原文链接,原文日期:2017-06-29
译者:四娘;校对:Cwift;定稿:shanks

迎来到开源周刊14愿意!效仿 Dave
Verwer,我哉本着
Xcode7.3 最后颁发版进行了预测 —— 包括 iOS9.3,OS X10.11.4 以及
watchOS2.2 三只版。Xcode7.3 将富含最终版本的 Swift2.2
语法。核心团队或会见以下周一解开谜底。ps:Apple 将吃 3.21 举办 “Let Us
Loop You
In”
的发布会。

本期作者:Garric
Nahapetian

启动任务

来自 Ehsan
Hahromi
的建议:

  • SR-306
    —— 新增稳定排序算法
  • SR-587
    —— 将Array(count:repeatedValue:) 构造方法移至
    RangeReplaceableCollection商讨的扩大当中。

来自 Daniel
Eggert
的建议:

  • 实现
    NSURLCredential
  • 实现
    NSCachedURLResponse
  • 实现
    NSURLProtectionSpace

另外,上周周刊中 Brian Gesiak
提出的问题依旧悬而未决:

  • SR-906
    —— 允许 XCTestCase.continueAfterFailure 进行可写
  • SR-875
    —— 促使 swift-corelibs-xctest 的功力测试正则匹配,使得用起再也像
    FileCheck

付给任务啦!倘若你想要交任务,请新建一个
issue
或 pull
request。同样你还足以在
tweet 上
@swiftlybrief。任务可来例外的难度,但平常要求可初学者。

Swift 的 git
仓库即时到特别忙,这里出部分
GitHub 的数目:

仓库

本周新增了
apple/cups
仓库,这是来官方版的
CUPS
资源。如一旦您对斯不是老大熟悉,简单的话CUPS是冲专业的,为Apple OS
X和其余类 UNIX
操作系统开发的开源打印系统。此代码都是了十几年(自1999年初始),所以看在她“与时俱进”,将品种搬迁到GitHub真的百般不可思议。“应大众的求,CUPS
现已托管为 GitHub 上。所有 bugs 都一头迁移至了 GitHub 的 issue
追踪器上,同时更新了 git
仓库,包括于1.7.0版开始丢失的昭示标签。在未来几乎圆里,我们尚用拿
cups.org 网站搬迁至 GitHub 上开展托管。” 我怀念清楚我们是否会见证还多来
Apple 的开源项目搬迁至 GitHub 上啊?希望这样吧。

除了 Merge 之外,总共有 39 单作者 push 了 156 只 commit
到主分支,所有支行算起来有 284 个 commit。在主分支,401
个文件被修改,增 12589 删 9215 …

Commits 和 PR

来自 objc.io 的
Daniel Eggert 提交了当 corelibs-foundation 中实现 NSHTTPURLRepsonse
pr。👏

Max Howell 将 Swift Package Manager
移植至
Swift3 版本及了。

Nate Cook 为根据新索引模型的联谊打及 .flatten
补丁。

John Regner 递交了一个
PR,关于以
SourceKit 中的代码格式化逻辑部分移动至 libIDE中,作为
SR-146
提案的一致组成部分(该提案旨在创建一个 swift-format 工具)。

John Holdsworth 修复了 Xcode7.3b5 版本被关于 SourceKit 使用 “Quick Help”
崩溃的题目。 我没听说过SourceKit 会崩溃。 

@practicalswift
新增了部分编译崩溃的测试案例。

Janek Spaderna 修复了 AST/sema 中之夭折问题:当你当 where
从句被引用枚举用例(enum case)会招致
crash。目前解决方案吗打印错误信息而无直接倒。该问题看起头是由
@practicalswift 发现的。

于 WWDC 结束不久便完事了如此多之政工属实属不易,在 Swift 4
立项之后基本团队与别的贡献者完成了震惊之开展。

提案

Erica Sadun 的
SE-0039
提案:Modernizing Playground Literals 已经正式被 Swift3.0
采纳了。“社区与基本团队一致认为该项提案多了 swift 编程语言的一致性。”
Chris Lattner 将拖欠任务归档到
SR-917
用于追踪进度。“对于那些从参与编译器开发的伴儿,这将是一个意思非同一般之起步任务。”

Jesse Rusak 的
SE-0037
提案:关于清理注释和运算符之间的相问题已正式为采纳了。“社区中几无相关讨论,但基本团队与社区参与者都代表同情,认为就将迎刃而解语言中之一个角问题。”你可以在
SR-960
关注工作之进度。

Jake Carter 和 Erica Sadun 的
SE-0046
提案:为统揽首签(first
label)在内的保有参数建立平等的竹签行为建议,已正式被 Swift 3
采纳了。“社区与基本团队一致认为该提案有助于产生积极的震慑,不但增加了语言的可预测性和一致性,而且移除了一个大的模糊问题。”,该项任务可当SR-961追踪查看。

llya Benlenkiy 的
SE-0025
提案:Scoped Access Level
被归做越来越的修订,这看起核心团队要对是很感兴趣的。虽然他们看当下契合
Swift 的开发方法,但是她们还是担心localprivate次造成混淆。

所求的修订含提及的 local 关键字。核心团队觉得当前 private
关键字能生恰当地描述提及的功能性。其他具备私有访问说明符的编程语言密切结合提出的区域性行为。所以这样的反将有助于削减开发者语言使用的切换,同时正使基本团队所当的,private重要字所要描述的情节还合适。

具体而言,核心团队提出了一个修订版本的提案,旨在用现有的private重大字语义更改成提及的local要字,并为现有的私房语义引入一个新的名目,更强烈地表述文件之个人访问。正因改变影响对最宽广,因此着力团队觉得尚待开更的明白审批。

Michael IISeman 的
SE-0044
提案:“作为成员导入”提案目前地处审状态。“该提案旨在为
C API 作者提供相同栽体制,在导入 Swift
类型时指定导入函数和参数成员的法力。同时她还也那些以一致性,且独具从严命名约定的
API 提供一个机动测算选项。”

Joe Groff 的
SE-0042
提案:“ Flattening the function type of unapplied method references”
目前处在核对状态。“我们相应针对一个请勿使用之(unapplied)方法引用进行项目调整,通过平整化(flatten)函数传入值方式替换掉原先的
curried 类型。这将大大使得 未应用之(unapplied)方法在实际上 Swift
库中还享有可读性和实用性,同时还应支持突变函数。”当前我们得以经奔reduce方法传入全局运算符+来实现,譬如:arrayOfInts.reduce(0,combine:+)。但是若可一筹莫展透过传播类似Set.Union其次进制方法来做一样的转业,譬如:arrayOfSets.reduce([], combine: Set.union)。这项提案将用使后者成功或者。

Andrew Benett 的
SE-0043
提案:“在多独门当户对配 case 标签中宣称变量”目前着审核中。“ Swift2
已经落实了
case慎选中大多规格相当。但是非适用case用例中宣称变量的情况。提案的改动不但可减去重复的代码,同时还用减不当产生。当不定义变量时,它和多模式匹配保持一致。”

Adrian Kashivskyy 和 Erica Sadun 的
SE-0047
提案:“Defaulting non-Void functions so they warn on unused
results”目前正在审核中。“就
Swift 目前情,通过为计和函数标注 @warn_unused_result
来告知编译器对于返回路为 non-void
的章程还是函数,其归来回值应该叫下(译者注:也就是是函数返回值也该为采取,丢弃会时有发生警告)。这是一个肯定之声明。在她的情事下,忽略的结果未生警告或错。[…]不利用的结果再次能向编程者说明错误,而无会见以
mutating 和 non-mutating 函数对中发生模糊。该提案使得 ‘warn on unused
result’ 作为 Swift 方法与函数的默认行为。

iOS 11 beat 2,tvOS 11 beta 2 和 Swift Playgrounds 2 beta 2
且开下载了,点击此下载,遇到
bug 记得如报告哦!

邮件列表

Max Howell
发邮件称,想要回升原先SPM中的一个叔着测试框架协议提案。

Daniel Eggert 开启一个有关以封装libcurl来实现 NSURLSession
的话题。Philippe
Hausler 回复了有有关 corelibs-foundation 和 移植 API 到 Linux
的组成部分趣闻。

由 David
Hart
开启之话题仍在后续,关于“Referencing Objective-C
key-paths”草案。这将解除另一个
KVC/KVO 中使 stringly-typed 的代码。“这项提案旨在用 key-paths
进行代码修改时,能够提高安全性及坚韧,通过引入一个编译器来检查表达式实现。”社区上报一切片好评。

Yuta Koshizawa 建议为 Result<T> 增加 throws
语法糖,“将抛出(throws)和
结果(result)统一成单个特性,以保全语言简洁性。”Joe Groff
通过深思熟虑后,回应基本团队关于 Swift
中错误处理模型决定的复多细节,并附着了原委。

咱俩广阔讨论了于里边添加一个 Result
类型,但是最终无法自圆其说。唯一我们得以预见的应用案例是经
CPS-inversion-style
抽象概念进行线程错误,譬如异步保证,其他部分咱们要会提供适宜语言支持的事物。一般的话,expressing
effects
作为一如既往元值是一个一定糟糕之纸上谈兵;除了通过没完没了底失效教程污染互联网环境,他们啊无开清洁,而是强加于想只要之地方

  • 乃不得不在 Result<Async<T>>
    Async<Result<T>>摘,亦或者为ResultT<AsyncT<Identity>><T>立一个单子转换器
  • 同时当跟任何高阶的纸上谈兵一起用时,它们不开当然的工作 –
    倘若你正映射一个throws 函数到一个会合中,你可能还倾向于经
    rethrows 来拓展不当抛来,而非是为 Result<T>
    集合完毕。我宁愿看到咱们利用一个不过扩大的代数效应系统,譬如
    http://www.eff-lang.org
    throwsaync及另部分操纵流效应提供了框架,以达干净地结合和虚幻的目的。我以为
    throws 将作为第一单“种子”。

自总是发出那么几独原型 Result
库匪可知使您称心。

Joe Groff 恢复了早前关于编译器指令的话题,同时 Erica Sadun
为之起了同一客新提案,旨在为模拟器和设备目标扩展构建配置测试。“该提案新增#if target(simulator)

#if target(device)用来区分以代码是否运行在模拟器上,亦可能真机设备及。”

赞助链接

升级你的技术 —
成就而的职业生涯

学者带来你入门到精通只待一周到时。

bignerdranch.com

形容以终极

最后 —— 还在呢利用面向协议编程犹豫不觉?何不尝试下 面向 side-effect
编程,前提是得下值类型。倘进行了价值拷贝,就不再是你的问题了。😂

Swift Unwrapped

在第 17 集:Swift
里的测试,Jesse
和 JP 讨论了如何使用 Swift
和呼应的家伙进行测试,保证每一个上线版本都齐刷刷。

情报及社区

Greg Heo
描绘了一样首文章讲述
Swift 里 EncoderEncodable
的原理,这个新力量会影响至无数开源之软件,了解它们的原理更有助于你明白它相关的
PR。

Matt Godbolt 的深究编译器现已支持
Swift。(译者注:这是一个念编译原理的网站,输入代码,就可以看到编译后当针对承诺平台及的汇编码)

David Owens 放出了一个 VSCode
的插件,让
VSCode 也能够支持 Swift。

Swift
支援团队开源了
Swift-Evolution 的 App —
Evo。

Steven Hepting
讲述了
Swift 的 sort()
方法是怎优化的,这里可以找到相应的源码。

Learn Swift
皇后区
& Learn Swift
波兰,
都收获下了帷幕。 这是11期 Learn Swift
{城市}
系列的合集!下次会见是以哪所都市为?

Brisk,一个反映 bug 的 macOS
app 上线了
1.0
版本
,并且迅速迭代发布了 1.0.1
版本,记得要援助反馈
bug 哦!

初次组门又发出矣重多的进展,这对我吧很风趣,因为自个人也使用过类似的方法。就像
Slava
指出的那么,这起事情总还有优化的长空。(译者注:元组门就是闭包里之元组不再自动进行的业务,前两周的周报犹来关联,详情请圈
SE-0029,SE-0066

SE-0110)。

交由和联合的请求

Ben Cohen
发起一个初的联合请求,让
Substring 可以加上到 Hashable 容器里(详情请看下的邮件列表讨论)。

Itai Ferber
透过了一个集合请求,修复了
SR-5277,让
class 可以跟父类共用一个
Encoder/Decoder。更多详情请看这里的座谈进程。

Philippe Hausler
经了一个合并请求,修复了
SR-5292。修复了
Foundation 里使用 slice 嵌套 slice 时产生的 bug。

Joe Groff
通过了一个联合请求,让
KeyPath 支持而选链(Optional Chainning)和要挟解包(Force Unwrapping)。

Doug Gregor
透过了一个合请求
,优化了主导项目,类型别名和递归的拍卖逻辑,并且修复了
SR-4295,SR-4757,SR-4786,SR-5014

SR-4737。

Dave Abrahams
发起一个联合请求,实现了
SE-0180
字符串索引越界(后面来详实介绍)。

在命令行里运行 man swift
时展示的手册就获取更新。

Maxim Moiseev
经了一个统一请求,修复了
[String] 使用 flatMap 时之通向后兼容性,有趣味了解之说话可翻此的
Swift 迷思- by Robert
Widmann。

David Farler
经过了一个联结请求,内容要是
Xcode 9 里编译时索引功能(index-while-building)在即时段时里的改进。

若您想知道有修复了 rdar:// 的 PR
的细节,放心大胆地问便好了。

核中的提案

SE-0180:
String Index Overhaul
在局部议论之后再退回审结等。

邮件列表

Erica Sadun
写了扳平篇稿子关于
!! 这个她叫“解包或崩溃”的操作符。你得于这个
Gist
里找到呼应的文稿。

动用一个操作符,在解包失败时供报告消息,已经变成 Swift
开发者社区里大面积会促成之一个物了,你对于把此大采用的操作符加入到标准库有什么想法?

译者注:使用了 !! 的代码会类似于这般
let _ = optionalObject !! "空的对象",能够当要挟解包失败的时节提供
debug 信息,思路十分棒,建议大家看一下。

Ben Cohen
发了一样首文章,内容主要是有关
Substring 性能的议论。

作为
SE-0163
的要义有,Substring 显式转换到 String
的题目都推到第一版实现后讨论。直到现在,收到的举报也还尚未被咱看这么的显式转换很有必要
— 从 3.2 迁移到 4.0 的时光吗有些用因此到 Substring
String的换。即便不在出目标里,只要是就上面的版迁移问题,收到你的反馈我们还见面异常谢谢。

[…]

Itai Ferber 当 Swift-Evolution
发了千篇一律漫长消息
,征求
SE-0166

SE-0167
的申报,希望社区打听及事先的无数提议已让采纳并落实,继续提供建议以及理念。

Robert Bennett
提了一个趣的建议,希望
protocol 里可声明 let。但自己并不认为他取的毕竟一个题目。

自我在拍卖协议的早晚遭遇上了一个讨厌的题目。在一个 class 或者 struct
里使用 let 去修饰一个性质并且以 init
方法里初始化是大宽泛的情形,但也未曾办法在一个 protocol extension
里实现一个这样的 init 方法。

[…]

最后

“索取”有时候比“给予”感觉又好

正文由 SwiftGG 翻译组翻译,已经赢得作者翻译授权,最新篇章要访问
http://swift.gg。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注