苹果宣布全面重写Foundation框架,使用Swift语言

Swift团队开始开发全新的开源Foundation框架实现

Swift团队宣布将开发一个全新的开源Foundation框架实现,该框架将完全用Swift编写。新Foundation框架的目标是通过消除Objective-C和Swift之间的转换成本来提高性能,并为其模块化和清理提供机会。

性能提升

使用原生Swift实现的Foundation框架将不再支付C和Swift之间的转换成本,从而带来更快的性能。根据Apple工程师Tony Parker在Swift论坛上的解释,性能提升可能非常显著。例如,在Swift中重新实现的Calendar在各种合成基准测试中比C实现快1.5到18倍。

Foundation框架的重要性

Foundation框架是大多数macOS和iOS应用的基石,提供了许多普遍存在的抽象,包括NSObjectNSStringNSArrayNSDictionary等。该框架最初是用Objective-C编写的,并大量依赖其动态特性。目前,Foundation可以在运行于Apple操作系统上的Swift应用中使用,这得益于Swift与Objective-C运行时的互操作性。然而,对于其他平台(如Linux),由于只有原始的GNUstep Objective-C运行时可用,因此无法使用。为了解决这一限制,Apple在开源Swift时构建了swift-corelibs-foundation,这是一个围绕Core Foundation的Swift封装,Core Foundation是一个低级的C API,位于Foundation的核心,并提供与Foundation映射的“免费桥接”抽象,如CFStringCFDictionary等。

重新架构Foundation框架

Swift重写也将是重新架构Foundation框架的机会。目前,计划分为五个不同的包,包括FoundationEssentialsFoundationInternationalizationFoundationNetworkingFoundationXMLFoundationObjCCompatibility。这将允许开发者仅引入他们实际需要的依赖。例如,从头开始开发并希望完全切断与Darwin Foundation层联系的开发者可以完全跳过Obj-C兼容层。

Swift层成为Foundation的基础

通过决定重写Foundation,Apple正在交换C、Objective-C和Swift层的顺序,并使Swift层成为所有平台上Foundation的基础。这将有机会移除目前直接从Swift语言和标准库提供的许多功能,如NSCodingNSKeyedArchiver,它们被Codable取代,或LockOperationQueue和其他并发原语,它们被Swift的结构化并发取代。这些功能将由一个单独的包提供,以确保与现有代码的兼容性。

社区反应与未来展望

这一公告在Swift论坛上引发了许多评论,大多数评论都暗示了重新思考现有API的便利性,以及确保Swift类型(如Codable或结构化并发)足够强大,以完全取代计划从核心Foundation层移除的Obj-C类型。Foundation重写预计是一个中长期的努力,目前尚未公布时间表,Apple邀请Swift社区加入讨论,以定义其未来。

阅读 70
0 条评论