d的11月会议
马丁
Martin
告诉下个LDC
版本会晚一点发布,他没有太多时间,仍然需要解决一些合并DMD
和DRRuntime
仓库的细节.
他刚测试了2.101.0RC1
的对称代码基
.目前还不算太差,但很难确定,因为需要更新几个dub
包.一个可见
好处是,它发现了一些与复制构造器
相关的现有八哥
.还发现了一个要提交的回归
.
除此外,他祝贺Dennis
在推导函数
方面做出了些新的诊断
,表明,如,不再需要手动
找出,因函数中的哪一行
,而推导函数
为@系统
而不是@安全
.
目前,测试的对称(Symmetry)
项目上,最新配音
版本没发现回归
.这是很好进步
.新的彩色输出
也非常好.
Petar
问Martin
是否计划整合LLVM15
到下个
版本中,或懒
到下个版本中,Martin
说NicholasWilson
和其他人已准备迁移到LLVM15
,根据测试,LLVM15
应工作.但是在Martin
用LLVM15
运行所有测试
前,还有些工作要做.
首先,需要为所有目标
更新LLVM
的LDC
分支为LLVM15
.然后,他需要克服通过GitHub
动作测试普通LLVM
的问题,因为LLVM
团队已停止生产某些GitHub
工件.现在还有问题.
拉兹万
过去一个月,拉兹万
一直在研究noreturn
实现,他已修复了一些,但仍有五六个
报告的八哥
没有修复.他遇见了肯定是后端
有时无法识别noreturn
的障碍.
Martin
说,前端懒
到后端的所有东西
都会影响胶水层
,如果未在前端
处理它并降级
到其他构造,noreturn
是个不幸
.
如,显然不能有noreturn
全局变量,但是它们仍然在AST
中,所以胶水层
要处理它们.在LDC
中,用一个空字节
赋值它们,但这会在调试信息
中引起一个问题:它需要一个类型,但是给它什么类型
呢?
最好是AST
中没有noreturn
,而是把它们降级
到其他构造
中.所有其他
编译器都要复制DMD
后端中修复
的所有问题.
沃尔特
同意了.noreturn
根本不应进入
后端.在决定如何解决
它前,要返回并查看后端
中已有内容.
接着,Razvan
报告说,他一直在找为函数
实现抛
属性的公关
.问题是它有nothrow
时,可能会中断用getAttributes
属性的代码.
Walter
说编译器
内部应该按缺少nothrow
而不是按单独属性对待throw
.唯一目的
是关闭nothrow
,因此最好是不必更改用getAttributes
的代码.
它不像是三态
的@安全/@信任/@系统
.二元nothrow/throw
状态,只需关心
函数是否为nothrow
.
这里,安德烈
提起了过去属性(真)
及属性(假)
,沃尔特说,语法
很笨拙,很容易用抛
关掉nothrow
,因为它已是关键词
了.
Petar
提出纯(pure)
及@nogc
.触发了属性代数,属性汤,相互禁止的正负属性,属性推导,循环依赖
等长时间讨论.
最后,丹尼斯
给出了他的观点,并提及过去
提出的另一个建议:用默认(default)
关键字来为非模板,未注解
函数创建一组可"重置"
函数属性状态
的默认属性
.Walter
认为用默认
来重置状态
是个很好
主意,应该在实现抛
属性前考虑它.丹尼斯提交了一份.
接着,Razvan
提供了一些,在嵌套在其他式
中时,在被调
而不是调用者
环境中,与求值__FUNCTION__
和__FILE__
有关的八哥列表
问题的背景知识
.
他有个要沃尔特
决定的公关.Walter
随后反馈了下代码
,尚未对总体
方法发表意见.
最后,拉兹万
问了下移动构造器DIP
,这里的状态,Max
说他有一段时间
未在上面工作了,但他需要根据Weka
的关于"最后使用
"推导的反馈
来修改.
Martin
建议语法
和作为引入语言特性
的移动
构造器,应在最后使用
后解耦.因为后者
允许编译器
不必让用户,在指定
时调用库函数
,而是自动移动
的优化.他希望比库方法
更简单且性能更高的内置移动和转发
.
马克斯
Max
拿来了简化D语法
(弃用尾部小数点
这里,禁止令牌序列尾部
中添加注解
这里,不再支持
小八进制这里)的三个DIP
.需要这些DIP
吗?马丁认为不想
.沃尔特也不确定.
Dennis
提供了一些背景知识(Garret
已为D实现了Treesitter
语法,由此产生这些DIP
),并提出了更大的问题:
降低
词汇复杂性的价值
?过去
否决了类似
修改建议.一方面,一些用户
不希望破坏
.另一方面,工具
开发者感到沮丧
,因为很丑陋.简化
语言是在愿景文档中.是否值得清理
下来制作更简单
的词汇图?
Walter
认为这是值得
的.但需要在逐个案例
基础上考虑.Iain
建议此更改需要弃用
周期.删除-transition=complex
用了10年,并仍开启20
个版本周期的弃用.
Max
接着问是否
弃用现有语法,现在有两个Treesitter
语法,用从Treesitter
语法生成的机器可读
语法来代替它,Max
认为Garret
的实现禁止编译器
做某些语法错误
的事情.
Walter
指出,如果人们为D创建了其他语法
,这对他们来说是个重大失败
.如果不是机器可读
的,那么应该修复它.Dennis
指出,弗拉基米尔已修复他的一些Treesitter
语法,来后向移植
到了官方语法
上.
丹尼斯
丹尼斯先提出的第一个问题
,是在实现命名参数
时遇见的.dip
建议,重定义语法
中参数列表(ArgumentList)
,来用命名参数(NamedArgument)
代替赋值式(AssignExpression)
(现在是命名参数
的部分定义
).
但是有时
不需要命名参数
(如用户定义属性(UserDefinedAttribute)
,Pragma
,CaseStatement
),此时用参数列表
.
他想知道是否应该把命名参数
从解析
移动到语义
中.Walter
建议定义在命名参数
地方使用新的命名参数列表
,并在其他地方,继续使用参数列表
.他说应该尽早
发现错误
,所以最好在解析
过程中发现命名参数
错误.Dennis
说他会提交一份PR
来修改DIP
.
接着,Dennis
提出了稳定和主
分支间区别,
可总结为:没有硬性规定
,只有低风险
才应该进入稳定
分支,但是否
低风险是个主观判断.
这次讨论
产生了两个结果,一个是Martin
和Iain
同意在发布DMD
前,对β和发布
候选阶段,应该有更多时间
,另一个是应该安装1个GitHub
动作来自动合并
所有到稳定
的提交进主
分支.
我
我在编辑和发布
剩余4个视频.
然后通知了下dip1044
的作者,推导枚举类型.
安德烈
安德烈问拉兹万
关于原型对象DIP
,这里.Razvan
说AdamRuppe
在DIP
的拉取请求线程中提出了一些有效
的抱怨,在社区评论
中得到了加强.Razvan
和主要作者
当时未回答这些抱怨.主作者
最终决定继续前进
(我稍后标记DIP
为"撤回").Andrei
认为值得努力解决
提议中问题
.
接着,Andrei
谈到了内存安全
,及它在更广泛的编程社区
成为主要话题
.Rust
在销售它上做了大量工作.马克
建议现在该放弃C和C++
,在新的项目中使用Rust
了.D
需要对此给出答案.在解决安全
问题前,D
的GC
,有两个缺点,没有优点
.
当今时代,必须实现100%
的内存安全.Walter
同意,并说必须
达到该目标.
拉兹万
提出了沃尔特
的默认安全DIP
.现在该重新审视DIP
,修改它使外(C)
函数总是默认
为@系统
.注意到有个DIP
,这里.我读了沃尔特
说得够清楚了的外(C/C++)
函数节.作者一直未回复
,沃尔特建议,应该试着找人
来接管它.
现在,我放弃了最终审查回合
,所以DIP
在大修前,在推送给Walter
和Atila
前只经历一轮
审查.
沃尔特
Walter
从他最近
的一个八哥
搜索开始.他正在实现向量的SIMD
比较操作符,并发现没有注册
.最终设法追踪到几个月前的忽略了的因为八哥
而禁止XMM
分配寄存器的一个PR
.他可修复提示该PR
的八哥
,并重新启用XMM
寄存器分配.
因为被禁止
了,他一直在研究SIMD
比较操作符.在D中
第一次实现向量
操作时,对它们有个误解
.最近,他再次研究APL
语言时,现在一切都理解了.
然后他发现SIMD
,类似硬件上的它误解了的APL
语言.所以他实现了缺失
的比较操作符
.他说Iain
有些保留意见,但是Walter
认为这是最好
方法.
这是GCC
实现向量
指令,GPU
需要向量指令.在D中
,他很高兴的使SIMD
操作成为一流
的特性.他仍然需要决定如何处理数组
操作.它们应按相同方式操作,但是他打算稍后
再讨论.
Martin
说,在几个版本
前,他就已在LDC
中实现了向量操作
.他谈到了一些实现
细节.在大约一周前与Iain
了一次谈话,Iain
提出了一些关于模板
的担忧,Martin
同意.
随后,讨论了实现向量操作
的不同方法
:硬件期望什么,什么对用户最有利,它如何影响通用代码,GPU
期望什么,自动向量化,掩码与标量布尔值与位向量
等.
Walter
接着,是修复Timon
发现的DIP1000
问题.他发布了几个PR
,所以他在加强DIP1000
方面取得了稳步进展
.提出尽管很简单
,DIP1000
很难让用户理解
.沃尔特认为,这是因为D的语法糖
会模糊实际工作
.
另一方面,Walter
听说许多Rust
不了解借位检查器
工作原理;他们只是不断
调整代码直到它编译.DIP1000
类似:它不会增加代码
中语义,它只是减少
它们.所以试属性直到它工作
也算部分合理
.
不管怎样,编译器
非常擅长推导
属性.扩展
编译器用来自动推导
的函数种类
,可大大减少使用函数属性
的必要.在这方面
状态良好.可继续找到,人们给他的表明DIP1000
不行示例的解决
办法.
Dennis
指出,目前"试属性直到成功
"方法的一个问题是,有时,仅当有八哥
时,编译器
才会成功,而当修复八哥
时,在Buildkite
的随机
项目中失败.沃尔特说这是个很好
的观点.
除了说需要优先修复DIP1000
八哥之外,他没有借口.几周前,他已检查了八哥列表
,检查了他发现的所有高亮的DIP1000
八哥.大多数重要
的问题已有了PR
,他还提交了更多的PR
.从那以后可能会报道
一些新问题
,但他和丹尼斯在使DIP1000
成型方面取得了一些很大
进展.他对花了这么长
时间才达到100%
感到恼火,但对它的发展
方向感到高兴.
亚当对ProtoObject
的抱怨,在这里开始.
我建议的是迁移
现有对象
以匹配
期望功能.
人们最大的抱怨是
,在现有语言
中,总是
存在监听器字段
.不必大改,可推导出这一点
;在类定义
所在的同一个
模块中,出现'synchronized(this)'
可推导出它的必要性,并添加它到类型中
(当然,这也包括'synchronized'
类和方法),但在其他模块中,因为可单独编译它们,就不能这么肯定了.
这会打破使用同步
(随机对象
)(包括我),但迁移
是很简单的(类型),且保持与旧编译器
兼容性,所以这是最小痛苦.
或删除
它,并要求使用显式互斥字段
,这也有很多优点,但更具侵入性
,表明完全删除同步类和方法
语言特性.
dip
中其他抱怨包括已修复了的opEquals
(可删除,但也可无害保留
),删除工厂
,opcmp
(如果调用它,它会抛!可简单地删除它),及最近随机
破坏性更改(及会破坏
代码的坏更改
)的opHash
,所以,其他
一切都已在Object
自身中解决了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现