LDC 1.18.0 发布,高性能 D 语言编译器

2019年10月23日

LDC 是一个高性能的 D 语言编译器,后端基于 LLVM 架构生成跨平台的二进制文件,生成的二进制执行程序性能强劲。

最近 LDC 社区的开发效率比较高,可以迅速的跟进 DMD 编译器的新特性和 BUG 修复,本身也有很好的跨平台支持特性,包含 WebAssembly / Android / FreeBSD on PowerPC 等平台。

版本重要特性:

  1. D 语言版本支持升级到最新稳定版 2.088.1
  2. 支持最新的 LLVM 9.0 架构
  3. Preliminary Android CI, incl. experimental prebuilt armv7a package generation (API level 21, i.e., Android 5+). (#3164)
  4. 升级内置的 dub 版本到 1.17.0+ (因为此版本改进了 dub 对 LDC 编译器的支持) (dlang/dub#1755, Wiki)
  5. Init symbols of zero-initialized structs are no longer emitted. (#3131)
  6. druntime: DMD-compatible {load,store}Unaligned and prefetch added to core.simd. (ldc-developers/druntime#163)
  7. JIT improvements, incl. multi-threaded compilation. (#2758, #3154, #3174

支持的 LLVM 架构版本:

  • Supports LLVM 3.9 - 9.0.

Bug 修复:

  1. Don't error out when initializing a void vector. (#3130, #3139)
  2. druntime: Fix exception chaining for latest MSVC runtime v14.23, shipping with Visual Studio 2019 v16.3. (ldc-developers/druntime#164)
  3. Keep lvalue-ness when casting associative array to another AA. (#3162, #3179) (new)
  4. druntime: Fix regression for POSIX systems without backtrace[_symbols], introduced in beta1. (#3165, dlang/druntime#2796)
  5. Fix compilability regression with make, introduced in beta2. (#3188, #3191) (new)

其他问题处理:

  1. Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  2. LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.
展开阅读全文
4 收藏
分享
加载中
精彩评论
主要是因为 dmd 特性比较新,方便研究最新特性:)
2019-10-23 17:17
1
举报
最新评论 (4)
现在你们主要用ldc还是dmd?
2019-10-23 15:46
0
回复
举报
其实都有,开发者环境 dmd,线上代码发布环境尽量使用 ldc。
2019-10-23 16:01
0
回复
举报
哦哦👍
2019-10-23 16:05
0
回复
举报
主要是因为 dmd 特性比较新,方便研究最新特性:)
2019-10-23 17:17
1
回复
举报
更多评论
4 评论
4 收藏
分享
返回顶部
顶部