Ответ 1
Я бы не подумал, что D2 уже готов к производству, но он приближается. Определение языка довольно стабильно. На данный момент должно произойти очень небольшое изменение (хотя некоторые аддитивные изменения, предназначенные для устранения ключевых проблем на языке, могут возникать). Разработка на компиляторе движется вперед очень быстро, и многие ошибки исправляются. Но на данный момент, если вы сильно используете D2, вы столкнетесь с ошибками компилятора, особенно если используете более новые языковые функции. И не все эти функции были полностью реализованы (например, alias this
и inout
), поэтому, когда TDPL в основном верен, dmd еще немного позади.
Кроме того, хотя стандартная библиотека, Phobos, очень хороша в целом, и большая ее часть стабильна, она все еще очень продвигается. Мы стараемся избегать немедленного изменения изменений, помещая вещи, которые мы удаляем с помощью надлежащего пути устаревания (обычно 6 месяцев, как запланировано, для отсрочки и 6 месяцев как устаревшие до полного удаления), но иногда происходят немедленные нарушения (и иногда компилятор вызывает нарушения во время работы). В некоторых случаях все модули будут переработаны (например, std.xml и std.stream). Возможно, самым большим раздражением в этом отношении является std.container, который является довольно новым, в нем еще не так много, и он может иметь значительную редизайн, так как Андрей Александреску разбирает, как мы будем заниматься управлением памятью в Это. Таким образом, поддержка контейнеров улучшается, но в целом отсутствует. В целом, многие Phobos довольно стабильны, но определенно не установлены в камне.
Определенная поддержка как dmd, так и phobos в том, что если вы отправляете вещи в bugzilla или обсуждаете их на в группе новостей, люди обычно будут очень полезны, и разработчики будут своевременно исправлять ошибки, но большинство людей, работающих над этим, делают это в свободное время, поэтому иногда это может занять некоторое время. Однако переход на github определенно улучшил ситуацию. Я знаю, что Digital Mars предоставляет дополнительную поддержку для dmc, если вы платите за нее, но я не знаю, будут ли они делать то же самое для dmd, Я ожидаю, что у них будет хороший шанс, хотя они (хотя, если они и не сейчас, я ожидаю, что они сделают это в будущем).
Что касается качества компилятора, dmd использует dmc Digital Mars в качестве своего backend, а dmc - это новейшее воплощение первого компилятора С++ для компиляции кода изначально (в отличие от перевода его на C сначала), а Walter Bright, создатель D, работал над этим с тех пор, как создал его. Он один из лучших компиляторов и создал ряд оптимизаций, которые стали стандартными в компиляторах на С++ (например, Оптимизация возвращаемого значения) но на dmc не так много людей, которые работают над ним, и есть некоторые области, в которых он отстает (например, оптимизация с плавающей запятой), а D является достаточно новым, что предстоит много работы по его оптимизации, Поскольку ошибки исправлены, я уверен, что больше внимания в конечном итоге сдвинется в сторону оптимизации языка, и в большинстве случаев он будет наравне с С++ в большинстве случаев (и лучше в некоторых), но сейчас это действительно зависит от вашего кода. Иногда D находится на одном уровне; иногда это не так.
Некоторые люди используют D2 в производственном коде (в частности, я знаю, что Адам Д. Руппе использует его для веб-разработки с компаниями, с которыми он работает - он часто выступает в группе новостей D), но я не думаю, что их очень много, и они обычно избегают новых, более привлекательных особенностей языка (обычно это худшие ошибки). Как стабильно это будет, действительно будет зависеть от того, что вы делаете с языком.
В вики есть хорошая информация о работе, которую предстоит выполнить, и этот недавний поток в новостной группе также имеет хорошую информацию.
D определенно подходит к тому моменту, когда я буду считать его готовым к производству, но на данный момент определенно существует определенный риск. Это здорово для вещей для хобби, но если ваш жизненный уровень зависит от него, я не знаю, стоит ли еще этого риска. Тем не менее, он приближается. Вероятно, стоит потратить ваше время, чтобы изучить его, попробовать, поэкспериментировать с ним и т.д. Но я бы не просто погрузился в ваш производственный код и преобразовал все это в D. Это может сработать отлично, но это может не сработать. Я ожидаю, что через год я смогу сказать, что D2 является готовым к производству, но я не знаю, насколько скоро я буду чувствовать себя комфортно в этом.