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应用的基石,提供了许多普遍存在的抽象,包括NSObject、NSString、NSArray和NSDictionary等。该框架最初是用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映射的“免费桥接”抽象,如CFString、CFDictionary等。
重新架构Foundation框架
Swift重写也将是重新架构Foundation框架的机会。目前,计划分为五个不同的包,包括FoundationEssentials、FoundationInternationalization、FoundationNetworking、FoundationXML和FoundationObjCCompatibility。这将允许开发者仅引入他们实际需要的依赖。例如,从头开始开发并希望完全切断与Darwin Foundation层联系的开发者可以完全跳过Obj-C兼容层。
Swift层成为Foundation的基础
通过决定重写Foundation,Apple正在交换C、Objective-C和Swift层的顺序,并使Swift层成为所有平台上Foundation的基础。这将有机会移除目前直接从Swift语言和标准库提供的许多功能,如NSCoding和NSKeyedArchiver,它们被Codable取代,或Lock、OperationQueue和其他并发原语,它们被Swift的结构化并发取代。这些功能将由一个单独的包提供,以确保与现有代码的兼容性。
社区反应与未来展望
这一公告在Swift论坛上引发了许多评论,大多数评论都暗示了重新思考现有API的便利性,以及确保Swift类型(如Codable或结构化并发)足够强大,以完全取代计划从核心Foundation层移除的Obj-C类型。Foundation重写预计是一个中长期的努力,目前尚未公布时间表,Apple邀请Swift社区加入讨论,以定义其未来。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。