Je ne considère pas que D2 soit encore prêt pour la production, mais il s'en rapproche. La définition du langage est assez stable. Très peu de changements de rupture devraient avoir lieu à ce stade (bien que certains changements additifs destinés à aplanir les problèmes clés du langage puissent avoir lieu). Le développement du compilateur progresse très rapidement et de nombreux bogues sont corrigés. Mais à ce stade, si vous utilisez D2 de manière intensive, vous sera rencontrer des bogues de compilateur, en particulier si vous utilisez des fonctionnalités de langage plus récentes. De plus, toutes ces fonctionnalités n'ont pas encore été entièrement implémentées (par ex. alias this
y inout
), alors que TDPL est en grande partie correct, mais Dmd est encore un peu en retard.
De plus, bien que la bibliothèque standard, Phobos, soit très bonne dans l'ensemble et qu'une grande partie soit stable, il s'agit toujours d'un travail en cours. Nous essayons d'éviter de provoquer des changements immédiats en soumettant les éléments que nous supprimons à la procédure de dépréciation appropriée (généralement 6 mois pour la dépréciation programmée et 6 mois pour la dépréciation avant la suppression complète), mais il arrive que des changements immédiats soient provoqués. faire se produisent (et parfois le compilateur provoque des changements de rupture pendant qu'il est travaillé). Dans certains cas, des modules entiers vont être révisés (par exemple std.xml et std.stream). Le plus gros ennui à cet égard est probablement std.container, qui est assez nouveau, ne contient pas encore grand-chose et pourrait faire l'objet d'une refonte importante lorsque Andrei Alexandrescu déterminera comment gérer la mémoire dans ce module. Ainsi, la prise en charge des conteneurs s'améliore mais est généralement insuffisante. Dans l'ensemble, une grande partie de Phobos est assez stable, mais ce n'est certainement pas gravé dans la pierre.
Il y a définitivement un support pour dmd et Phobos dans la mesure où si vous postez des choses sur le site de bugzilla ou les discuter sur le newsgroup Les gens sont généralement très serviables et les développeurs s'efforcent de corriger les bogues en temps utile, mais la plupart des personnes qui travaillent sur le projet le font pendant leur temps libre, ce qui peut parfois prendre un certain temps. Le passage à github a définitivement amélioré les choses. Je sais que Digital Mars fournit un support supplémentaire pour dmc si vous payez pour cela, mais je ne sais pas s'ils feront la même chose pour dmd. Je pense qu'il y a de fortes chances qu'ils le fassent (en tout cas, s'ils ne le font pas maintenant, je m'attends à ce qu'ils le fassent à l'avenir).
En ce qui concerne la qualité du compilateur, dmd utilise dmc de Digital Mars comme backend, et dmc est la plus récente incarnation du premier compilateur C++ à compiler du code nativement (par opposition à la traduction en C d'abord), et Walter Bright, le créateur de D, a travaillé dessus depuis qu'il l'a créé. Il est l'un des meilleurs auteurs de compilateurs et a créé un certain nombre d'optimisations qui sont devenues standard dans les compilateurs C++ (telles que Optimisation de la valeur de retour ), mais le dmc n'a pas beaucoup de personnes qui travaillent dessus, et il y a certains domaines dans lesquels il a pris du retard (comme les optimisations de la virgule flottante), et D est suffisamment nouveau pour qu'il y ait beaucoup de travail à faire pour l'optimiser. Au fur et à mesure que les bogues sont corrigés, je suis sûr que l'accent sera mis sur l'optimisation du langage et qu'il sera finalement au même niveau que le C++ dans la plupart des cas (et meilleur dans certains cas), mais pour l'instant, cela dépend vraiment de votre code. Parfois, D est à égalité, parfois non.
Certaines personnes faire utilisent D2 dans du code de production (en particulier, je sais qu'Adam D. Ruppe l'utilise pour le développement web avec les entreprises avec lesquelles il travaille - il est un posteur fréquent sur le newsgroup D), mais je ne pense pas qu'ils soient très nombreux, et ils évitent généralement les nouvelles fonctionnalités plus sophistiquées du langage (qui est généralement là où se trouvent les pires bogues). La stabilité du langage dépendra vraiment de ce que vous en ferez.
Le wiki a de bonnes informations sur le travail qui reste à faire, et ce récent fil de discussion sur le groupe de discussion a également de bonnes informations.
D est définitivement proche du point où je le considérerais comme prêt pour la production, mais il y a définitivement un certain risque à ce stade. C'est grand pour les loisirs, mais si votre gagne-pain en dépend, je ne sais pas si le risque en vaut la peine pour le moment. Mais ça se rapproche. Cela vaut probablement la peine de s'y intéresser, de l'essayer, de l'expérimenter, etc. Mais je ne me contenterais pas de plonger dans votre code de production et de tout convertir en D. Cela pourrait fonctionner parfaitement, mais peut-être pas. Je pense que dans un an, je serai en mesure de dire que D2 est prêt pour la production, mais je ne sais pas combien de temps avant cela je me sentirai à l'aise pour le dire.