Я бы сказал, что они готовы к производству - я использую их в производстве - но есть несколько вещей, которые следует учитывать:
Performance
MooseX::Declare
и зависимости делают почти всю свою магию во время компиляции. В зависимости от размера вашей программы, вы можете найти от полсекунды до нескольких секунд дополнительных издержек инициализации. Если это проблема, не используйте MooseX :: Declare .
Во время выполнения основная нагрузка - проверка типов и аргументов, которую вы должны (в идеале) делать в любом случае. Тем не менее, ограничения типа Moose имеют некоторые накладные расходы, а именно принуждение и более сложные ограничения (MooseX :: Types :: Structured-style). Не используйте их, если производительность является проблемой.
Стабильность
MooseX :: Declare и MooseX :: Method :: Signature внешний синтаксис теперь стабилен. Но важно знать, что внутренние органы подвержены крайним изменениям. (к счастью, меняется в лучшую сторону)
Чтобы дать вам представление, сама подпись захватывается с помощью большого блока кода C, украденного из токенайзера Perl (toke.c). Это может сломаться в некоторых ситуациях, так как на самом деле ничего не анализируется. Бит внутри скобок анализируется с использованием PPI , который предназначен для чистого Perl, но получающееся дерево PPI затем взламывается, чтобы получить что-то полезное. Devel :: Declare сам по себе является хаком - после того, как он видит конкретные ключевые слова (например, 'role', 'class', 'method'), модуль, использующий Devel :: Declare, должен переписать исходный код вручную, без взаимодействия с настоящим парсером Perl.
Угловые случаи могут стать причиной ошибки Perl. Или плохо переписать исходный код, чтобы вы получили синтаксические ошибки, но понятия не имеете, что их вызывает без -MO::Deparse
. Если вы случайно испортили синтаксис MooseX :: Declare , то нет гарантии, что модуль обнаружит это и выдаст вам ощутимую ошибку. Сообщение ALPHA, возможно, ушло, но это все еще делает темных и страшных вещей внутри, и вы должны быть готовы к этому.
UPDATE
MooseX :: Declare сильно не обновлялся, и вы можете рассмотреть альтернативы, такие как Moops . Лично я решил придерживаться чистого Moose, пока сам Perl не начнет поддерживать класс / метод / имеет собственный синтаксис, который возможно на картах .