Swift 周报 第四十八期

在这里插入图片描述

在这里插入图片描述

文章目录

    • 前言
    • 新闻和社区
      • 苹果突然不造车了,雷军:非常震惊!分析师:马斯克或是最大赢家
      • 你会爱上的开发者活动
    • 提案
      • 通过的提案
      • 正在审查的提案
    • Swift论坛
    • 推荐博文
    • 话题讨论
    • 关于我们

前言

本期是 Swift 编辑组自主整理周报的第四十八期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。

Swift 周报在 GitHub 开源,欢迎提交 issue,投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。

倚高山之巅,方见大河奔涌。读Swift社区,便知书海浩瀚。渺小与博大,总是同伴己身!👊👊👊

周报精选

新闻和社区:苹果突然不造车了,雷军:非常震惊!分析师:马斯克或是最大赢家

提案:自定义 SerialExecutor 的隔离检查

Swift 论坛:讨论在整个应用程序中共享变量

推荐博文:使用 MLX 和 Swift 进行设备端机器学习研究

话题讨论:

如果 2024 年购车,你选择买那种车?

上期话题结果

我认为应该鼓励人们在面对工作中的挑战和不如意时保持乐观和积极的态度。被裁员可能是一个人职业生涯中的一次挑战,但也是一个机会去探索新的职业道路和发展方向。因此,即使面对困难,也应该以积极的心态去应对,寻找新的机会和可能性。

新闻和社区

苹果突然不造车了,雷军:非常震惊!分析师:马斯克或是最大赢家

苹果的造车项目最终还是黄了。

于 2014 年正式启动的“泰坦计划”曾经承载着苹果的美好憧憬:分食全球近两千亿美元的电动车市场。然而,十年过去,苹果却未能让其野心开花结果,项目在高管更迭和试驾事故等波折中反复挣扎,并于 2 月 27 日走向终局。

据彭博社,放弃“泰坦计划”是由苹果首席运营官杰夫·威廉姆斯 (Jeff Williams) 和负责造车项目的副总裁凯文·林奇 (Kevin Lynch) 共同做出的。随着造车项目被叫停,相关项目小组(内部称为“特殊项目小组”或 SPG)的近 2000 名员工也面临着未知的前路。

据悉,SPG 部分人员将在高管约翰·詹南德雷亚 (John Giannandrea) 的领导下专注于生成式AI项目。而其他数百名成员(其中许多是硬件工程师和汽车设计师)要么可以在苹果内部申请另一份工作,要么将被解雇。目前尚不清楚将有多少人会被裁员。

从整个大环境看,苹果大举砍掉造车项目的背后也是电动车市场的转冷。据彭博社预测,2024 年美国电动汽车销量的增长将不超过 9%,而过去三年的复合年增长率高达 65%。苹果的这一决策公开后,特斯拉 CEO 马斯克在X上进行了回应。在竞争激烈的市场环境中,特斯拉作为行业领头羊,或许会是苹果此次抉择的最大受益者。

“泰坦计划”折戟之后,苹果能否如愿在生成式AI的天地中重塑其辉煌,外界只能拭目以待。

对此,正在造车的小米创始人雷军在微博发文称:看到这个新闻,非常震惊!小米战略是“人车家全生态”,我们深知造车难度,3 年前依然做了无比坚定的战略选择,认认真真为米粉造一辆好车!”

理想汽车 CEO 李想 2 月 28 日在微博发文称,苹果放弃造车,选择聚焦人工智能是绝对正确的战略选择,时间点也合适。李想表示,战略层面,新业务能聚焦一个,就决不做两个。另外,选择那个最大的,以及距离自己核心优势最近的,知难而上大概率不是好战略。

特斯拉首席执行官埃隆·马斯克则在社交媒体网站X上发了一个敬礼的表情符号和一支香烟。有中国网友戏称,马斯克的“香烟”表情是在给苹果汽车“上香”。

你会爱上的开发者活动

2024 年 2 月 14 日

Apple 开发者活动正在火热进行中,让我们来看看具体都有哪些活动:

参加 App Store 专家主持的在线讲座:了解如何如何最大程度地减少用户流失并赢回订阅者。
共庆国际妇女节:参加在班加罗尔、库比蒂诺、上海、新加坡、悉尼和东京举办的特别线下活动。
参加世界各地的 Apple Vision Pro 开发者实验室 (库比蒂诺、伦敦、柏林、新加坡、悉尼和东京皆有举办):测试和完善你的 App,让它们在无边的空间画布中提供出色的体验。
与 Apple 团队成员会面,探讨为遵守《数字市场法》而对在欧盟分发的 App 产生影响的 iOS、Safari 浏览器以及 App Store 的变更。
全年我们都将以线上和线下的形式,举办各种涵盖多种语言的活动。

