Я работаю над проектом, который распространяется бесплатно как в исходном коде, так и в бинарном виде, поскольку многим нашим пользователям необходимо скомпилировать его специально для своей системы. Это требует определенной степени поддержки обратной совместимости со старыми хост-системами и, в первую очередь, с их компиляторами.
В некоторых из них, таких как GCC 3.2 (2003!), ICC 9, MSVC (почти заброшенное ПО, а не C++!) сделать разработку намного проще. Определенно также есть случаи, когда предоставление пользователям возможности придерживаться этих компиляторов стоит им большой производительности, что противоречит целям того, что мы предоставляем.
Итак, в какой момент мы говорим, что достаточно? Я вижу несколько аргументов в пользу прекращения поддержки того или иного компилятора:
- Низкая производительность сгенерированного кода (по сравнению с более новыми версиями, вопрос о здесь а>)
- Отсутствие поддержки языковых функций
- Плохая доступность в системах разработки (больше для проприетарных, чем для GCC, но также есть проблемы системного администратора со старым GCC)
- Возможность неисправленных ошибок (мы изолировали ICE в ICC и xlC, что еще может скрываться?)
Я уверен, что пропустил некоторые другие, и я не уверен, как их взвесить. Итак, какие аргументы я пропустил? Какие еще технические соображения вступают в игру?
Примечание. Раньше этот вопрос формулировался более широко, что побудило многих респондентов указать, что принятие решений — это, по сути, бизнес-процесс, а не инженерный процесс. Я знаю о «деловых» соображениях, но это не то, что я ищу здесь больше. Я хочу услышать об опыте людей, которым приходилось поддерживать старые компиляторы или которые решили отказаться от них, и о том, как это повлияло на их разработку.