原文連接: Getting ready for Swift to stop breaking code
原文發(fā)布日期:2016-2-29
文章來源:
作者:
譯者:Crystal Sun
校對(duì):
定稿:
當(dāng)我們提到 code breaking 時(shí)柿冲,差不多是指下面的兩個(gè)含義茬高。
- 語音語義發(fā)生了變化。這時(shí)你需要重構(gòu)代碼假抄,典型例子就是 Swift 從
(..., $NSError) -> Result?
格式改為錯(cuò)誤拋出怎栽。 - 語言語法發(fā)生了變化。這時(shí)只需進(jìn)行遷移宿饱,然后大部分代碼或多或少都能得到修復(fù)(還有一小部分需要微調(diào))熏瞄。
后者會(huì)帶來各種不方便,但前者卻是破壞性的谬以。如果我猜的沒錯(cuò)强饮,Swift 3 的目標(biāo)是進(jìn)行最后一次內(nèi)部調(diào)整,等到 Swift 4 的時(shí)候为黎,不會(huì)再重新設(shè)計(jì)語言了胡陪,而是增加新的特性。
Chris Lattener 寫道碍舍,
贊同 —— Swift 3 的源碼調(diào)整已經(jīng)完成了柠座,所以我們會(huì)提供非常棒的遷移工具,幫助人們能夠迅速完成遷移工作片橡。除了 Swift 3 外妈经,Swift 社區(qū)將會(huì)成為多元化社區(qū),支持多個(gè)平臺(tái)系統(tǒng)捧书,創(chuàng)造出更多不同的工具和 IDE 供開發(fā)者使用吹泡。
正因如此,在 Swift 3 發(fā)布之后经瓷,source breaking changes 會(huì)更加困難爆哑,我們傾向于盡可能地把 breaking 放到 Swift 3 中。
更多:
雖然 Swift 4 可能也有一些breaking舆吮,不過我們更希望能夠減少breaking的情況
這也是為什么我們要努力把 Swift 3 完善好的原因揭朝,在目前的時(shí)間限制下队贱,即使這意味著要推掉一些有趣的工作……
……
我認(rèn)為現(xiàn)在沒有必要討論 Swift 3 之后的特性,也不會(huì)帶來什么好處潭袱。沒有足夠的資源讓核心團(tuán)隊(duì)成員參與討論柱嫌,我們更希望能夠讓社區(qū)和開源貢獻(xiàn)者將主要的精力集中在 Swift 3 上,力爭讓 Swift 3 功能更加強(qiáng)悍屯换。
Swift 3 的特性能夠預(yù)示 Swift 4 的走向编丘。盡管有一些特性我們能夠預(yù)知(例如并發(fā)會(huì)成為 Swift 的一個(gè)特性),仍然有很多完全不同的設(shè)計(jì)方向值得我們探討和嘗試彤悔。雖然現(xiàn)在不太可能來一場討論嘉抓,權(quán)衡決定哪種是最好的解決方案,不過大量的討論必定會(huì)浪費(fèi)時(shí)間晕窑。
現(xiàn)在需要所有相關(guān)的人等到合適的時(shí)間再來討論掌眠,雖然這需要足夠的耐心和克制,不過對(duì)每個(gè)人來說幕屹,這是最好的蓝丙。今年秋天(北半球)很快就要到了,我們還有太多重要的工作需要完成望拖。
將 Swift 3 的各種目標(biāo)固定下來列出時(shí)間表這件事可不太容易渺尘,尤其是 Swift 開源之后。
預(yù)測 Swift 3 最終結(jié)果(比如:“Swift 3 會(huì)實(shí)現(xiàn)我們的目的嗎说敏?”)鸥跟,本身就是一件危險(xiǎn)的事情,也不可能做到完美預(yù)測盔沫。在語言設(shè)計(jì)和增加特性上有太多的未知了(比如:我們連一個(gè)具體的設(shè)計(jì)稿都沒有医咨,你如何知道要花費(fèi)多少時(shí)間來執(zhí)行呢?)架诞,隨著新的問題不斷出現(xiàn)拟淮,我們的工作量又在不斷增加,當(dāng)然了谴忧,需要開源社區(qū)來確認(rèn)有哪些新問題很泊。更不可能預(yù)測開源的貢獻(xiàn)者能提供多少時(shí)間和工作量。
我們對(duì)一些好的想法說“不”的部分原因就是我們?cè)O(shè)計(jì)和執(zhí)行的受限沾谓。我們對(duì) Swift 3 有較高的目標(biāo)要求委造,但是我們也不能百分百確定我們能完全實(shí)現(xiàn)我們的目標(biāo)(這也是“目標(biāo)”的原因了,而不是“確定性”)均驶。我覺得我們?cè)?Swift 3 上要行動(dòng)一致昏兆,集中解決語言里的核心缺陷,修復(fù)各種問題妇穴,設(shè)計(jì)影響 ABI 穩(wěn)定性的 resilience 特性爬虱,同時(shí)呈現(xiàn)小范圍的擴(kuò)展隶债。不同于之前討論的大的擴(kuò)展,小范圍擴(kuò)展不會(huì)影響核心模塊( 例如成員初始化改造 the menberwise init revamp )饮潦,我希望能在 Swift 3 里實(shí)現(xiàn)部分?jǐn)U展燃异。
總而言之携狭,關(guān)于 Swift 3 是什么的問題继蜡,已經(jīng)上升到更高的層次,Swift 3 能夠讓更多的人接受 Swift 語言逛腿,人們?cè)?Linux 上運(yùn)行 Corelibs + Swift 變成現(xiàn)實(shí)稀并,無疑能夠吸引更多的人來使用 Swift ,SwiftPM 已經(jīng)逐漸完善单默,形成了自己的體系碘举,Swift 語言和 stdlib 標(biāo)準(zhǔn)庫函數(shù) 更加成熟。
這意味著什么搁廓?恩引颈,首先,從 Swift 2 過渡到 Swift 3 不可避免地將是懸崖式的過渡境蜕,大量的代碼需要重寫蝙场,Cocoa 的重命名工作也要落地了,我們將再次創(chuàng)建令人矚目的科技成果粱年。同樣地售滤,我們應(yīng)該嘗試將 “ 重新布局式的 ” 改變放到 Swift 3 中,如果可能的話台诗,Swift 3 到 Swift 4 的過渡盡可能平緩一些⊥曷幔現(xiàn)在人們理解接受 Swift 的進(jìn)化改變的種種不便,不過我們不能一直這樣拉队。我認(rèn)為我們不能百分之百地保證從 Swift 3 到 Swift 4 的代碼兼容性弊知,我希望從 Swift 2 到 Swift 3 的代碼升級(jí)能夠簡單一些。
最后一點(diǎn)粱快,留意 Cocoa 的重命名工作吉捶,這將是一項(xiàng)令人矚目的成就。
本文由 SwiftGG 翻譯組翻譯皆尔,已經(jīng)獲得作者翻譯授權(quán)呐舔。