提案

通过的提案

SE-0422 表达式宏作为调用方默认参数 提案通过审查。该提案已在 四十七期周报 正在审查的提案模块做了详细介绍。

SE-0421 推广 AsyncSequence 和 AsyncIteratorProtocol 的效果多态性 提案通过审查。该提案已在 四十七期周报 正在审查的提案模块做了详细介绍。

SE-0420 继承 actor 隔离性 提案通过审查。该提案已在 四十七期周报 正在审查的提案模块做了详细介绍。

SE-0419 Swift Backtrace API 提案通过审查。该提案已在 四十七期周报 正在审查的提案模块做了详细介绍。

正在审查的提案

SE-0423 非严格并发上下文中的动态 actor 隔离执行 提案正在审查。

许多 Swift 程序需要与用 C/C++/Objective-C 编写的框架进行交互,这些框架的实现无法参与静态数据竞争安全性。同样,许多 Swift 程序依赖项尚未采用严格的并发性检查。@preconcurrency import 语句会降级与并发相关的错误消息,因为程序员无法解决的根本问题在其中一个依赖项中。为了在与预并发依赖项一起工作时加强 Swift 的数据竞争安全性保证,该提案在运行时为同步隔离函数添加了 actor 隔离检查。

SE-0424 自定义 SerialExecutor 的隔离检查 提案正在审查。

SE-0392(自定义 Actor 执行器)增加了对自定义 actor 执行器的支持,但其支持还不完整。像 Actor.assumeIsolated 这样的安全检查在通过任务在 actor 上运行代码时能够正常工作,但当代码被安排在 actor 的执行器上通过其他机制运行时则无法正常工作。

例如,如果一个 actor 使用串行 DispatchQueue 作为其执行器,那么使用 DispatchQueue.async 直接将函数调度到队列时,无法使用 assumeIsolated 来断言 actor 当前是否被隔离。该提案通过允许自定义 actor 执行器为这些安全检查提供自己的逻辑来解决此问题。

Swift论坛

  1. 提议解决 DistributedActor 协议(针对服务器/客户端应用程序)

内容大概

讨论了解决 Swift 中服务器/客户端应用程序的 DistributedActor 协议的提案。 该提案旨在促进分布式系统之间的通信,同时仍然有效地利用参与者。 发帖人赞赏所提出的优雅解决方案,特别强调了宏的使用。 他们提出了有关在客户端实现分布式系统的简化版本、跨不同语言创建共享 API 的潜力的问题,并询问有关类似概念的现有框架或研究论文。

这篇文章还提到了分布式 Actor 的多功能性,并引用了 Akka 和 Orleans 的例子,表明它们适合实时和耦合系统。 此外,它还提到了 2023 年 Google 研究人员发表的一篇论文,该论文倡导受参与者模型启发的分布式系统,强调了位置透明的好处。

根据这个建议,可以编写以下内容:

// API module
import Distributed@DistributedProtocol
public protocol Greeter: DistributedActorwhere ActorSystem: DistributedActorSystem<any Codable> {distributed func greet(name: String) -> String
}
// Client module
import API // declared Greeter
import Distributedlet someActorSystem = // <the actor system you're using>
let remote = try $Greeter.resolve(id: id, using: someActorSystem)let reply = try await remote.greet(name: "Caplin")
print(reply) // Dzień dobry, Caplin!
// oh, we didn't know the remote implementation is PolishGreeter!

这允许开发人员发布具有协议描述的 API 包,并对客户端应用程序完全隐藏服务器实现类型。

  1. 提议按位复制标记协议

内容大概

该提案建议在 Swift 中引入一种名为 BitwiseCopyable 的新标记协议,以识别可以有效复制、移动和销毁的类型。 该协议将允许通过启用直接内存操作(例如 memcpy)来优化低级代码。 通过将泛型函数限制为 BitwiseCopyable 类型,开发人员可以减少开销并提高性能,特别是对于涉及批量内存复制的操作。

该提案概述了标准库中的基本类型和开发人员定义的类型如何符合 BitwiseCopyable,并由编译器推断某些情况下的一致性。 但是,对于其他模块中定义的类型或可能并不总是满足 BitwiseCopyable 要求的类型,需要显式一致性。 此外,讨论还深入探讨了泛型类型的 BitwiseCopyable 一致性的可确定性以及库演化的注意事项。

