余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

Swift 2023:强调并发、泛型和 C++ 互操作性,开发 Swift 解析器

xiyangw 2022-12-03 12:07 22 浏览 0 评论

出品|开源中国

Apple Swift 团队的一名工程师兼语言工作组成员 John McCall 在最新发布的一篇博客中介绍了 Swift 的 2023 年度计划。

“Swift 项目中有很多激动人心的工作正在进行,而且很难跟踪所有这些工作,因为它发生在许多不同的存储库、拉取请求和论坛线程中。为了让社区更好地了解全局,核心团队调查了整个项目的工作组和开发人员,并收集了有关他们明年关注的内容的信息。”

社区组织方面,Swift 核心团队最近开始重组以便由专门的工作组承担更多责任:

根据介绍,这些新的工作组加入了长期存在的 Swift on Server 和 Diversity 工作组,使感兴趣的用户可以更有针对性的加入专门的工作组来做出贡献。核心团队正在研究创建更多的工作组,包括一个致力于提高 Swift 跨平台可用性的工作组。

核心团队的成员也有所更新,Mishal Shah 将加入核心团队。“作为支持 Swift 项目的许多底层基础架构的领导者和倡导者,一段时间以来,Mishal 在支持 Swift 项目的发展方面发挥了重要作用。”

语言发展方面,语言工作组专注于在五个主要语言领域取得进展:

  • 并发完成对 Sendable actors 提供的严格数据隔离的语言支持。计划包括关闭许多已知的线程安全漏洞,例如围绕全局变量和某些 cross-actor 调用的漏洞。它还包括配备一些功能来解决因 strict isolation 而产生的可用性问题,例如允许 non-Sendable 在受限情况下在隔离域之间移动。

  • 泛型语言工作组打算致力于可变参数泛型语言特性工作。这是一项预计需要多年才能完成的主要功能,最初侧重于设计核心语言模型并实现编译器和运行时基础架构以支持它。一个早期的里程碑将是允许元组类型在其元素符合 Equatable 等协议时有条件地符合协议。

  • 所有权

    • 开发功能让程序员明确控制内存中值的所有权。

    • 添加对 non-copyable 类型的基本支持。这将提供通过限制关键值的生命周期来实现高性能的新方法。这些控件将启用处理内存中数据的新方法,将当前 “不安全” 构造的性能与 Swift 标准库功能的安全性相结合。

  • 着眼于进一步支持创建丰富的库和 DSL。这项工作将从创建 vision document 开始,为宏能够在 Swift 中实现什么以及它们如何融入语言进行设计。

  • C++ 互操作性

    • 编写文档,阐述如何使 C++ API 在 Swift 中可用,反之亦然。

    • 稳定当前在 Swift 中使用 C++ 的原型互操作性功能,包括 owned value types、trivial value types、API 模式(例如外部引用类型和迭代器),以及一些关于方法、指针、l-value 和 r-value 引用的一些基本问题。

    • 稳定当前用于从 C++ 使用 Swift 的原型互操作性功能,包括 Swift 值类型、引用类型和函数 exposed 给 C++ 的方式

此外,语言工作组还正计划为即将到来的 Swift 6 语言模式完成预期的语言修订。Swift 定期引入新的语言模式,以便语言可以在不破坏现有代码的源兼容性的情况下取得进步。以及编译器开发团队正在努力改进编译器与构建系统和自身其他调用的交互方式。

对于 Package Registry,Swift 包管理器的开发重点是与社区一起开始开源 package registry server 实现的工作。目标是创建将 Swift 包生态系统从基于源代码控制的生态系统过渡到基于注册表的系统所需的技术组件,从而增强生态系统的安全性和可靠性。其计划将与 Swift Package Index 等社区运行的项目合作。

2023 年针对 Swift 的其他努力还包括:

  • 开发一个 Swift 解析器,它是用纯 Swift 编写的,并且具有当前 C++ 实现的功能。这开辟了工具开发的新方向,最终将取代 C++ 解析器。

  • 通过将类型推理实现迁移到支持 multi-statement closure 推理的更具可扩展性的基础架构,提高结果 result builders 的类型检查性能。

  • 通过与类型检查器更紧密地集成,提高 code completion 和 lookup-dependent 工具(例如快速帮助和跳转到定义)的可靠性,尤其是在不完整或不明确的代码中。

  • 在某些情况下,通过消除对转换 thunk 的需要,在转换函数时生成更少的代码,尤其是在将 closures 传递给通用函数和导入函数时。

  • 通过解释 type layout 的 compact encoding 而不是发出 specialized functions,在 copying 和 destroying 复杂的结构和枚举时生成更少的代码。

  • 添加 SIL 优化器支持新语言功能和与 object lifetimes 和 copies 相关的可预测优化。团队正在设计一套新的 low-level SIL 实用程序,以在整个现有优化管道中保持所有权不变性。这将导致可靠的诊断和可预测的性能。

  • 在 Swift 中重写当前的过程间 side-effect 和 escape analyses,替换当前的 C++ 实现。新的实现提供了更准确的结果并且明显更简单。

相关推荐

