Каков текущий статус стандартных библиотек D? - PullRequest
9 голосов
/ 21 апреля 2009

Их двое - Фобос и Танго. Насколько я знаю, они избыточны и несовместимы. Есть ли планы присоединиться к ним? Если да, то когда это произойдет?

Ответы [ 4 ]

13 голосов
/ 21 апреля 2009

Общее ядро, называемое druntime, было создано для D2. Низкоуровневая среда выполнения, такая как сборка мусора и многопоточность, ранее была препятствием для взаимодействия Фобоса и Танго в одном проекте. Функциональность более высокого уровня Phobos зависит от времени выполнения Phobos, а также от Tango.

Вышло крупное обновление для Фобоса (фактически вчера (20.04.09)). Это обновление пытается использовать некоторые из новых функций D2 и представляет концепцию диапазонов, которые похожи на итераторы, но с которыми проще работать и которые более мощные. D2 Фобос очень отличается от своего слабого аналога D1.

Tango - лучшая стандартная библиотека для D1. Порт D2 находится в работе и, вероятно, будет развиваться намного быстрее, когда D2 стабилен. Большой вопрос заключается в том, будут ли разработчики Tango обновлять его, чтобы в полной мере использовать возможности D2, или они просто сосредоточатся на том, чтобы заставить его работать с D2 так же, как с D1.

В отличие от двух библиотек, Фобос имеет тенденцию уделять больше внимания созданию простых вещей, синтаксическому сахару, удобству и расширению возможностей того, что можно сделать в стандартной библиотеке. Это нечто среднее между STL и стандартной библиотекой Python, как бы странно это ни звучало. Танго имеет тенденцию быть более похожим на Java. Он больше ориентирован на широкий спектр функций и изящную обработку необычных вариантов использования. Он больше остается в пределах разумного подмножества D (не так много метапрограммирования шаблонов и т. Д., Хотя, возможно, главная особенность D - продвижение метапрограммирования шаблонов в состояние нормального подмножества) и использует более прагматичный подход к разработке API.

Мое собственное предположение (предположение, но оно имеет большой смысл) состоит в том, что Phobos станет аналогом STL, то есть действительно стандартной библиотекой основных функций, а Tango станет утилитарной библиотекой, вроде Boost, поскольку его основные функциональные возможности поглощены в Фобос и / или Druntime.

Наконец, как уже отмечалось, D1 должен быть стабильным, поэтому здесь ничего не меняется.

6 голосов
/ 21 апреля 2009

Похоже, по состоянию на октябрь они двигались в направлении совместимости , но я не знаю, что произошло с тех пор ...

Edit:

Я также нашел это , что, похоже, указывает на то, что планов по слиянию на самом деле нет:

Не будет никаких изменений в ситуация для D1. Однако D2, по состоянию на версия 2.020, была расщеплена Фобос в 2 библиотеки, druntime.lib и phobos.lib. Это должно позволить общий время выполнения для использования с обоими Фобос и танго. Пока нет планов объединить обе библиотеки или даже включить Танго с релизами DMD, это будет позволяют обе библиотеки использовать на в то же время без совместимости слой.

4 голосов
/ 21 апреля 2009

В версии 2.0 Tango сможет функционировать как служебная библиотека поверх общего ядра. Общее ядро ​​уже установлено, однако проект Tango пока не поддерживает 2.0.

В версии 1.0 изменений не будет. Это потому, что спецификация 1.0 эффективно заморожена, чтобы позволить стабильной цели развиваться против.

4 голосов
/ 21 апреля 2009

Tangobos - попытка сделать их совместимыми.

...