Pergunta

Existem dois deles Phobos e Tango. Tanto quanto eu sei que eles são redundantes e incompatíveis. Existem planos para se juntar a eles? Se assim for, quando isso vai acontecer?

Foi útil?

Solução

Um núcleo comum, chamado druntime, foi construído para D2. O material de tempo de execução de baixo nível, como coleta de lixo e threading, era anteriormente a barreira para Phobos e Tango interoperar no mesmo projeto. funcionalidade nível mais elevado de Phobos dependia do tempo de execução Phobos e também para Tango.

A grande atualização para Phobos foi liberado (ontem (4/20/09) como uma questão de fato). Esta atualização tenta fazer uso de alguns dos novos recursos do D2 e ??introduz o conceito de faixas, que são como iteradores, mas mais fácil de trabalhar e mais poderoso. D2 Phobos é muito diferente de sua contraparte D1 fraca potência.

Tango é de longe a melhor biblioteca padrão para D1. Uma porta D2 está em andamento, e provavelmente progresso muito mais rapidamente quando D2 é estável. A grande questão é se os devs Tango irá atualizá-lo para tirar o máximo proveito do D2 apresenta, ou se eles vão simplesmente se concentrar em fazê-lo funcionar com D2 da mesma maneira que faz com D1.

Contrastando as duas bibliotecas, Phobos tende a se concentrar mais em fazer coisas simples simples, açúcar sintático, conveniência e empurrando o envelope do que pode ser feito em uma biblioteca padrão. É algo de um cruzamento entre STL e biblioteca padrão do Python, tão estranho quanto isso soa. Tango tende a ter mais de uma sensação Java-like a ele. É mais focado na amplitude de recursos e lidar com casos de uso incomuns graciosamente. Ele fica mais dentro do subconjunto sane de D (não tanto metaprogramming modelo, etc., embora, sem dúvida, uma das principais características D é promover template metaprogramming ao status subconjunto sane), e tem uma abordagem mais pragmática ao design API.

O meu palpite (especulação, mas faz muito sentido) é que Phobos se tornará análogo ao STL, ou seja, uma biblioteca verdadeiramente padrão de funcionalidade central, e Tango vai se tornar uma biblioteca de utilitários, tipo como Boost, como mais de seu núcleo funcionalidade é absorvido Phobos e / ou druntime.

Finalmente, como outros notaram, D1 é suposto ser estável, de modo que nada está mudando aqui.

Outras dicas

Looks como a partir de outubro eles estavam movendo em direção a compatibilidade , mas eu don 't sabe o que aconteceu desde então ...

Editar:

Eu também achei este , o que parece indicar que não há planos para realmente fusão:

Não haverá alterações no situação para D1. No entanto D2, a partir de versão 2.020, teve dividir Phobos em duas bibliotecas, e druntime.lib phobos.lib. Isto é para permitir um comum de tempo de execução para ser utilizado com ambas as Phobos e Tango. Enquanto não há nenhum plano para fundir ambas as bibliotecas ou mesmo incluir Tango com liberações de DMD, isso vai permitir que ambas as bibliotecas para ser utilizado no mesmo tempo sem uma compatibilidade camada.

Tangobos é um esforço para tornar os dois compatível.

Na versão 2.0, Tango será capaz de funcionar como uma biblioteca de utilitários em cima de um núcleo compartilhado. O núcleo compartilhado já está em vigor, no entanto, o projeto Tango não tem suporte 2.0 ainda.

Na 1.0, não haverá mudança. Isto é porque a especificação 1.0 é efectivamente congelada para permitir que um alvo estável para desenvolver contra.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top