最新的D编译器

LDC开发团队去年关闭了使用LLVM的D编译器的1.19.0版 ,而核心团队则以DMD参考编译器的2.090.0版开始了新的一年。 而且,如果您还没有听说过,不久前就会有关于基于GCC,GDCD编译器的重要新闻。 弥补!

最不发达国家1.19.0


此版本包含对LDC编译器的更新,该更新为前端2.089.1的D版本,这是天主教圣诞节后立即发布时的最新版本。 组装的装配基于LLVM 9.01

此版本的亮点之一是对Android的同情。 现成的DRuntime / Phobos库现在可用于所有Android目标。 该版本可与Adam Ruppe的Android Project D (一个辅助程序和界面的编译)结合使用,该程序现已完成测试版,即将在带有DDC的Android D上进行开发。

Windows用户将发现捆绑的基于MinGW的链接库已更新。 现在它们来自MinGW-w64 7.0.0包中的.def文件。 这些库使您可以使用Windows系统库,而不必安装Windows SDK。

DMD 2.090.0


DMD的最新版本已于1月7日发布 。 她提出了10项重大更改和71个已关闭的错误,由48位合著者提供

在此版本中,现在可以使用惰性参数进行更多操作。 D长期支持惰性选项
在调用函数之前,不会评估lazy参数的参数。 仅当在函数内部对参数求值时,才处理参数。
因此,惰性参数可以执行0次或多次。
在后台,它们被实现为代表。 现在,您可以通过获取以前禁止的参数地址来访问基本委托。

import std.stdio; void chillax(lazy int x) { auto dg = &x; assert(dg() == 10); writeln(x); } void main() { chillax(2 * 5); } 

此版本还淘汰了需要从类或结构析构函数内部进行终结处理(对象的不确定性破坏,通常由垃圾收集器发起)的人员使用的惯用语D。

在当前的GC状态下,禁止在完成过程中进行任何GC操作。 但是,D没有提供单独的终结器和析构函数。 尽管存在〜this,但实际上它同时扮演着两个角色,这被称为析构函数。 在为针对GC和非GC分配器设计的类型实现析构函数时,有时会遇到困难。 清理过程中对GC的任何调用都可能导致InvalidMemoryOperationError错误。 因此,需要上述解决方法。

现在,您可以调用静态GC函数core.memory.GC.inFinalizer,以获取析构函数中的状态。 如果当前线程正在完成,它将返回true,在这种情况下,您不想执行任何涉及使用GC进行操作的操作。 (在编写我的GC系列的下一篇文章之前,我一直期待这样的事情)。

直流电


由于Ian Bucklau,Johannes Pfau和所有多年来支持和贡献的志愿者的辛勤工作,GDC 2018年底被GCC 9接纳 ,并成为去年5月发布的GCC 9.1套件的一部分。 GCC 9.2于去年八月发布。 此版本的GDC实现了前端D的2.076版本。您可以自己构建它,也可以从通常获得GCC 9.x的位置安装它。

来自翻译


除了即将发表的关于可靠编程的文章(包括D)之外,博客的这一期几乎几乎完全阻止了它的发展,除了批评和IDE的状况之外,因此结果非常成功。

Source: https://habr.com/ru/post/zh-CN483440/


All Articles