9

其中有两个,Phobos 和 Tango。据我所知,它们是多余且不兼容的。有加入他们的计划吗?如果是这样,什么时候会发生?

4

4 回答 4

13

已为 D2 构建了一个称为 druntime 的通用核心。低级运行时的东西,比如垃圾收集和线程,以前是 Phobos 和 Tango 在同一个项目中互操作的障碍。Phobos 的高级功能依赖于 Phobos 运行时,同样适用于 Tango。

Phobos 的重大更新已经发布(事实上就在昨天(4/20/09)。本次更新尝试利用 D2 的一些新功能并引入范围的概念,这些概念类似于迭代器,但更易于使用且功能更强大。D2 Phobos 与其动力不足的 D1 对应物非常不同。

Tango 是迄今为止更好的 D1 标准库。D2 端口正在进行中,并且当 D2 稳定时可能会进展得更快。一个大问题是 Tango 开发人员是否会对其进行更新以充分利用 D2 的功能,或者他们是否会仅仅专注于使其与 D2 一起工作,就像与 D1 一样。

对比这两个库,Phobos 倾向于更多地关注使简单的事情变得简单、语法糖、便利性和推动标准库中可以完成的事情的信封。它是 STL 和 Python 标准库之间的交叉点,听起来很奇怪。Tango 倾向于有更多类似 Java 的感觉。它更专注于功能的广度和优雅地处理不寻常的用例。它更多地停留在 D 的健全子集中(没有那么多模板元编程等,尽管可以说 D 的一个主要特征是将模板元编程提升到健全的子集状态),并采用更实用的 API 设计方法。

我自己的猜测(推测,但很有意义)是 Phobos 将变得类似于 STL,即一个真正的核心功能标准库,而 Tango 将成为一个实用程序库,有点像 Boost,作为其核心功能被吸收到 Phobos 和/或运行时。

最后,正如其他人所指出的,D1 应该是稳定的,所以这里没有任何变化。

于 2009-04-21T16:11:40.077 回答
6

看起来截至 10 月他们正在向兼容性迈进,但我不知道从那以后发生了什么......

编辑:

我还发现了这个,这似乎表明没有实际合并的计划:

D1 的情况不会有任何变化。然而,从 2.020 版开始,D2 已将 Phobos 拆分为 2 个库,druntime.lib 和 phobos.lib。这是为了允许在 Phobos 和 Tango 中使用一个通用的运行时。虽然没有计划合并这两个库,甚至没有将 Tango 包含在 DMD 版本中,但这将允许在没有兼容层的情况下同时使用这两个库。

于 2009-04-21T15:29:10.490 回答
4

Tangobos是一种使两者兼容的努力。

于 2009-04-21T15:30:57.740 回答
4

在 2.0 中,Tango 将能够作为共享核心之上的实用程序库。共享核心已经到位,但是 Tango 项目还没有 2.0 支持。

在 1.0 中,不会有任何变化。这是因为 1.0 规范被有效地冻结以允许开发一个稳定的目标。

于 2009-04-21T15:51:46.223 回答