2407d,D2024三月会议

原文

第1项:ulong串字面和NUL终止

Martin说,他一直在为LDC开发新的ulong串字面,并想知道是否应该像普通串字面一样以无效结尾.沃尔特问他是什么意思,因为串字面总是秘密地以无效结尾.

丹尼斯问同样规则是否适合十六进制串字面,这就是马丁的意思.沃尔特说不.Dennis说内部可按串式表达十六进制数组串其他数组.

即使它是个整数数组,编译器仍在数据段中分配一个空字节.
Walter说编译器按二进制数据转换十六进制串字面,并问你为何要空字节.Dennis说,这并不是你想要的,而是编译器在生成代码中,看到串式时,只是在生成代码中添加了一个零终止符.

串式不必是串字面.可以是数组,import语句或十六进制串字面.在内部,有多种方法可以创建不是串字面串式.

Walter说,应该只对实际的串字面,隐式无效.马蒂亚斯问在其他地方这样做是否有坏处.因为在数组后面放置它,所以仅当取指针时才重要.

史蒂夫说这是对的.测试应该是"编译器是否显式按符指针转换它",此时,它应该添加终止符.

Paul说,他非常确定有些代码依赖终止零符当前行为,或针对CTFE生成的串,因此他会谨慎地更改它.Walter同意,但表示这些正在创建串字面,因此都应该总是加终止符.

丹尼斯说他不确定它.有时你可从一个字符数组创建一个内部仍是一个字符数组的串.不确定编译器是否此时添加了终止符.

Martin说,在LDC中实现新的64位十六进制串字面时,他有两个特例.第一个是他不是零终止他们.第二个是他不打算缓存它们.

所有其他串字面都可跨目标文件合并.因为这些十六进制串旨在表示二进制数据,所以不会对空终止符感兴趣,他假设它们会比平均串字面大.

他快速浏览了一下DMDPR,似乎无特例.因此,在DMD中,它们可能仍是零终止的,并像其他串字面一样跨目标文件合并.

Walter问,如果它要进入静态数据,为什么不想它合并.马丁说,测试会很贵,因为他按缓存键使用串自身.他不知道Phobos中使用此函数的新统一表,但它们可能非常大,比如几兆字节左右.

此时,成本会很贵.假设你不太可能在目标文件复制这些十六进制串.

沃尔特说这是对的.Martin说,他的主要观点是他期望会改变规范,但这在更新日志中,甚至没有提到.它提到你可按ulong文本转换任意串字面,但编译器已更改,串式的符大小现在可为8字节.

沃尔特问丹尼斯能不能处理好这件事.丹尼斯说他会的.

第2项:弃用Nullable上的区间API函数

丹尼斯链接到乔纳森提交但后来关闭的公关.PR弃用了按区间对待Nullable.他想知道对此的看法.

他说他在C#中经常使用nullables,并且很喜欢它们.
但是C#有特殊的符号可与System.Nullable一起使用.在这些符号出现前,人们还没有真正在C#中使用过Nullable.

如,当有Nullable并且它是无效时,则问题就是默认值应该是什么,且在赋值给它时有个符号可用它.所以他想知道是否可在D中完成,Jonathan给了他一个列表,说明为什么这在D中不管用.

他说的Nullable实际上还不是nullable.也许它是一个可选的,或只是一个类型,弄错了名字.因为没用它做nullable可做的事情.
所以Nullable应该是个区间,他不这么认为.nullable只是说该数据可附加一个无效值,而数据自身不是null.

Paul同意的NullableC#不同,它实际上是一个可选的类型,或是一个有误导性名的类型.在Phobosv3中,应该重命名它并添加一个实际的C#风格的nullable,但这与本次讨论无关.
至于Phobosv2,试用与C#nullable的比较按其设计的指导原则是有限的.

蒂蒙说,他也想提出类似的观点.显然,NullableOptional或其他容器,如果你弹出它,区间接口会改变区间.当调用popFront时,不想更改动态数组底层静态数组.

atila说这很简单:只需在object.d放置数组区间API即可.但他想D数组隐式是区间,而不必显式地说它们是区间.
这样事情更简单.阿蒂拉同意了.这里