完整的提案可以在这里找到:BitwiseCopyable

  1. 提议不可复制值的分段消耗

内容大概

该提案建议放宽对某些不可复制类型的限制,以允许它们在特定场景中分段使用,旨在促进 Swift 代码中对不可复制值的更自然的操作。 目前,处理聚合中的不可复制字段面临着挑战,例如在不可复制的 Pair 类型中交换值等函数的编写困难。 所提出的解决方案建议允许在逐个字段的基础上使用非弹性、不可复制的聚合而不使用反初始化器,从而实现诸如在 Pair 内交换值之类的操作。 然而,该提案有意保留了限制:它不支持带有反初始化器的聚合的部分消耗或已消耗字段的重新初始化,并且弹性聚合永远不能被部分消耗。 讨论还包括对源代码破坏性更改的考虑以及了解部分消耗的类型布局的必要性。

完整的提案可以在这里找到:https://github.com/apple/swift-evolution/pull/2317

  1. 讨论如何识别/关联 swiftinterface 声明与原始声明?

内容大概

讨论围绕识别 .swiftinterface 文件中的声明并将其与其原始声明关联起来,主要是为了提取有关 Swift 库中 @_spi 属性的信息。 但是,将 .swiftinterface 文件中的完整签名映射到 lib/SymbolGraphGen 发出的部分签名存在不确定性,因为它缺乏 @_spi 意识。 提出了各种建议,包括扩展 SymbolGen 以发出相关信息或使用索引存储来弥合 USR 和解析的源位置之间的差距。 对话还涉及为 Swift 包生成文档以及与工具链兼容性相关的挑战。

此外,还考虑使用夜间工具链编译包,同时使用不同版本的工具链发出符号图 JSON。 总的来说,讨论探讨了潜在的解决方法和解决方案,以解决将 Swift 接口声明与其原始对应项关联的问题。

  1. 讨论在整个应用程序中共享变量?

内容大概

这篇文章讨论了 Swift 应用程序中全局变量的使用,特别是在多个视图之间共享数据。 用户创建一个 Global.swift 文件,在其中使用 @State 属性包装器声明一些变量。然后他们询问是否正确使用这些全局变量。

然而,出于安全考虑,另一位用户建议不要将用户凭据等敏感信息存储在全局变量中,并建议使用用户的钥匙串。 此外,他们警告不要共享可变状态,并建议研究 @EnvironmentObject 和 @Environment 以在 SwiftUI 中的视图之间共享通用逻辑。

  1. 宣布类型安全的日历计算

内容大概

该公告推出了 Time 1.0.0,这是一个专为 Swift 中类型安全日历计算而设计的包。 它庆祝其前身 Time 0.9.0 一周年,并强调其已升级至 1.0.0 版本。 Time 提供了广泛的日期和时间操作功能,强调安全性和便利性。 主要功能包括获取设备时间、舍入时间值、按特定间隔提前时间、检索日历信息以及格式化时间数据。

Time 通过 Swift 的类型系统确保正确性,并为无效操作提供错误处理。 它可在 GitHub 上获取,并具有有关 Swift 包索引的全面文档。 此外,Time 还提供高级功能,例如创建自定义时钟、监听时间变化、时区和区域设置之间的转换、计算日历值之间的差异等等。 总体而言,Time 简化了日期和时间操作,同时确保准确性和安全性。

  1. 讨论迁移 ThreadSafe 类以使用最新的并发

内容大概

讨论了寻求迁移线程安全类的指导,该类利用异步写入和同步读取的同步技术,以使用现代并发技术,例如 Swift Actors。 他们提供了 A 类的代码示例,该类通过共享队列将任务发送到另一个类(缓存)来同步读取和异步写入。 他们询问在迁移到 Actor 或现代并发时如何在类之间执行类似的同步。 A 类(ThreadSafeClassA)包含读取和写入消息的方法,而 B 类(ThreadSafeClassB)则异步处理消息检索。 用户有兴趣在迁移过程中维持这种同步模式。

推荐博文

使用 MLX 和 Swift 进行设备端机器学习研究

摘要: 文章介绍了使用MLX和Swift进行设备上机器学习研究的新方法。 Swift 编程语言具有与 Python 类似的易用性和高级语法,同时又具有类似 C++ 的编译语言的速度。 MLX 是专为在苹果芯片上进行机器学习研究而设计的数组框架,提供了硬件加速和自动微分等关键功能。

