其中有两个是Phobos和Tango。 据我所知,它们是多余的,不相容的。 有没有计划加入他们? 如果是的话,什么时候会发生?
答案 0 :(得分:13)
为D2构建了一个名为druntime的通用核心。低级运行时的东西,比如垃圾收集和线程,以前是同一项目中Phobos和Tango互操作的障碍。 Phobos的更高级功能取决于Phobos运行时,同样也取决于Tango。
Phobos的重大更新已经发布(就在昨天(2009年4月8日))。此更新尝试使用D2的一些新功能,并引入了范围的概念,它类似于迭代器,但更易于使用且功能更强大。 D2 Phobos与动力不足的D1对手非常不同。
Tango是迄今为止D1更好的标准库。 D2端口正在进行中,当D2稳定时,可能会更快地进展。一个很大的问题是,Tango开发者是否会对其进行更新以充分利用D2功能,或者他们是否只会像使用D1一样专注于使用D2。
对比这两个库,Phobos倾向于更多地关注简单的事情,语法糖,方便性以及推动标准库中可以完成的工作。这是STL和Python标准库之间的交叉,听起来很奇怪。 Tango倾向于拥有更多类似Java的感觉。它更专注于广泛的功能和优雅地处理不寻常的用例。它更多地保留在D的理智子集中(没有那么多的模板元编程等,尽管可以说D的一个主要特征是将模板元编程提升到合理的子集状态),并采用更实用的API设计方法。
我自己的猜测(猜测,但它很有意义)是Phobos将变得类似于STL,即真正标准的核心功能库,而Tango将成为一个实用程序库,有点像Boost,更多其核心功能被吸收到Phobos和/或druntime。
最后,正如其他人所说,D1应该是稳定的,因此这里没有任何变化。
答案 1 :(得分:6)
截至10月份看起来他们是moving toward compatibility,但我不知道从那时起发生了什么......
编辑:
我还发现this,这似乎表明没有实际合并的计划:
将不会有任何变化 D1的情况。但D2,截至 版本2.020,已经有Phobos拆分 进入2个库,druntime.lib和 phobos.lib。这是为了让一个共同点 运行时与两个Phobos一起使用 和探戈。虽然没有计划 合并两个库甚至包括 探戈与DMD的发布,这将 允许两个库用于 同时没有兼容性 层
答案 2 :(得分:4)
Tangobos努力使两者兼容。
答案 3 :(得分:4)
在2.0中,Tango将能够在共享核心之上充当实用程序库。共享核心已经到位,但Tango项目还没有2.0支持。
在1.0中,没有变化。这是因为1.0规范被有效冻结,以允许稳定的目标发展。