web前端开发技术培训需要学习多久呢(web前端开发培训哪个机构比较好)
web前端开发技术培训需要学习多久呢(web前端开发培训哪个机构比较好)

前端开发技术培训费用是多少,需要学习多久?随着市场上新型开发场景的不断增多,企业对前端开发技术的要求也在不断的提升,对前端开发工程师的需求量在不断的增多,市场上...

2023-03-21 18:41 xiyangw

学web前端开发需要多久?学Web前端开发有什么优势?
学web前端开发需要多久?学Web前端开发有什么优势?

随着it行业的发展前景你一片大好,无论是岗位需求还是就业薪资都比较理想,很多人也想转行IT开发。很多人建议零基础转行IT开发选择前端开发。那么,学Web前端开发...

2023-03-21 18:41 xiyangw

零基础参加web前端培训需要学习多久(web前端自学需要多久)
零基础参加web前端培训需要学习多久(web前端自学需要多久)

  前端开发作为IT行业中相对比较好学的方向,薪资水平也不低,所以很多零基础的人在转行的时候都会选择Web前端相关的行业。而零基础转行首先需要学习前端技术,那么...

2023-03-21 18:41 xiyangw

前端培训学费一般多少?需要多长时间?(前端培训学费一般多少?需要多长时间才能学完)
前端培训学费一般多少?需要多长时间?(前端培训学费一般多少?需要多长时间才能学完)

  在互联网时代,我们是离不开开发的,毕现在我们工作生活都有开发技术的参与。如今前端开发是比较热门的技术,现在学习前端的小伙伴非常多,大部分都会选择培训的方式快...

2023-03-21 18:40 xiyangw

web前端开发培训要多久?web前端框架有哪些?(web前端架构培训哪里有)
web前端开发培训要多久?web前端框架有哪些?(web前端架构培训哪里有)

  IT开发行业中前端开发岗位一直是大家关注度比较高的,有不少小伙伴都想学习前端开发进入IT行业。web前端开发培训要多久?除了需要掌握基本的前端开发知识以外,...

2023-03-21 18:40 xiyangw

前端开发培训一般几个月(做前端开发需要学什么)
前端开发培训一般几个月(做前端开发需要学什么)

随着移动互联网的快速发展,市场对编程技术人才的需求越来越大,像Java、前端这样的技术人才的需求也越来越大,让不少人都看到了学编程未来的前景,学习编程技术的人也...

2023-03-21 18:40 xiyangw

Web前端小白入门封神之路 第八节(js入门基础)

视频加载中...关注微信号“网页设计自学平台”回复以下|关键字|获取资源----------------------------------------------------------------...

JS基础入门-函数的使用(js函数教程)
JS基础入门-函数的使用(js函数教程)

今日背诵小纸条函数的定义1.命名函数functionfn(形参1,形参2...){//函数功能代码}2.匿名函数varfn=function(形...

2023-03-21 18:39 xiyangw

javascript -Ajax基础入门(javascript语法基础)
javascript -Ajax基础入门(javascript语法基础)

1.什么是Ajax?a)无刷新的数据读取;2.关于浏览器缓存:a)缓存机制:根据地址来缓存,同样地址只读一次;b)解决缓存困扰:在文件名后加上一个时...

2023-03-21 18:39 xiyangw

JavaScript快速入门02-数据类型(javascript从入门到精通)

JavaScript基础语法02数据类型在js中的变量可以保存多种数据类型:数值、字符串值、布尔值、空值、未定义、数组、对象等。varlength=7;...

Javascript入门基础 002(cad入门基础知识)

在javascript中数据类型Numbe:可以在变量中存储数字,是int整数类型,或者浮点(3.1645965)varx1=10;varx2=3.14155654String:存储字符...

初学者学习JavaScript不得不掌握的小窍门(学习英语的小窍门)
初学者学习JavaScript不得不掌握的小窍门(学习英语的小窍门)

Javascript是一种高级编程语言,通过解释执行。它是一门动态类型,面向对象(基于原型)的直译语言。它已经由欧洲电脑制造商协会通过ECMAScript实现语...

2023-03-21 18:38 xiyangw

学Javascript要看什么书?从入门到进阶书籍推荐
学Javascript要看什么书?从入门到进阶书籍推荐

程序员想要完成一些简单的WEB前端需求,就必须掌握基础的JavaScript编程能力。因此为了方便大家学Javascript,小编整理了Javascript从入...

2023-03-21 18:38 xiyangw

零基础自学编程,为什么建议JavaScript作为自学编程的首选语言

我是一枚女码农,在开发行业工作了十余年,能熟练使用市面上主流的多种开发语言。个人觉得自学编程入门语言的话我建议还是JavaScript为什么这么说呢?我阐述下我的几个观点1、JavaScript是一门...

为初学者学习JavaScript的重要提示(为初学者学习JavaScript的重要提示)
为初学者学习JavaScript的重要提示(为初学者学习JavaScript的重要提示)

所以,如果你已经阅读了这篇文章来到这里,你可能已经非常了解从初学者的JavaScript开始。然而,从编写新手到编码器的过程是漫长,艰难和艰苦的-相信我!幸...

2023-03-21 18:37 xiyangw

取消回复欢迎 发表评论: