d的2.101版下
运行时更改
添加了avx512f
检测到core.cpuid
已添加core.cpuid.avx512f
特征标志,来允许在具有512
位向量支持的CPU
上运行时检测.
删--DRT-oncycle=deprecate
参考
帮助迁移,模块构造器的旧的易错
循环检查器.现在与--DRT-oncycle=abort
一样.
更改库
添加可在@safe
,同-preview=dip1000
一起用的SafeRefCounted
.
RefCounted
仅适合@system
代码,因为有可能在生命期结束
后,逃逸负载
引用.已添加它的std.typecons.SafeRefCounted
修改副本.还添加了可安全访问和修改
负载的borrow
函数.在@safe
代码中,-preview=dip1000
避免逃逸
对它的引用
.
@safe pure nothrow void fun()
{
import std.typecons;
auto rcInt = safeRefCounted(5);
assert(rcInt.borrow!(theInt => theInt) == 5);
auto sameInt = rcInt;
assert(sameInt.borrow!"a" == 5);
// 函数中用`引用`
auto arr = [0, 1, 2, 3, 4, 5, 6];
sameInt.borrow!(ref (x) => arr[x]) = 10;
assert(arr == [0, 1, 2, 3, 4, 10, 6]);
// 通过别名修改负载
sameInt.borrow!"a*=2";
assert(rcInt.borrow!"a" == 10);
}
直接
访问负载必须是@system
.尽管-dip1000
可防止逃逸
引用,可在域尾消灭
最后引用
:
int destroyFirstAndUseLater()
{
import std.typecons;
auto rc = SafeRefCounted!int(123);
int* ptr = &rc.refCountedPayload();
destroy(rc);
return *ptr; // 从释放内存中读,不要这样!
}
可用-preview=dip1000
使std.file.dirEntries``@safe
.
在RefCounted
的一些@safe
成员函数在SafeRefCounted
不再@安全
.RefCounted
类型和refCounted
函数仍可用.但是,主要目的是后向兼容
.不建议用于新代码.
std.socket.Socket方法现在只接受scope数组
为了符合dip1000
,std.socket.Socket
方法现在对所有切片参数,都有scope
属性.包括receive
和send
,还有setOption
.虽然,对使用Socket
,不是大更改,如果从它继承,则必须应用这些属性
至继承类,否则无法编译.
添加自定义填充值
到std.outbuffer.OutBuffer
类
扩展std.outbuffer.OutBuffer
的fill,alignSize,align{2,4}
方法,以在填充(甚至对齐)
时指定要写入
的值.
OutBuffer buf = new OutBuffer();
buff.fill( 1234, 42 );
// 在偏移处用42填充1234字节
buff.fill( 10 );
// ==fill0( 10 );
修改alignSize,align{2,4}
方法来,让用户定义
值来填充
到请求的对齐边界
.
OutBuffer buf = new OutBuffer();
buf.write(cast(ubyte) 1);
buf.align2(0x55);
assert(buf.toBytes() == "\x01\x55");
buf.write(cast(ubyte) 2);
buf.align4(0x55);
assert(buf.toBytes() == "\x01\x55\x02\x55");
buf.write(cast(ubyte) 3);
buf.alignSize(8, 0x55);
assert(buf.toBytes() == "\x01\x55\x02\x55\x03\x55\x55\x55");
DUB更改
构建特殊测试运行器配置
现在可用dub build --config=unittest --build=unittest[-cov]
来模拟构建测试运行器可执行的dub test[--coverage]
.注意,不需要现有的unittest
配置.
dub describe --config=unittest
允许
导出可执行
路径.
高亮输出
dub
现在对无法识别设置或选择文件发出警告
已添加cov-ctfe
和unittest-cov-ctfe
两种新的构建类型
.
分别通过附加-cov=ctfe
至传递
给编译器的标志集
,来扩展现有的cov
和unittest-cov
构建类型.
大改DUB设置和包目录位置
现在可在环境变量
或用dub
配置来配置DUB
下载包位置
及用户配置
位置.要用环境变量
或系统级配音配置
来指定存储用户配置
位置.
默认,DUB
在
窗口:%APPDATA%/dub/settings.json+%LOCALAPPDATA%/dub/packages/
Posix
:$HOME/.dub/{packages/,settings.json}
存储包.
现在如果DUB_HOME
设置了环境变量,则在$DUB_HOME/{packages/,settings.json}
存储.
或,如果没有设置DUB_HOME
,但是设置了DPATH
,则使用$DPATH/dub/{packages/,settings.json}
路径:
DPATH
环境变量旨在供所有与D工具
相关的,在用户空间
安装事物时使用.用于避免使主目录
混乱.
除了环境变量外,还可用DUB
的settings.json
文件配置包位置路径+settings.json路径
.要配置用户可编辑的settings.json
位置,需要调整系统级配音配置
.
在settings.json
中,可设置以下字段:
{
"dubHome": "/path/to/dub",
// 设置包存储和配置位置
}
此外,这些配置路径使用$VARIABLE
环境变量解析语法.
以下列表描述了从上到下
选择哪条路径,只要找到一条就停止:
1,$DUB_HOME
环境变量
2,$DPATH
环境变量
3,系统级的settings.json
的"dubHome"
属性(仅用于userSettings
)
4,最特定的settings.json
的"dubHome"
属性(仅适合localRepository
)
已删除"安装"和"卸载"
命令
用于复制只读文件的copyFiles
,现在使副本可写
.
dub run可跑子包
dub :subpackage
//==
dub run :subpackage
//类似
dub
//==
dub run
一次升级所有子包
-s
开关,允许dub upgrade
升级所有子包.
为了可重现
的构建和测试,提供更好的工作流程
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现