欢迎访问 weekly.fatbobman.com[1] 订阅本周报的中英文电子邮件版本。你也可以直接访问我的网站 肘子的 Swift 记事本[2] 更多的周报内容。
Arc 登陆 Windows 和 Google 裁员
在上周,The Browser Company 正式发布了 Arc[3] 浏览器的 Windows 版本。Arc 以其出色的标签管理、多样的主题和卓越的性能闻名,在过去几年里,它已在 macOS 和 iOS 平台上为使用者留下了深刻印象。
Arc 主要采用 Swift 语言开发,其 Windows 版本的进展一直受到广泛关注。这次登陆微软平台,不仅是 The Browser Company 的成功,也是 Swift 在走出苹果生态过程中的一个重要里程碑。Saleem Abdulrasool 作为 Swift 核心团队的一员,同时也是 The Browser Company 的软件工程师,他与其他伙伴经过多年努力,终于成功将 Swift 引入 Windows 平台。
最近,我对 MadMachine[4] 的 SwiftIO Playground Kit[5] 进行了更多的测试。得益于 Swift 的面向协议编程特性,开发者可以在只进行很小修改的情况下,便可以使用熟悉的工具和开发流程来完成绝大多数的嵌入式开发任务。这让我对 Swift 在嵌入式领域的应用前景感到更加兴奋和期待。
上述事实都显示了 Swift 正在稳步前进,实现其在更广阔平台上的应用梦想。
相反,Google 上周宣布的裁员计划给 Python 和 Flutter 项目带来了一些不确定性。尽管 Google 声称裁员旨在促进更好的发展且不会对这些项目产生负面影响,但这一计划显然已引起了社区的不安[6]。鉴于 Google 历史上曾多次轻易放弃产品线,即使这次裁员最终不会实质性影响到这些项目,也可能严重打击开发者的信心和使用积极性。
对于开源项目,其开源性质虽然意味着不受单一大公司控制,但一旦失去了大公司的支持和投资,其发展和普及的速度也可能受到严重影响。考虑到 Swift 语言对苹果公司的重要性,至少在相当长的一段时间内,Swift 开发者不必担心这方面的问题。
用 Swift 开发嵌入式应用[7]
Fatbobman( 东坡肘子 )[8]
近年来,Swift 逐渐展现出其跨平台开发的潜能。在本文中,我将分享我使用 Swift 语言在 SwiftIO 开发板上进行嵌入式开发的一些尝试和体会。对我而言,使用类似 Swift 这样的高级语言来开发嵌入式代码,不仅应该利用高级语言本身的丰富特性,更要能充分发挥其完整的生态系统和工具链的优势。这样做不仅能够体现现代编程的特点,而且可以事半功倍,提高开发效率。
本文讨论的嵌入式开发专指在不具备内存管理单元(MMU)的 MCU(微控制器单元)硬件上的开发,不涉及像树莓派(Raspberry Pi)这类具备完整通用计算能力的设备。
自 5 月 1 日起,苹果正式实施了新的隐私清单制度,要求所有提交至应用商店的应用在使用特定 API 或第三方库时必须添加隐私清单文件。若未遵守此要求,则可能导致应用无法通过 App Store 的审核流程。下面两篇文章均详细介绍了添加隐私清单的步骤和注意事项。
Jesse Squires[14]
苹果的隐私清单制度无疑是为了保护用户隐私而设立的一个好的举措。然而,在执行和制定细节上,仍存在一些不甚明确的地方。在本文中,Jesse Squires 探讨了其中第三方 SDK 隐私清单列表的一些奇怪之处:这些第三方 SDK 的制定标准到底是什么?选择这些 SDK 或许有各种可能性,但是有一点应该是共同的:这些库被当前 App Store 中广泛使用的应用所依赖。
Joseph Heck[16]
Heck 是 Automerge Swift[17] 的主要构建者。在为其构建一个新的补充库时,他制定了一个新的目标:让它完全避免数据竞争,以满足 Swift 严格并发检查模式的要求。在这篇文章中,他分享了实现这个目标时所面临的挑战和解决方案,涵盖了解决方案的框架、隔离类型的选择、测试和集成测试、以及他的体会和展望。作者希望通过本文能帮助其他开发者更好地理解和应用 Swift 的数据竞争安全性,从而设计出更加安全和稳定的库。
Vincent Pradeilles[19]
SwiftData 已经发布了将近一年的时间,随着即将推出的 iOS 18 版本,使用 SwiftData 处理数据持久化变得越来越实际。Vincent 认为现在是学习这个框架的绝佳时机。几周前,苹果发布了一篇全新的 教程[20],涵盖了在 iOS 应用中开始使用 SwiftData 所需的所有知识。Vincent 将通过两段共四个小时的视频,以该教程为基础对 SwiftData 的基础知识进行介绍。作者认为,通过本次培训,你应该具备足够的 SwiftData 知识来入门并能够解决问题。
Rod Schmidt[22]
Rod Schmidt 早在 TCA[23] 诞生初期就开始将其作为项目的状态管理框架。在这篇文章中,他分享了在三年的使用过程中对 TCA 的一些经验和反思,并提出了一些关于在实际项目中应用 TCA 的观点和建议。
这篇文章发表后,在社区中引发了对 TCA 框架适用性的 热烈讨论[24]。无论你是否使用 TCA,了解该框架的基本内容以及学习其中提出的新思想,都能让开发者受益。此外,Arc 的开发团队成员 Darin Fisher 在上周的 推文 [25]中对 TCA 框架表达了充分的肯定和感谢。他表示,得益于 TCA,Arc 项目可以在 macOS 和 Windows 之间轻松共享大量代码。
如果你觉得这份周报或者我的文章对你有所帮助,欢迎 点赞、赞赏,并将其 转发 给更多的朋友。
参考资料
[1]
weekly.fatbobman.com: https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本: https://fatbobman.com
[3]
Arc: https://arc.net/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[4]
MadMachine: https://madmachine.io/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[5]
SwiftIO Playground Kit: https://madmachine.io/products/swiftio-playground-kit/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[6]
社区的不安: https://www.reddit.com/r/technology/comments/1cfzuhf/google_layoffs_sundar_pichailed_company_fires/
[7]
用 Swift 开发嵌入式应用: https://fatbobman.com/zh/posts/developing-embedded-applications-with-swift/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[8]
Fatbobman( 东坡肘子 ): https://twitter.com/fatbobman
[9]
Solve Missing API declaration using required reason (ITMS-91053): https://www.avanderlee.com/xcode/missing-api-declaration-required-reason-itms-91053/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[10]
Antonie Van Der Lee: https://twitter.com/twannl
[11]
How to add a privacy manifest file to your app for required reason API usage?: https://www.donnywals.com/how-to-add-a-privacy-manifest-file-to-your-app-for-required-reason-api-usage/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[12]
Donny Wals: https://twitter.com/donnywals
[13]
The curious case of Apple's third-party SDK list for privacy manifests: https://www.jessesquires.com/blog/2024/04/29/sdk-privacy-manifests/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[14]
Jesse Squires: https://twitter.com/jesse_squires
[15]
Designing a Swift library with data-race safety: https://rhonabwy.com/2024/04/29/designing-a-swift-library-with-data-race-safety/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[16]
Joseph Heck: https://twitter.com/heckj
[17]
Automerge Swift: https://github.com/automerge/automerge-swift
[18]
Learning Swift Data: https://www.youtube.com/watch?v=UeUxfr6Di2g&issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[19]
Vincent Pradeilles: https://twitter.com/v_pradeilles
[20]
教程: https://developer.apple.com/tutorials/develop-in-swift#models-and-persistence
[21]
The Composable Architecture: My 3 Year Experience: https://rodschmidt.com/posts/composable-architecture-experience/?issue=030&utm_source=Newsletter&utm_medium=email&utm_campaign=FatbobmansSwiftWeekly
[22]
Rod Schmidt: https://twitter.com/rodschmidt
[23]
TCA: https://github.com/pointfreeco/swift-composable-architecture
[24]
热烈讨论: https://www.reddit.com/r/swift/comments/1cg1kc1/the_composable_architecture_my_3_year_experience/
[25]
推文 : https://twitter.com/darinwf/status/1785360437086949789?s=46