Weekly Comment
Arc Lands on Windows and Google Layoffs
Last week, The Browser Company officially released the Windows version of the Arc browser. Known for its excellent tab management, diverse themes, and outstanding performance, Arc has made a significant impression on macOS and iOS platforms over the past few years.
Arc is primarily developed in Swift, and the progress of its Windows version has been widely followed. This launch on the Microsoft platform marks not only a success for The Browser Company but also a significant milestone for Swift as it expands beyond the Apple ecosystem. Saleem Abdulrasool, a member of the Swift core team and a software engineer at The Browser Company, along with his colleagues, has worked for years to successfully bring Swift to the Windows platform.
Recently, I conducted more tests on the SwiftIO Playground Kit from MadMachine. Thanks to Swift's protocol-oriented programming features, developers can make minimal changes to use familiar tools and workflows to complete most embedded development tasks. This makes me even more excited and optimistic about the prospects of Swift in the embedded field.
All the above facts show that Swift is steadily moving forward, realizing its dream of application on a broader range of platforms.
Conversely, Google's layoff announcement last week has introduced some uncertainties for Python and Flutter projects. Although Google claims that the layoffs are intended to foster better development and will not negatively impact these projects, the plan has clearly caused community unrest. Given Google's history of readily abandoning product lines, even if these layoffs ultimately do not materially affect these projects, they could severely impact developers' confidence and enthusiasm.
For open-source projects, while their open-source nature means they are not controlled by any single major company, losing support and investment from large companies can significantly slow their development and widespread adoption. Considering the importance of the Swift language to Apple, Swift developers need not worry about these issues for a considerable time.
Previous Issue|Newsletter Archive
If you find this weekly newsletter or my blog helpful, I would greatly appreciate your consideration of making a donation through Patreon, or Buy Me a Coffee.
Originals
Developing Embedded Applications with Swift
In recent years, Swift has gradually shown its potential for cross-platform development. In this article, I will share some of my experiences and attempts at using the Swift language for embedded development on the SwiftIO development board. For me, using a high-level language like Swift to develop embedded code should not only leverage the rich features of the language itself but also fully utilize the advantages of its complete ecosystem and toolchain. Doing so not only embodies the characteristics of modern programming but also increases development efficiency, achieving more with less effort.
This article specifically discusses embedded development on MCU (Microcontroller Unit) hardware that does not have a Memory Management Unit (MMU), and does not cover devices like the Raspberry Pi that possess full general-purpose computing capabilities.
Recent Selections
How to Create a Privacy Manifest
Starting May 1st, Apple has officially implemented a new privacy manifest requirement, mandating that all apps submitted to the App Store include a privacy manifest file when using specific APIs or third-party libraries. Failure to comply with this requirement may result in the app not passing the App Store's review process. The following two articles provide detailed steps and considerations for adding a privacy manifest.
Solve Missing API declaration using required reason (ITMS-91053): Written by Antoine Van Der Lee, this article not only outlines the detailed process of creating a privacy manifest but also includes a FAQ section to help readers better understand and implement the necessary steps.
How to add a privacy manifest file to your app for required reason API usage?: Authored by Donny Wals, this article provides not only a textual description but also a tutorial video on how to create a privacy manifest.
The Curious Case of Apple's Third-Party SDK List for Privacy Manifests
Apple's privacy manifest initiative is undoubtedly a good measure to protect user privacy. However, there are some unclear aspects in its implementation and detailed regulations. In this article, Jesse Squires explores the peculiarities of the third-party SDK privacy manifest list: What exactly are the criteria for selecting these third-party SDKs? While there may be various possibilities for selection, one commonality should be that these libraries are widely used by apps currently on the App Store.
Designing a Swift Library with Data-Race Safety
Joseph Heck, the primary developer behind Automerge Swift, set a new goal while building a new supplementary library: to completely avoid data races, meeting Swift's stringent concurrency check requirements. In this article, he shares the challenges and solutions faced in achieving this goal, covering the frameworks for solutions, selection of isolation types, testing, and integration testing, as well as his insights and outlooks. He hopes that this article will help other developers better understand and apply Swift's data race safety features, thus designing safer and more stable libraries.
Learning Swift Data
SwiftData has been released for nearly a year, and with the upcoming iOS 18 version, using SwiftData for data persistence is becoming more practical. Vincent believes now is the perfect time to learn this framework. A few weeks ago, Apple released a brand-new tutorial covering all the knowledge needed to start using SwiftData in iOS apps. Vincent will introduce the basics of SwiftData in a four-hour video session based on this tutorial. He believes that this training will equip you with enough knowledge of SwiftData to get started and solve problems effectively.
The Composable Architecture: My 3 Year Experience
Rod Schmidt began using The Composable Architecture (TCA) as the state management framework for his projects from its early days. In this article, he shares his experiences and reflections from three years of using TCA, offering perspectives and suggestions on applying it in real projects.
Following the publication of this article, there was a lively discussion in the community about the applicability of the TCA framework. Whether or not you use TCA, understanding its fundamentals and the new ideas presented can benefit developers. Additionally, a member of the Arc development team, Darin Fisher, expressed full appreciation and thanks for the TCA framework in a tweet last week. He mentioned that thanks to TCA, the Arc project could easily share a large amount of code between macOS and Windows.
肘子的话
Arc 登陆 Windows 和 Google 裁员
在上周,The Browser Company 正式发布了 Arc 浏览器的 Windows 版本。Arc 以其出色的标签管理、多样的主题和卓越的性能闻名,在过去几年里,它已在 macOS 和 iOS 平台上为使用者留下了深刻印象。
Arc 主要采用 Swift 语言开发,其 Windows 版本的进展一直受到广泛关注。这次登陆微软平台,不仅是 The Browser Company 的成功,也是 Swift 在走出苹果生态过程中的一个重要里程碑。Saleem Abdulrasool 作为 Swift 核心团队的一员,同时也是 The Browser Company 的软件工程师,他与其他伙伴经过多年努力,终于成功将 Swift 引入 Windows 平台。
最近,我对 MadMachine 的 SwiftIO Playground Kit 进行了更多的测试。得益于 Swift 的面向协议编程特性,开发者可以在只进行很小修改的情况下,便可以使用熟悉的工具和开发流程来完成绝大多数的嵌入式开发任务。这让我对 Swift 在嵌入式领域的应用前景感到更加兴奋和期待。
上述事实都显示了 Swift 正在稳步前进,实现其在更广阔平台上的应用梦想。
相反,Google 上周宣布的裁员计划给 Python 和 Flutter 项目带来了一些不确定性。尽管 Google 声称裁员旨在促进更好的发展且不会对这些项目产生负面影响,但这一计划显然已引起了社区的不安。鉴于 Google 历史上曾多次轻易放弃产品线,即使这次裁员最终不会实质性影响到这些项目,也可能严重打击开发者的信心和使用积极性。
对于开源项目,其开源性质虽然意味着不受单一大公司控制,但一旦失去了大公司的支持和投资,其发展和普及的速度也可能受到严重影响。考虑到 Swift 语言对苹果公司的重要性,至少在相当长的一段时间内,Swift 开发者不必担心这方面的问题。
如果您发现这份周报或我的博客对您有所帮助,可以考虑通过 爱发电,Buy Me a Coffee 支持我的创作。
原创
用 Swift 开发嵌入式应用
近年来,Swift 逐渐展现出其跨平台开发的潜能。在本文中,我将分享我使用 Swift 语言在 SwiftIO 开发板上进行嵌入式开发的一些尝试和体会。对我而言,使用类似 Swift 这样的高级语言来开发嵌入式代码,不仅应该利用高级语言本身的丰富特性,更要能充分发挥其完整的生态系统和工具链的优势。这样做不仅能够体现现代编程的特点,而且可以事半功倍,提高开发效率。
本文讨论的嵌入式开发专指在不具备内存管理单元(MMU)的 MCU(微控制器单元)硬件上的开发,不涉及像树莓派(Raspberry Pi)这类具备完整通用计算能力的设备。
近期推荐
如何创建隐私清单
自 5 月 1 日起,苹果正式实施了新的隐私清单制度,要求所有提交至应用商店的应用在使用特定 API 或第三方库时必须添加隐私清单文件。若未遵守此要求,则可能导致应用无法通过 App Store 的审核流程。下面两篇文章均详细介绍了添加隐私清单的步骤和注意事项。
Solve Missing API declaration using required reason (ITMS-91053):这篇文章由 Antonie Van Der Lee 撰写,除了介绍创建隐私清单的详细流程外,文章还包括了常见问题解答部分,以帮助读者更好地理解和执行相应步骤。
How to add a privacy manifest file to your app for required reason API usage?:这篇文章由 Donny Wals 撰写,除了文字介绍外还提供了创建隐私清单的教学视频。
The curious case of Apple's third-party SDK list for privacy manifests
苹果的隐私清单制度无疑是为了保护用户隐私而设立的一个好的举措。然而,在执行和制定细节上,仍存在一些不甚明确的地方。在本文中,Jesse Squires 探讨了其中第三方 SDK 隐私清单列表的一些奇怪之处:这些第三方 SDK 的制定标准到底是什么?选择这些 SDK 或许有各种可能性,但是有一点应该是共同的:这些库被当前 App Store 中广泛使用的应用所依赖。
Designing a Swift library with data-race safety
Heck 是 Automerge Swift 的主要构建者。在为其构建一个新的补充库时,他制定了一个新的目标:让它完全避免数据竞争,以满足 Swift 严格并发检查模式的要求。在这篇文章中,他分享了实现这个目标时所面临的挑战和解决方案,涵盖了解决方案的框架、隔离类型的选择、测试和集成测试、以及他的体会和展望。作者希望通过本文能帮助其他开发者更好地理解和应用 Swift 的数据竞争安全性,从而设计出更加安全和稳定的库。
Learning Swift Data
SwiftData 已经发布了将近一年的时间,随着即将推出的 iOS 18 版本,使用 SwiftData 处理数据持久化变得越来越实际。Vincent 认为现在是学习这个框架的绝佳时机。几周前,苹果发布了一篇全新的 教程,涵盖了在 iOS 应用中开始使用 SwiftData 所需的所有知识。Vincent 将通过两段共四个小时的视频,以该教程为基础对 SwiftData 的基础知识进行介绍。作者认为,通过本次培训,你应该具备足够的 SwiftData 知识来入门并能够解决问题。
The Composable Architecture: My 3 Year Experience
Rod Schmidt 早在 TCA 诞生初期就开始将其作为项目的状态管理框架。在这篇文章中,他分享了在三年的使用过程中对 TCA 的一些经验和反思,并提出了一些关于在实际项目中应用 TCA 的观点和建议。
这篇文章发表后,在社区中引发了对 TCA 框架适用性的 热烈讨论。无论你是否使用 TCA,了解该框架的基本内容以及学习其中提出的新思想,都能让开发者受益。此外,Arc 的开发团队成员 Darin Fisher 在上周的 推文 中对 TCA 框架表达了充分的肯定和感谢。他表示,得益于 TCA,Arc 项目可以在 macOS 和 Windows 之间轻松共享大量代码。