d的12月会议

原文

丹尼斯

Dennis首先报告说,他已开始了一个用@default重置属性的DIP.它应该影响什么?是否应该重置所有属性(包括像可见属性),还是只影响函数属性?一致共识是,它应该只影响函数属性.此后,他提交DIP,以供草案审查.

拉兹万

@属性

在解决Bugzilla老问题时,Razvan遇见了许多@属性问题.
WalterAndrei过去曾说过,不应再支持这项功能,而且经常建议人们不要使用它.但人们仍然在使用它.那么,该如何处理它呢?是否应该试修复这些老问题?是否应该弃用@属性?

沃尔特建议保持现状.
拉兹万问,如何处理@属性问题.找人修复还是只是记录行为?Walter说是后者.还建议添加建议:最佳实践中要避免@属性.
现代软件开发:不只是破坏别人的代码,你破坏代码并给它修复工具.

总结,沃尔特@属性不重要.
Razvan指出简化语言是愿景的一部分,这似乎是个很好候选者.Walter同意.Dennis建议遍历DRRuntimePhobos查看是否可去除@属性.

CTFEwriteln

引入PR来实现__ctfe写行(writeln).wb随后批准了它.

traits减少Phobos模板膨胀

Razvan接着指出,编译时间是近来反复出现的话题,标准库模板膨胀经常是原因之一.以std.traits.fullyQualifiedName模板为例.每一个实例化都会导致额外1015模板实例.

此时,改为__traits改进是重大.另一方面,一直不愿意添加新的特征.可用新的特征减少标准库模板膨胀,应怎样?

沃尔特说__traits表明丑陋.为了减少常用模板的模板膨胀,值得添加trait.

沃尔特接着说,isPointer很普通(普通函数不应进入标准库).除了向后兼容,他在标准库中删除了所有是指针(isPointer).
隐式可转换(implicitlyConvertible),同样如此.在这两例,他都用等价is替换模板,阿蒂拉指出,如果是静态映射或过滤,模板仍是必要的,沃尔特说因此他没有删除它们.

Walter消除模板膨胀的一个方法:扁平化实例化数.很多时候,Phobos模板会在不需要转发到另一个模板.Andrei说,这主要是历史的,有时,用来避免漏洞,他同意扁平化实例化是件好事.

沃尔特说.现在能做的就是减少嵌套模板.
Razvan认为这是两个完全不同问题.一个是编译器很慢.另一个是标准库模板实现很浪费.需要解决这两个问题.他之前深入研究了hasUDA,他发现太多递归扩展,且未提供工具让用户了解模板瓶颈.

沃尔特,提出了-vtemplates报告模板统计信息编译器开关,是在Weka的要求下添加的.Razvan说,有人抱怨它没有提供足够信息.真正缺少的是编译时分析.

Andrei建议.多数时候,修改代码时,并没有更改模板实例化,而是改变它周围代码.这就是缓存或预编译模板想法,这样进一步编译就不会花费太长时间,仅当实例化变化时才编译模板.编译器创建小数据库来保存实例化.这不是很难.

马蒂亚斯

马蒂亚斯提出json格式缓存问题.

罗伯特

RobertD有很多小烦恼和痛点.
他指出,在2.101版本中,JanJurzitaLSP(语言服务器协议)实现开始崩溃.编译时间越来越慢.为什么LSP实现不随DMD一起提供?为什么没有编译器守护进程?为什么构建时间不小于1秒?为什么要讨论添加@live,标签枚,等等?他只是想要一个简单语言,可以让LSP开箱即用,不要太疯狂.正在讨论如何修复内存安全,但这很复杂.让语言更简单.

Robert说,编译不再是批处理.编译器应该是个带内置LSP的守护进程,文件变化时编译它们.Andrei早期的缓存模板应该有用,要求重写,最好现在就开始干.

WalterRobert是否可提供D问题列表.Robert说他会试试.
论坛上有Jai放弃D的帖子.Walter的印象是,该人已提交了多个bug.但结果是他提交了三个,Walter已修复了其中两个,最后是微软C编译器ABI问题.微软文档ABI描述是错误的,所以代码生成是错误的.
Robert重申,他的头号可操作项目是向编译器添加LSP实现.然后,他解释了如果编译器作为守护进程运行带来的好处,并举例说明,大改语言时,合并工具自动更改编辑器中的代码.他说Janserve-d方面的工作非常好.但如果编译器本地实现它,会更好和更快.

