[疑难] tango experimental/D2.0分支怎么了
lifc
2009-07-21
自05年就几次想拿D来做项目,但都因为语言本身成熟度问题而最终搁浅了。近来有个用erlang的失败项目,打算用c++或c#重写,就又想再拿D来尝试一下。
因为要和c++模块通讯(d1的extern(C++)能编译通过但有问题),加上另外一些原因,所以希望直接从D2入手,用tango代替phobos做标准库。08年时曾经成功编译过tango2的分支,但现在(rev.4796)却不行了。 开始报告对象布局和object.d不匹配,给tango2的object.di加上新增的factory等方法后这一步总算通过了,但后面又出现大量Cutf8相关的错误。所以想请教一下大家tango2的这一svn分支是否已经废弃了?有没有编译好的d2 tango库可以直接下载,如果有需要配合什么版本的D2? |
|
dogstar
2009-07-21
erlang都能让你用废材了,何况D呼.
|
|
lifc
2009-07-21
dogstar 写道 erlang都能让你用废材了,何况D呼.
所谓失败并不是因为语言或项目存在严重自身缺陷,虽然用erlang开发过程中也发现一些不便之处。此项目当初作为验证模型而开发,对开发语言和用户定位并没有什么要求或假设。后被迫仓促转型成正式产品,但下游厂商对erlang抱强烈抵制态度,要求用c++或c#重新开发。鉴于我们产品以二进制库+接口文档形式输出,所以只要提供符合c++调用规范的接口代码内部用d实现也没有问题。 |
|
smallping79
2009-07-22
erlang 哪里让他不舒服了?为什么要强烈抵制?
|
|
smallping79
2009-07-22
D1 没有extern(c++) 吧? 只有d2才有的功能
|
|
oldrev
2009-07-22
Tango 的 D2 分支是实验性的,用来做产品是很不负责任的行为。
既然要对外,就不要用 C++ 了,因为 C++ 与 C++ 之间都没有个明确的 ABI。实在是想用 C++ 可以选择提供 C 接口。 |
|
lifc
2009-07-22
smallping79 写道 erlang 哪里让他不舒服了?为什么要强烈抵制?
主要用户的技术负责人对erlang稍微有点了解,非说它是“半解释型”语言,而且需要运行环境(我们自己裁减了一个5M的R13B版本),就算加上hipe效率还是很差,特别是在windows下hipe和多核支持不完善。还为此专门收集了一些性能评测表格作为论据,断言erlang不适合嵌入到他们现有的应用程序中。 其实我们的接口模块是用c node来实现的,提供给用户嵌入的只是一个非常简单的erlang到c++的proxy,主要逻辑在erlang进程中实现,这样反而有助于提高整体稳定性和可扩展性。不过无奈主要用户不买账,我们就只能按照上帝的旨意去改变自己。 |
|
lifc
2009-07-22
smallping79 写道 D1 没有extern(c++) 吧? 只有d2才有的功能
本来应该是这样子的,但偏偏D1(1.046)又能正常编译过extern(C++)的例程,只是最终生成的asm代码调用virtual方法vtbl偏移计算不正确。现在W.B.开放了dmd的源码,想找机会看看能否把这部分功能“借用”到D1里面来... |
|
lifc
2009-07-22
oldrev 写道 Tango 的 D2 分支是实验性的,用来做产品是很不负责任的行为。
既然要对外,就不要用 C++ 了,因为 C++ 与 C++ 之间都没有个明确的 ABI。实在是想用 C++ 可以选择提供 C 接口。 提供c++接口也是情非得以,就我本人来说更倾向于用c做接口(甚至整个项目)。因为我们这个项目是用来替换之前一家公司所提供的底层模块,接口人家几年前早已确定了,而且上层应用早就开发好,没办法按照自己的思路重新修改。 偏爱D2的理由有很多,撇开D1的语法上的一些限制主要看中了D2能提供可用的C++接口,以及将来更容易过渡至D2稳定版本,但稳定性确实是个需要慎重考虑的因素。 06年以来曾利用业余时间把手头几个中等规模的项目用尚未稳定的D1+Tango重新实现,也是经常遇到D的一些小bug,通过换一下代码书写方式或者做一些针对性调整往往就能回避(tango/d2的源码里就有不少这样的注释)。一旦找到一个比较稳定的dmd+tango搭配就一直用下去,不去轻易尝试新版本也就差不多了。 当时的主要项目是个嵌入式系统,用交叉编译的arm版gdc生成arm9小字节序的代码,印象中除了垃圾收集部分做过一些手工修改外其余工作的还算正常。如果今日的D2能达到当年D1的成熟度,个人认为寻找一个D2+Tango稳定搭档的方案应该算是基本可行的。 因为最近重拾D语言这个往日旧梦所以头脑比较热,不排除三个月之后改变主意的可能,欢迎各位拍砖泼水:) |
|
hqs7636
2009-07-22
tango 在 d2 分离runtime之前好像有一个版本,下一个可能得等到这次phobos变更完之后才会有了,
d2 的tango可能要依赖phobos吧 |