原文連接: 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ì)一些好的想法說“不”的部分原因就是我們設(shè)計(jì)和執(zhí)行的受限。我們對(duì) Swift 3 有較高的目標(biāo)要求,但是我們也不能百分百確定我們能完全實(shí)現(xiàn)我們的目標(biāo)(這也是“目標(biāo)”的原因了,而不是“確定性”)。我覺得我們在 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 語言,人們在 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)。