MLX Swift 将 MLX 扩展到 Swift 语言,为机器学习研究人员提供了一个全面的实验平台。该平台包括全面的 Swift API、高级神经网络和优化器包,以及文本生成和MNIST训练等示例。这一步骤标志着ML研究人员可以更轻松地在苹果设备上进行机器学习实验,并且所有组件都以MIT许可证开放源代码。通过本文,读者可以了解到如何快速开始使用 MLX Swift ,并利用其在机器学习研究中的潜力。

Swift 字面量

摘要: 这篇博客主要讨论了 Swift 中的字面量(Literal)的概念及其在编写代码时的重要性。文章以 Franz Boas 在 1911 年的观察为引子,指出不同语言对于相同概念的命名方式可能存在差异,从而呈现出语言相对性的现象。Swift 提供了多种类型的字面量,包括标准字面量和自定义类型支持的字面量初始化方法。通过示例展示了如何自定义类型支持字面量初始化,以及如何扩展已有类型以支持不同类型的字面量初始化。

文章还介绍了未来可能出现的一些发展趋势,如原始字符串字面量和通过强制执行的字面初始化,以及它们对 Swift 语言和开发者的影响。最后,强调了编程语言中的词汇选择对开发者的思维方式和代码编写方式的影响,鼓励开发者利用 Swift 提供的特性使代码更加自然和高效。

在 Swift 中创建服务层

摘要: 本文介绍了在Swift中创建服务层的方法。服务层允许将与框架和 API 相关的逻辑转移到它们自己的类或结构体中,通过创建协议并实现方法和属性,可以使代码更具可重用性、可测试性和可读性。

示例项目使用了 UIKit、MVVM 设计模式和 Combine 框架的一部分。文章通过代码示例详细说明了如何创建服务层、编写单元测试以及实现模拟服务等内容。通过添加服务层,可以使代码库保持模块化,并从可重用性、单元测试覆盖率、可读性和可替换性中受益。

话题讨论

如果 2024 年购车,你选择买那种车?

  • 油车
  • 混动
  • 电车

欢迎在文末留言参与讨论。

关于我们

Swift社区是由 Swift 爱好者共同维护的公益组织,我们在国内以微信公众号的运营为主,我们会分享以 Swift实战SwiftUlSwift基础为核心的技术内容,也整理收集优秀的学习资料。

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/289379.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLiteC/C++接口详细介绍sqlite3_stmt类(八)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;七&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;九&#xff09; 27、sqlite3_column_int 函数 sqlite3_column_int 用于返…

实物档案管理系统是做什么的

实物档案管理系统是用于管理和组织实物档案的信息系统。它的主要功能包括记录、查找、归档实物档案&#xff0c;以及提供相关的管理功能。 具体来说&#xff0c;玖拓智能实物档案管理系统可以帮助单位完成以下任务&#xff1a; 1. 档案登记与归档&#xff1a;将新收到的实物档案…

2024年【低压电工】实操考试视频及低压电工考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 低压电工实操考试视频是安全生产模拟考试一点通生成的&#xff0c;低压电工证模拟考试题库是根据低压电工最新版教材汇编出低压电工仿真模拟考试。2024年【低压电工】实操考试视频及低压电工考试试题 1、【单选题】()…

MySQL ② —— 索引原理

1. 索引 1.1 分类 主键索引、唯一索引、普通索引、组合索引、以及全文索引 主键索引 非空唯一索引&#xff0c;一个表只有一个主键索引&#xff1b;在 innodb 中&#xff0c;主键索引的 B 树包含表数据信息。 唯一索引 不可以出现相同的值&#xff0c;可以有 NULL 值。 …

后端前行Vue之路(一):初识Vue

1.Vue是什么 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方…

Transformer的前世今生 day08(Positional Encoding)

前情提要 Attention的优点&#xff1a;解决了长序列依赖问题&#xff0c;可以并行。Attention的缺点&#xff1a;开销变大了&#xff0c;而且不存在位置关系为了解决Attention中不存在位置关系的缺点&#xff0c;我们通过位置编码的形式加上位置关系 Positional Encoding&…

Flask python 开发篇:上传文件(在指定目录下创建文件夹)

flask上传文件以及常见问题 一、flask文档上传文件的介绍二、上传文件的实现2.1、生成一个from表单&#xff0c;用来提交图片2.2、编写上传的逻辑 三、运行代码、以及常见异常四、写在最后 一、flask文档上传文件的介绍 Flask上传文件的文档介绍&#xff0c;文件上传的基本思想…