这是他对DMD代码基的一个大目标:查看其中的一部分,弄清楚它在做什么,然后覆盖它,使其非常简单.

Paul说,小概率,当你在编写某种低级代码时,或当你已单独完成了检查时,应该可在不检查时访问nullable的值.

但它可能应该叫uncheckedGetunsafeGet之类名,而不仅是get.

检查char数组的内容都应叫"chars",如果期望为零终止,则应叫"charz".他说这是对的.应该停止在标准库中组合"串"和"符数组".
Jonathan反驳说,大多数串处理并不关心数组是可变的还是不变的.沃尔特同意,但坚持认为可变的符数组完全不同.

罗伯特说这似乎太像C++概念了,他不想这样.Dennis提到了Rust的特征.atila提出了Haskell类型的类.
Paul说,在D语言中检查模板类型的方式类似在Python,js,Ruby等动态语言中,检查代码类型的方式.

使用这些语言的在处理类型检查引起的问题时达成的共识是带强大的单元测试规则.这是D前进的最佳路径.

然后,atila带回了Phobos文档,说最好有更通用的指导方针,如"避免分配"或"避免异常",而不是API应该是什么样子的细节.这里面有太多的味道.

v3中不需要它.不会在上做太多的重载,因为专注于char数组而不是dchar.无论是否保留它,在v3中,Phobos都不必.

史蒂夫说,最小更好.一旦一个特征在那里,它就在那里,就会被它困住.他说,那些可用is式替换的简单特征,Dennis在聊天中提出了一个很好的观点,即你不能调用is式或把__traits传递给模板.
这是另一件需要考虑的事情.

丹尼斯说,也许人们更喜欢__traits,因为他们不喜欢导入std.traits来使用它们.沃尔特说,另一个很好的区别是,没有增加内置的成本.
标准库的特征,按模板,是有成本的.

拉兹万建议,或是,如果某些__traits有用,则应该考虑美化它们,并为它们制作一些额外的语法,让他们变成一等公民.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA开发必备的插件,实测非常好用

1、Lombok -- 简化Java代码开发 推荐指数: ★★★★★ Lombok:首当其冲的非常推荐的当然是Lombok Lombok能以简单的注解形式来简化Java代码,提高开发人员的开发效率。例如开发中经常需要写的JavaBean,都需要花时间去添加相应的ge…

实战大数据:分布式大数据分析处理系统的开发与应用

💂 个人网站:【 摸鱼游戏】【网址导航】【神级代码资源网站】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

linux服务器安全级别提升配置修改

linux服务器安全级别提升配置修改 说明修改登录密码策略步骤 设置用户密码定期更新登录失败次数锁定步骤 锁定系统重要文件文件说明锁定文件解锁文件 防火墙设置firewalld防火墙查看防火墙状态开启防火墙关闭防火墙重新加载防火墙配置添加端口移除端口添加IP到白名单移除白名单…

JAVA 实现拍卖框架及拍卖详情流程介绍(包含代码示咧)

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

Java项目:基于SSM框架实现的网上医院预约挂号系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的网上医院预约挂号系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

9.计算机视觉—目标检测

