2402d,d的标准库更新讨论

原文
沃尔特和我昨天就标准库3进行了富有成效的对话,认为分享一些关于讨论的笔记是合适的.
谈话开始时,我摸索着了解版本如何影响标准库.讨论围绕两个主题展开.

首先是如何构建标准库3包结构.Walter提议使用std2.作为根名字空间.主要原因是,想避免从std.导入可能触发自动解码的东西.

我指出了该设计的两个主要缺陷.

首先,很容易在std2中意外键入std.模块.且发现,无论使用什么根名,这都是一个问题,适当答案是指定一个Phobos相关的DStyle规则,即只有std.中的模块才能导入std.模块.

其次,该设计表明std2中的"2".是一个版本说明符,它将随着每个Phobos版本的发布而递增.这不是本意,一致认为这会令人困惑.

我建议使用sys.作为标准库3根名,沃尔特认为这是可接受的.简要地讨论了把标准库分成多个根源的问题,但没有明确达成一致.

另一个主要讨论的话题是我所说的"默认残废"版本设计,其中如果未指定版本,最旧版本(是上个预版本)是默认版本.

终端用户角度来看,这有点难,但是,在工程中,总是想默认或简单"正确",然后必要时提供后门.

因此,编译器应默认使用最新版本,然后通过开关设置模块版本或导入路径缺少的功能版本.这解决了废弃包可访问问题,而不会向新用户提供越来越旧的编译器版本.

想尽量向前迈进,并展示不断变旧的上个预版本.

然后,他继续讨论Walter设想的版本如何实际工作.因为没有人看过Atila正在编写的文档,Walter分享了他对它应如何工作的看法.

Walter想看到一个指定实验功能的版本属性,然后每年有个包含上一年所有推广功能的"汇总"版本的"混合"方法.

因此,如果DIP1000升级到2025版,则,无需专门启动它,DIP1000默认在该版本和所有后续版本中活动.
确实可能导致另一个"函数属性汤"问题,但总之,我完全同意版本应该用该模型,C#C++都这样,所以对来自这些语言用户来说,概念上会很舒服.

此后,讨论了如何分发标准库.主要集中在发布节奏上.我主张关联标准库版本与版本发布时间表.这是明智的,你更容易推导正在使用的编译器/库配对.

沃尔特对此表示满意,但他不想用"版本"语言来描述标准库的发布.这是对的,因为Phobos并没有真正的版本,但在SemVer之后,它每年都会发布主要版本.

新功能每年发布一次,且在年度版汇总间的DMD的快速节奏时间表上发布错误修复.

最后,简要谈到了想在标准库3中看到的主要变化,这些是迄今为止为标准库3承诺的主要变化:
1,删除自动解码.
2,从实验中推广分配器.
3,重新设计区间接口(见此处的JMD线程)这里.
4,修复std.traits.

以上列表并非全部,可接受进一步的建议.就我而言,我很想看到CryptographyStreamAPI进入Phobos,但我确信社区想要添加的内容列表会有很多,因此这些最终可能会降低优先级.

如果可能,我想安排计划与参与该指定更改的人的会议,这些更改流式传输到YouTube,以便社区可通过Discord参与.

如果想参与标准库3的设计讨论,我目前正在GitHub上管理一个仓库,其中包含来未解决/未设计主题的GH讨论,及来编辑实际设计文档的PR.链接在此:这里

你可能感兴趣的:(dlang,d,d)