面试题--3.18

1. http与https的区别&#xff0c;以及https的认证过程及加密算法 &#xff1f; 区别&#xff1a; https协议需要到CA申请证书&#xff0c;一般免费证书较少&#xff0c;因而需要一定费用。 http是超文本传输协议&#xff0c;信息是明文传输&#xff0c;https则是具有安全性…

重磅发布|博睿数据汽车行业精选案例集!

随着大数据、人工智能等技术的发展&#xff0c;万物互联已成为大势所趋。数字经济作为我国经济增长的新引擎&#xff0c;汽车行业的数字化转型升级也在不断加速。 然而&#xff0c;在传统的IT运维管理模式下&#xff0c;汽车企业在数字化转型过程中面临重重挑战。例如&#xf…

MongoDB内存过高问题分析解决

告警 公司有个3.2.7版本的mongo复制集&#xff0c;最近几天频繁告警内存过高。 服务器配置16C64G内存。mongo备节点内存使用到55G&#xff0c;触发告警。 以下内容基于3.2.7版本&#xff0c;3.2.7版本已经太老&#xff0c;很多后来的命令和配置&#xff0c;3.2.7都没有。 …

MySQL高可用解决方案――从主从复制到InnoDB Cluster架构

2024送书福利正式起航 关注「哪吒编程」&#xff0c;提升Java技能 文末送5本《MySQL高可用解决方案――从主从复制到InnoDB Cluster架构》 大家好&#xff0c;我是哪吒。 爱奇艺每天都为数以亿计的用户提供7x24小时不间断的视频服务。通过爱奇艺的平台&#xff0c;用户可以…

UG NX二次开发(C#)-通过曲线组生成NURBS曲面

文章目录 1、前言2、UG NX中通过曲线组生成NURBS曲面的操作3、采用NXOpen C#方法的源代码1、前言 在UG NX中,曲线、曲面的操作使用比较多,对于创建NURBS曲面,可以通过曲线组来生成,本文以NXOpen C#的方法实现通过曲线组生成NURBS曲面的功能。对于UG NX二次开发感兴趣或者有…

反序列化动态调用 [NPUCTF2020]ReadlezPHP1

在源代码上看到提示 访问一下看看 代码审计一下 <?php #error_reporting(0); class HelloPhp {public $a;public $b;public function __construct(){$this->a "Y-m-d h:i:s";$this->b "date";}public function __destruct(){$a $this->a;…

Cesium.js综合实验

Cesium.js综合实验 1 概述 Cesium是一个跨平台、跨浏览器的展示三维地球和地图的开源 JavaScript 库&#xff0c;是AGI公司计算机图形开发小组与2011年研发的三维地球和地图可视化开源JavaScript库&#xff0c;Cesium一词来源于化学元素铯&#xff0c;铯是制造原子钟的关键元…

华为OD机试 - 考古问题 - 回溯、全排列问题(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

如何在Linux系统使用Docker本地部署Halo网站并实现无公网IP远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可…

最小化安装Kubesphere报错问题解决方法

最小化安装Kubesphere报错: TASK [preinstall : Stop if defaultStorageClass was not found] ****************** fatal: [localhost]: FAILED! > {"assertion": "\"(default)\" in default_storage_class_check.stdout", "changed&qu…

【王道训练营】第一题 输出 hello wangdao

文章目录 代码如下所示&#xff1a;C语言基础&#xff1a;理解基本概念和语法结构示例程序代码解析1. #include <stdio.h>2. int main()3. printf("hello wangdao");4. return 0; 更多的例子1. 使用 printf 函数打印多种不同类型的值&#xff1a;2. 使用 scanf…

在Windows系统上安装多个 Nodejs

前言 在Windows系统安装Nodejs 在Windows系统上安装多个 Nodejs v14.16.1安装位置 D:\sde\nodejs\node-v14.16.1-win-x64 v16.20.2安装位置 D:\sde\nodejs\node-v16.20.2-win-x64 v18.20.0安装位置 D:\sde\nodejs\node-v18.20.0-win-x64 v20.12.0安装位置 D:\sde\nod…

提取html工具封装和应用

提取html工具封装和应用 BeautifulSoup库和介绍BeautifulSoup使用BeautifulSoup重点方法BeautifulSoup其他方法 认证参数化实现创建json文件导包&#xff08;参数化&#xff09;编写测试用例技术难点--判断验证码不同 BeautifulSoup库和介绍 BeautifulSoup使用 1、导包 2、实例…