目录 1.物体检测边缘框目标检测数据集总结边缘框代码实现2.锚框:目标检测的一种方法IoU—交并比赋予锚框标号使用非极大值抑制(NMS)输出总结代码实现1.物体检测 边缘框 一个边缘框可以通过四个数字定义 (左上x,左上y),(右下x,右下y)(左上x,左上y,宽,高)(中间x,中间y…

铜排载流量计算

母线载流量的理论计算 有些设计规范给出了根据电流密度确定母线大小的标准,一般铜母线的要求是每平方毫米载流量1.55A,但只可以作为设计“自由空气中的单导体母线”的参考,不可以作为实际设备中选择母线截面积的方法。也有些设计手册里给出了…

使用Ckman部署ClickHouse集群介绍

使用Ckman部署ClickHouse集群介绍 1. Ckman简介 ClickHouse Manager是一个为ClickHouse数据库量身定制的管理工具,它是由擎创科技数据库团队主导研发的一款用来管理和监控ClickHouse集群的可视化运维工具。目前该工具已在github上开源,开源地址为&…

WordPress主题大前端DUX v8.7源码下载

全新:用户注册流程,验证邮箱,设置密码 新增:列表显示小视频和横幅视频 新增:文章内容中的外链全部增加 nofollow 新增:客服功能中的链接添加 nofollow 优化:产品分类的价格显示

《C++20设计模式》桥接模式经验分享

文章目录 一、前言二、探讨一个类有多个抽象父类的情况(为什么会有桥接)三、桥接模式3.1 UML类图3.2 实现 四、最后 一、前言 怎么判断你是否理解桥接模式了呢?🧐 试着回答下面这个问题吧!😋 桥接模式到底…

Mybatis Plus 自动填充注解 @TableField(fill = FieldFill.INSERT_UPDATE)

第一步:在需要自动填充的位置加上注解 通过在创建时间和修改时间上添加 fill 填充字段 进行自动填充 第二步:要想实现自动填充还需要实现MetaObjectHandler接口,在这里实现自动填充的逻辑 Component public class MyMetaObjectHandler …

pydub、ffmpeg 音频文件声道选择转换、采样率更改

快速查看音频通道数和每个通道能力判断具体哪个通道说话;一般能量大的那个算是说话 import wave from pydub import AudioSegment import numpy as npdef read_wav_file(file_path):with wave.open(file_path, rb) as wav_file:params wav_file.getparams()num_cha…

通过卷防水上限,解锁手机的新玩法?IP68之间亦有不同

当手机的日常防水已经成了基本功,防水能力的上限便成了新的赛道。 毕竟再谨慎的人,也可能会有手滑的时候。这个时候,一台有着IP68级防水的手机,就能给你提供一份安心。 【IP68是标准上限,不是手机防水上限】 IP68是…

前端三件套开发模版——产品介绍页面

今天有空,使用前端三件套html、css、js制作了一个非常简单的产品制作页面,与大家分享,希望可以满足大家应急的需求。本页面可以对产品进行“抢购”、对产品进行介绍,同时可以安排一张产品的高清大图,我也加入了页面的背…

【数据结构】建堆的时间复杂度

一.向下调整建堆 1.二叉树层数与总节点个数关系 层数一定时,在二叉树节点个数最大的情况下,二叉树为满二叉树,如下图所示,可以清晰地看到在满二叉树中第h层有2^(h-1)个节点,总节点N就等于一个等比数列的求和&#xf…

Ollama + Docker + AnythingLLM 搭建本地多用户AI知识库

整个过程需要准备三个工具: Ollama: 用于运行本地大模型的管理:llama3, qwen2等 Docker:用于运行AnythingLLM。 AnythingLLM:知识库运行平台,提供知识库构建及运行的功能。 Ollama, Docker 这二个安装不…

帕金森病患者的运动秘诀:你值得更健康!

大家好,今天我想和大家聊聊一个我们可能不太熟悉,但却值得每一个人去关注的话题——帕金森病患者的运动。帕金森病,这个听起来有些陌生的名词,其实离我们并不遥远。随着年纪的增长,我们身边可能就有亲友正在遭受这个疾…

MIPI竖屏解决方案,普立晶POL8901升级POL8903 两PORT LVDS转MIPIDSI,加90度旋转

POL8903描述: 系统: •采用高性能MIPS 32位CPU内核; •高性能DSP内核图像处理单元; •16 KB指令Cache;16 KB数据Cache; •96 KB SRAM;内置DDR 3控制器; LVDS输入: …

【JD-GUI】MacOS 中使用Java反编译工具JD-GUI

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明概念理解一、基础环境说明1.1 硬件环境1.2 软件环境 二、下载与安装2.1 选择对应版本2.2 解压运行排除异常:2.3 关于…

ubuntu篇---添加环境变量并且在pycharm中使用

ubuntu篇—添加环境变量并且在pycharm中使用 一. 添加环境变量 vim ~/.bashrc 在文件末尾加上 保存退出 source ~/.bashrc二. 在pycharm中添加环境变量 1.打开pycharm,并打开你的项目 2.点击菜单栏中的“Run”, 选择“Edit Configurations” 3.在弹…