Razvan说问题是不支持增量编译.他提到了过去按库用dmd,也因此遇见了问题.Robert说因此转移守护进程需要全部重写.增量编译很重要,应该有它.建议大家安装AS,玩玩FlutterDart.开发者体验非常好.Razvan想知道SDC是否支持增量编译.

BugzillaGitHub的迁移,略.

JSON解析器

Robert最近使用和类型(SumType),实现了个快速JSON解析器.他想看看是否可用和类型来表示HTML/XML/JSON/YAML/TOML.除了按sumtype值赋值,它在@安全中工作,且很好,实现只有150行左右,他只用了半个下午.和类型真很好,没有std.xml/std.yaml/std.html/std.toml,标准库中应有它们.

阿里

改进了std.file.dirEntries性能问题,std.parallelism.parallel很好用.

安德烈

Andrei说他做了大量C++编码,这给了他有趣的视角.D语言可利用好的一个领域简化.更简单的语言真很有用.他注意到C++中的一些特征是为了对抗其他设计实现不佳的特征而设计的,这增加了复杂性.

如,缓存模板实例化.有一些不管用的(如@属性),应该删除.阿蒂拉说,除非有"版本",才能做一些非破坏性修改.

阿蒂拉

Atila说他一直在想DConf在线应讨论些什么.他回到了很久以前Andrei说的更好,更简单反射方式.现在使用的不同的API很复杂.
为什么不用串插件呢?只用串插件来编写另一个Py包装器库,但该领域没有成熟技术.编译时间有多快.(很有趣).调试模板体验不好.

Andrei说他和Walter过去讨论过串插件问题,这里可.串插件有两个阶段:一是创建串,二是插件它们.他推测创建串的成本更高.Andrei认为值得重温,Walter当时的想法,编译器应可很容易地一次创建模块/构/类反射,而不是一片一片地组装它.你请求反射,它会给你一个字段表示信息串的结构.安德烈建议,如果它在编译器中,性能会更好.阿蒂拉直觉是,CTFE字节码解释器会对速度产生更大影响.

不管怎样,仅是插件了,而不是使用模板,阿蒂拉就发现性能上的惊人提升,最难的部分是决定如何构造代码,用模板,一切都是整洁干净的,如果要凭空制造函数,可把它放在模板中,然后实例化模板.而对插件,必须为函数生成串,然后放在某个地方.

注意到,阿蒂拉的演讲是对史蒂文演讲(建模一切)的补充.

沃尔特

沃尔特一直在研究已存在了10年的模块信息漏洞.似乎没人明白模块信息的工作原理.部分文档问题.这是用D的障碍,需要修复它.

他想继续努力解决内存安全问题.对营销没用,但至少在技术上,可以完成.

@安全放在头部,禁止取栈地址,禁止返回引用,且禁止指针算术.这是需要的安全.D最好站在Rust之上,TypeScript之下.这也是需要的.但Rust会接管C++.Rust也接管了一些网络,因为它很容易编译wasm.

沃尔特同意C++永远不会消失,但会淡出视野.

然后说他最近做的另一件事是让人们提供遇见问题具体清单.模糊的概括是没用的.他需要他可以解决的行动项目.

他必须优先考虑待办事项.展望未来,他在考虑内置的sumtype,不确定实现时间表.但是经过审查并可工作的规范是件好事.唐艾伦已发布了一些ImportC问题.他希望先修复容易问题.

现在面临的一个非常大的问题是,因为在dmd中,没有完全实现dll,在二进制镜像级别上,如何表示符号的基础很不稳固.
增量编译等工作,都必须认识到,目前还没有可靠跨平台基础.也即,很容易遇见这里
我相信必须相当显著的修改导出.
C/C++世界里,可用宏和编译器级定义来交换DllImportDllExport,或全部删除它们.D不能这样.表明如果不想在窗口上遇见这些问题,需要更加智能导出.

posted @   zjh6  阅读(9)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示