是否有可能从D 2.0编译为Javascript?

Pau*_*nty 7 javascript compiler-construction ajax d web-applications

长期的C++程序员(就是我)探索其他语言,并想知道是否值得学习D 2.0.(这是D的重新编写.)到目前为止,我喜欢我所看到的 - 许多务实,明智的选择.现在,我想了解更多,并想知道是否有可能做到以下几点:

  1. 在D 2.0中编写一些代码.(也许它是D 2.0明确定义的子集.)
  2. 编译1中的代码.
  3. 从编译器接收Javascript源代码.

总之,我想有一个D 2.0编译器,后端能够生成Javascript.

所以我的问题有两个部分:

  1. 这样的编译器是否已存在?
  2. 如果这样的编译器存在,如果我选择了实现一个,在那里将是最好的地方开始?

对于上下文,我想要上述的原因是我可以在D 2.0中实现一堆业务逻辑,然后在纯Javascript(即没有Flash/Silverlight/Java)Web应用程序中使用该业务逻辑.

更新

我有三个答案,其中两个是主题,一个不是,因此被忽略.

@FeepingCreature认为它永远不会发生,因为"它与D的目标环境太不协调".我很想知道这意味着什么,并且已经问过了.

相比之下,@ Nekuromento指出理论上已经可以使用LDC,其次是LLVM Javascript后端.我检查了两个链接.LDC对D 2.0的支持看起来像是正在进行的工作.但我猜它会在某个时刻到达那里.LLVM Javascript也没有经过优化或缩小,但它从演示中看出它们的工作原理.所以我认为这至少足够有用.

更新2

好的 - 这似乎是迄今为止最好的解决方案.

  1. 调用LDC.(@Nekuromento)LDC将Digital Mars前端与LLVM后端相结合.
  2. 通过LLVM Javscript后端管理1.的输出.(@Nekuromento)
  3. 管道输出2.虽然Closure(@BCS)

我会很快选择一个最好的答案,但我真的想要一些更明智的意见.

更新3

有关我为什么要这样做的更多信息.

以下是我希望实施的一个项目的具体示例.它将是一个几何建模库,可能只由我编写,花了几年时间编写,最终达到大约100,000行代码.我希望它包含尽可能接近零的错误,因此,我不希望在Javascript中实现它.我希望它能够在服务器,桌面和浏览器上运行.(在"浏览器中"我的意思是没有任何插件,如Flash,Silverlight或Java的帮助.)事实是,在Javascript上运行的浏览器中的代码将保留一段时间.项目将越来越需要一个战略来处理这个问题.

更新4

我希望得到更多的答案,但没有得到它们.好吧,没关系.感谢所有的反馈,包括@dsimicha的刺激性评论.(我希望有时可以在技术上不同意,同时保持文明.)我接受了@Nekuromento的回答.

更新5 2018-07-18

七年过去了,LDC v1.11支持编译和链接到WebAssembly.3

Nek*_*nto 4

目前还不存在这样的编译器,但在javascript LLVM-backend上有一些工作。

因为有LDC。它使用 DMD 前端和 LLVM,因此理论上可以向其添加 javascript 输出。

  • 您应该能够通过 Google 的 JS 编译器之类的工具运行该阶段的输出:http://code.google.com/closure/compiler/ (2认同)