99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
我心依舊 頭像
蘋果1袋
1
我心依舊

Swift 4路線圖

發(fā)布時(shí)間:2016-11-05 14:55  回復(fù):0  查看:2344   最后回復(fù):2016-11-05 14:55  

Swift 4預(yù)計(jì)在2017年底發(fā)布。該版本旨在源代碼和ABI層面實(shí)現(xiàn)語言的穩(wěn)定性,新增特性將會包括改進(jìn)后的泛型以及一個(gè)受Rust/Cyclone啟發(fā)的內(nèi)存所有權(quán)模型。

Swift 4的開發(fā)將分成兩個(gè)階段。第一階段將包含所有使Swift ABI穩(wěn)定所需要的特性,同時(shí)又要保證兼容Swift 3源代碼。第二個(gè)階段還有點(diǎn)不確定,可能也會包含大大小小的新特性,前提是它們不會改變現(xiàn)有語言特性的ABI或者破壞到標(biāo)準(zhǔn)庫的ABI。

源代碼兼容性

雖然穩(wěn)定性可能會妨礙語言能力的發(fā)展,但源代碼兼容是一個(gè)基本要求。為了推動語言的快速發(fā)展,同時(shí)又保證源代碼兼容性,Swift團(tuán)隊(duì)將擴(kuò)展現(xiàn)有的@available屬性,讓它既可以表示某項(xiàng)特性與特定的平臺或操作系統(tǒng)版本有關(guān),也可以表示和特定的Swift語言版本相關(guān)。

例如,你可以通過下面的代碼聲明一個(gè)API在Swift 3.1中已廢除:

@available(swift, obsoleted: 3.1)
class Foo {
//...
}

ABI穩(wěn)定性

使Swift ABI穩(wěn)定一方面需要為將要新增的特性奠定基礎(chǔ),這是通過“彈性(resiliency)”特性實(shí)現(xiàn)的,它會提供一種方法,讓公共API在演化的同時(shí)保證ABI的穩(wěn)定性。這是可以實(shí)現(xiàn)的,例如,明確API的哪些部分可以變,而又不會破壞ABI,從而減少在某些面向?qū)ο笳Z言中出現(xiàn)的脆弱的基類問題。

另一方面,使ABI穩(wěn)定需要清理掉語言中現(xiàn)有的依賴,那樣,它們就不會成為ABI的固定部分。特別地,有許多這樣的改進(jìn)已經(jīng)得到確認(rèn),比如:

  • 條件一致性:它表達(dá)的意思是,一個(gè)泛型類型,只有當(dāng)它的類型參數(shù)滿足特定的要求時(shí)才符合特定的協(xié)議。以Array集合為例,只有當(dāng)它的元素是Equatable類型時(shí),才能實(shí)現(xiàn)Equatable協(xié)議:

    extension Array: Equatable where Element: Equatable {
      static func ==(lhs: Array<Element>, rhs: Array<Element>) -> Bool { ... }
    }
  • 遞歸協(xié)議要求:允許關(guān)聯(lián)類型與外圍協(xié)議一致。例如,Subsequence本身應(yīng)該是Sequence,因此,Swift 4將允許下面這個(gè)當(dāng)前不合語法的定義:

    protocol Sequence {
      associatedtype Iterator : IteratorProtocol
      ...
      associatedtype SubSequence : Sequence   // 當(dāng)前不合語法,但應(yīng)該可以
    }
  • 關(guān)聯(lián)類型的where語句:將現(xiàn)在可以在泛型類型參數(shù)中使用的、富有表現(xiàn)力的where帶給了關(guān)聯(lián)類型,例如:

    protocol Sequence {
      associatedtype Iterator : IteratorProtocol
      associatedtype SubSequence : Sequence where SubSequence.Iterator.Element == Iterator.Element
      ...
    }

最后,還有許多工作是為了在Swift 4中添加一個(gè)類似Rust/Cyclone的內(nèi)存所有權(quán)模型。Rust內(nèi)存管理以實(shí)體所有權(quán)的概念為基礎(chǔ),通過它可以跟蹤誰負(fù)責(zé)釋放它或誰可以使用它。結(jié)合生存期的概念,可以避免最終釋放實(shí)體時(shí)出現(xiàn)懸空引用。C語言方言Cyclone(目前已經(jīng)不再開發(fā))就使用了一種基于區(qū)域的內(nèi)存管理模型,為每個(gè)已分配實(shí)體指定一個(gè)區(qū)域,提高分配/釋放的性能,更好地支持已釋放實(shí)體的檢測。擴(kuò)展Swift內(nèi)存管理模型對系統(tǒng)程序員以及所有迫切需要性能穩(wěn)定的情況特別有用??梢灶A(yù)見的是,向Swift添加一種內(nèi)存所有權(quán)模型已經(jīng)超出了第一階段的范圍,該階段的目標(biāo)是有一個(gè)整體的設(shè)計(jì),以便了解它將給ABI帶來什么變化。

查看英文原文The Roadmap to Swift 4

您還未登錄,請先登錄

熱門帖子

最新帖子

?