支持安卓的可行性与方向 | Swift 周报 issue 81 文章目录前言提案通过的提案Swift论坛关于我们网罗开发小红书、快手、视频号同名大家好我是展菲目前在上市企业从事人工智能项目研发管理工作平时热衷于分享各种编程领域的软硬技能知识以及前沿技术包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者《ESP32-C3 物联网工程开发实战》图书作者《SwiftUI 入门进阶与实战》超级个体COC上海社区主理人特约讲师大学讲师谷歌亚马逊分享嘉宾科技博主华为HDE/HDG我的博客内容涵盖广泛主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告同时也会提供产品优缺点分析、横向对比并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。展菲您的前沿技术领航员 大家好我是展菲 全网搜索“展菲”即可纵览我在各大平台的知识足迹。 公众号“Swift社区”每周定时推送干货满满的技术长文从新兴框架的剖析到运维实战的复盘助您技术进阶之路畅通无阻。 微信端添加好友“fzhanfei”与我直接交流不管是项目瓶颈的求助还是行业趋势的探讨随时畅所欲言。 最新动态2025 年 3 月 17 日快来加入技术社区一起挖掘技术的无限潜能携手迈向数字化新征程文章目录前言提案通过的提案Swift论坛关于我们前言本期是 Swift 编辑组自主整理周报的第八十二期每个模块已初步成型。各位读者如果有好的提议欢迎在文末留言。Swift 周报在 GitHub 开源欢迎提交 issue投稿或推荐内容。目前计划每两周周一发布欢迎志同道合的朋友一起加入周报整理。每一个不曾起舞的日子都是对生命的辜负。人生不是等待风暴远去而是学会在雨中起舞。提案通过的提案SE-0474Yielding 访问器提案通过审查。该提案已在第八十二期周报正在审查的提案模块做了详细介绍。Swift论坛1、讨论介绍 Swift Erlang Actor System构建类 Erlang 的分布式 Actor 模型该帖介绍了一个全新的开源项目Swift Erlang Actor System灵感来自 Erlang 的并发与容错模型旨在为 Swift 带来轻量、可分布式、可监督的 Actor 架构。核心特性包括类似 Erlang 的 actor 结构每个 actor 是独立的轻量线程拥有唯一标识支持消息发送 (tell) 和异步请求 (ask)模式支持actor 监控与监督树 (supervision)自动重启失败子 actor支持在本地或远程集群运行多个 actor 系统基于 NIO可自定义调度器与行为定义支持高扩展性示例structGreeter:Behavior{funcreceive(context:ActorContext,message:String)asyncthrows{print(Hello,\(message)!)}}// 创建系统与 actorletsystemActorSystem()letgreetertryawaitsystem.spawn(name:greeter,behavior:Greeter())awaitgreeter.tell(Swift)设计目标并非替代 Swift 原生 actor 类型而是提供类似 Akka/Erlang 的高阶抽象关注 actor 间通信与容错结构而非仅数据隔离。特别适用于构建长生命周期的服务端组件、聊天系统、游戏服务器或微服务框架。社区反馈积极许多开发者对该系统如何与 Swift 并发原语如原生 actor、Task协同工作提出兴趣也有人提到可作为 Swift 分布式计算生态的重要尝试。该项目仍处于早期阶段作者欢迎社区贡献与反馈。2、讨论项目进展 GSoC 2025改进 Swift 测试框架的控制台输出该帖由 Google Summer of Code 2025 学生项目参与者 Aditya_Narayan 发布展示了其正在进行的项目成果改进 Swift Package Manager 测试输出的可读性和信息丰富性并征求社区反馈。目前的 Swift 测试输出风格较为简洁缺乏清晰的视觉分隔和上下文提示特别在大型测试套件中开发者难以快速定位失败信息。该项目的目标是提供更结构化、更具可视层级的控制台输出体验。核心改进包括更清晰的测试生命周期提示测试开始、成功、失败等颜色高亮例如绿色表示通过红色表示失败缩进与层次结构使测试组与测试用例输出更具结构感支持环境变量启用增强格式保持默认行为向后兼容示例输出简化Runningtest suiteMyPackageTests✓MathTests.testAddition ✓MathTests.testSubtraction MathTests.testDivisionByZero →Error:Divisionby zeroTestrun finished:✓2passed 1failed该项目计划在 SwiftPM 中实现完整集成目前处于开发中期阶段作者欢迎社区提出 UI、功能和行为上的反馈建议。此项工作有望提升 Swift 开发者的测试体验特别在 TDD 和 CI 场景下提供更高效的问题定位能力。社区普遍鼓励并支持该方向部分成员提出增加自定义 formatter 和可配置输出级别等建议。3、提议预提议基于数据依赖的测试串行化机制该帖提出一个早期想法旨在改进 Swift 测试执行模型允许基于数据依赖关系对测试进行自动串行化Serialization以解决测试间共享资源时可能出现的竞争条件或不确定行为。当前 SwiftPM 的测试运行机制默认高度并发在某些情况下会导致如下问题多个测试访问相同的数据库、文件系统或全局状态产生冲突开发者只能通过全局串行化例如 --parallel false或人为组织测试文件回避问题这既不理想也不具扩展性该预提议设想一种声明式机制允许测试指定其资源依赖例如SharedResource(UserDefaults)functestUsesUserDefaults(){...}SwiftPM 可据此自动将共享同一资源的测试用例串行执行而无冲突的测试仍可并发运行从而在并发性与正确性之间取得平衡。目前该想法尚未形成完整 pitch作者希望征求社区意见包括是否存在类似需求场景最合适的声明方式是什么属性宏测试注解测试分组是否应由 SwiftPM 或 XCTest 层来实现社区反馈积极多数人认同该提议对中大型项目及集成测试尤为重要也有人提到类似机制在其他测试框架如 pytest fixtures中已有良好实践。该方向有望在未来形成正式提案提升 Swift 测试系统的灵活性与可靠性。4、提议提议用 repo 工具替代 update-checkout 脚本管理 Swift 项目依赖该提议建议用 Google 的 repo 工具替代当前维护 Swift 工程多仓库依赖的 update-checkout 脚本。update-checkout 是当前 Swift 社区用于同步 Swift 项目主仓库如 swift, llvm-project, swift-tools-support-core 等的一种 Bash 脚本但随着依赖图复杂度上升其维护变得困难且不易扩展。提议中指出repo 工具具备以下优势更强的多仓库版本协调与同步能力通过 manifest.xml跨平台兼容支持 Linux 与 macOS能够追踪特定 commit而非仅使用 branch已广泛应用于 Android 等大型开源项目中生态成熟一个典型的 repo manifest 可能如下所示manifestremotenamegithubfetchhttps://github.com/apple//projectnameswiftpathswiftrevisionmain/projectnamellvm-projectpathllvm-projectrevisionmain/.../manifest若该提议被采纳Swift 项目贡献者在初次设置与同步多个仓库时将可通过简单命令获取所有组件repo init-uhttps://github.com/apple/swift-manifest reposync社区讨论重点集中在工具引入的额外依赖、是否适用于所有平台开发者、与现有 CI/CD 系统的集成难度等方面。有成员建议可以并行支持两种机制过渡一段时间或将 repo 工具集成进更高层的开发脚本中以隐藏复杂性。总体来说该提议被认为是迈向更可维护和现代化工程管理的潜在步骤尤其对于频繁参与 Swift 项目源码开发的工程师来说更具意义。5、讨论讨论标准库 Concurrency 模块中互斥锁的使用现状该帖由社区成员发起探讨 Swift 标准库 Concurrency 模块内部使用互斥锁mutex的具体原因与影响尤其在 Swift 强调无锁并发如基于任务、actor 等模型的背景下这种设计引发了一定疑问。提问集中于以下几点Swift 的并发系统是否仍依赖传统互斥锁使用锁的部分是否对性能或可扩展性构成瓶颈是否考虑使用 lock-free 数据结构或调度机制替代Swift 核心开发者 Philippe_Hausler 做出回应指出确实存在互斥锁使用但仅限于必要场景如保护底层任务调度器的数据结构、执行器管理等某些数据结构如运行队列或调度表在多线程高并发环境下仍需锁保护以避免竞态条件Swift 并发的高层抽象如 async let、Task、actor本质上是无锁或封装锁机制开发者通常无需直接接触锁总结来看虽然 Swift Concurrency 强调结构化并发与数据隔离但在标准库底层实现中为了性能与正确性适当使用互斥锁仍属合理工程权衡。这一实现细节对最终用户影响极小主要关注点是正确性、安全性与可维护性。社区对此表示理解同时也鼓励未来继续探索 lock-free 或更优化的数据结构以充分发挥 Apple Silicon 等多核平台的潜力。关于我们Swift社区是由 Swift 爱好者共同维护的公益组织我们在国内以微信公众号的运营为主我们会分享以Swift实战、SwiftUl、Swift基础为核心的技术内容也整理收集优秀的学习资料。特别感谢 Swift社区 编辑部的每一位编辑感谢大家的辛苦付出为 Swift社区 提供优质内容为 Swift 语言的发展贡献自己的力量。