D 语言/DLang 2.099.0 发布


D 语言/DLang 2.099.0 已于上月发布。 公告显示,这是一个重大版本,更新亮点包括:
  • D 代码模块可通过 ImportC 被导入 C 代码中
  • 引入抛出表达式 (throw expression)
  • PE/COFF 输出现在是 DMD 在 Windows 上的默认输出
  • ……
详情查看 Changelog。 使用 ImportC 在 C 源码中导入 D 代码模块 从 D 2.099.0 开始,可通过__import关键字直接将 D 代码模块导入 C 文件。
// dsayhello.d
import core.stdc.stdio : puts;

extern(C) void helloImport() {
puts("Hello __import!");
}
// dhelloimport.c
__import dsayhello;
__import core.stdc.stdio : puts;

int main(int argc, char** argv) {
helloImport();
puts("Cool, eh?");
return 0;
}
使用如下代码进行编译:
dmd dhelloimport.c dsayhello.d
此外还可导入已经通过 ImportC 编译过的 C 代码模块:
// csayhello.c
__import core.stdc.stdio : puts;

void helloImport() {
puts("Hello _import!");
}
// chelloimport.c
__import csayhello;
__import core.stdc.stdio : puts;

int main(int argc, char** argv) {
helloImport();
puts("Cool, eh?");
return 0;
}
使用如下代码进行编译:
dmd chelloimport.c csayhello.c
引入抛出表达式 (throw expression) 在 D 语言的生命周期中,throw属于声明(statement ),不能在表达式中使用,因为表达式必须有一个类型,而由于throw不返回值,所以没有合适的类型,这导致它不能使用以下语法。
(string err) => throw new Exception(err);
只能使用如下的方案:
(string err) { throw new Exception(err); }
不过从 D 2.099.0 开始,以下代码片段可通过编译:
void foo(int function() f) {}

void main() {
foo(() => throw new Exception());
}
详情查看 Changelog。
P.S. 发稿前看到最新版本为 2.099.1。更新内容主要是修复错误,以及两项关于编译器和库的重要变更。

相關推薦

2022-05-17

D 语言 / DLang 2.100.0 已正式发布。此版本包含 22 个主要更改和 179 个已修复的 Bugzilla 问题。 主要变化 改进 C++ header gen @mustuse强制返回类型错误检查的新属性 支持 contract 不变版本标识符 添加 .tupleof 静态数组的

2022-05-21

做开源有十多年了,这也是给自己的一个生日礼物。 D语言在国内的环境来说一直热不起来,我和我的开源团队也做过很多开源的框架,全功能的,基本对标 springboot 和 springcloud 那种级别,但是新手用起来不够友好,由于D语言

2022-05-26

Archttp 是一个性能极高的 D语言 Web 服务框架,拥有 Golang Gin 的性能,拥有 ExpressJS 的易用性。Archttp 1.0.0 发布以后收到了一些测试反馈,根据反馈修复一系列问题,感谢反馈的小伙伴 ;) 主要更新: 增强路由配置兼容 Restful

2024-01-04

行语义描述 流关联性,来回相关的消息会串成一个流 语言无关,使用二进制输传数据(支持 tcp, ws, udp)。支持多语言、多平台 断线重连,自动连接恢复 多路复用,一个连接便可允许多个请求和响应消息同时运行 双向

2023-10-24

“为了减少工作量,我们引入了 3D-GPT,这是一种利用大语言模型 (LLM) 进行指令驱动的 3D 建模的框架。在此背景下,3D-GPT 使 LLM 能够成为熟练的问题解决者,将 3D 建模任务分解为可管理的部分,并为每个部分确定适当的代理。

2023-08-16

  根据论文的内容,该团队开发了一款名为 D-Bot 的大语言模型工具,可以帮助对数据库进行管理。D-Bot 从文本来源中持续获取数据库维护经验,并为目标数据库提供合理、有根据的及时诊断和优化建议。 论文显示,该研

2023-12-05

进行语义描述 流关联性,有相关的消息会串成一个流 语言无关,使用二进制输传数据(支持 tcp, ws, udp)。支持多语言、多平台 断线重连,自动连接恢复 多路复用,一个连接便可允许多个请求和响应消息同时运行 双向

2022-06-15

专为高性能计算机图形学设计的编程语言 Taichi(太极)已经发布 1.0.3 版本,这是一个维护版本,带来模块更新和一些 Bug 修复。主要内容如下: 模块 支持导入外部 Vulkan 缓冲区 ( #5020 ) 支持将 taichi 作为 AOT 模块的子目录 (

2022-11-23

它是 JavaScript/ECMAscript 的子集,实现了大部分的 JavaScript 语言功能,没有完全遵从 ECMAScript 标准,同时抛弃了 JavaScript 比较难懂的部分。njs 不通过 V8 引擎实现,而是通过一个更小、能耗更低、更符合 nginx 应用场景的小虚拟机实

2024-01-10

行语义描述 流关联性,来回相关的消息会串成一个流 语言无关,使用二进制输传数据(支持 tcp, ws, udp)。支持多语言、多平台 断线重连,自动连接恢复 多路复用,一个连接便可允许多个请求和响应消息同时运行 双向

2023-04-07

ke 主要用于 C/C++ 项目的构建,但是同时也支持其他 native 语言的构建,可以实现跟 C/C++ 进行混合编译,同时编译速度也是非常的快,可以跟 Ninja 持平。 Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cac

2022-07-24

,Steam 工具箱。 此版本更新内容包括: 公告 非简中语言将默认隐藏加速和脚本功能,仅能通过切换语言并重启程序的方式还原被隐藏的功能 因经济状况原因,现已停止短信服务节约开销,后续会推出邮箱注册登录,对于

2023-08-13

口秒级打开,内存占用较低 支持Dark/Light主题以及中英语言 简单易用的操作及配置方式 可快速导入postman,insomnia或者swagger的配置 关键字筛选支持中文拼音或者首字母 可按接口、按功能、按项目导出配置,方便团队内共

2024-04-19

SQLite 是一个 C 语言库,实现了一个小型、快速、独立、高可靠性、全功能的 SQL 数据库引擎。SQLite 是世界上使用最多的数据库引擎。SQLite 的源代码属于公共领域,每个人都可以免费使用,用于任何目的。 SQLite 3.45.3 现已发布,