Все вышеперечисленное плюс.
Если у вас есть изменение, где:
Точный синтаксис неразрушающей команды изменится на разрушительную команду
Я не вижу другого выбора, кроме как сделать изменение вместо этого more , чтобы сделать старую команду совершенно недействительной, чтобы, если пользователь обновляет и пытается (или, возможно, пытается скрипт), команду старого стиля, он завершается описательное сообщение об ошибке на stderr.
Использование stderr для предупреждающих сообщений о командах с тонкими (или не очень тонкими) изменениями, которые не являются деструктивными, также является хорошей идеей.
Определение деструктивного является несколько более сложным в исходном хранилище
Использование предупреждений stderr для простых методов устаревания часто хорошо, но некоторые люди будут жаловаться, что это нарушает их (плохо написанные) сценарии. В этих случаях тихая версия об устаревании (все неинвазивные формы устаревания), за которой следует устная версия (предупреждения stderr), за которой, возможно (см. Ниже), с не функциональным, но текущим выпуском, за которым следует полное удаление. Этот последний нефункциональный выпуск будет сильно зависеть от рассматриваемого проекта, поскольку он может доставить больше хлопот, чем стоит, особенно тем пользователям, которые хорошо себя ведут и постоянно следят за устаревшей функциональностью.
Поскольку конкретное изменение, на которое вы ссылаетесь, это удаление встроенных модулей, это должно быть хорошо, я, вероятно, не сделал бы один выпуск со встроенными модулями в нефункциональном режиме, но я не знаю проект достаточно хорошо, чтобы скажи точно.
Примечание для кода , а не изменений на уровне сценария, во многих современных языках можно оставить в заглушках методов с атрибутами / аннотациями, которые будут полностью скрывать их от intellisense, а также отказываться от компиляции против них. Это делает их присутствие (с простым исключением, если используется) гораздо более приятным способом выяснить, что вы не можете их использовать, чем исключение MissingMethodException во время выполнения или что-то еще.