Почему FreeBSD использует GCC с лицензией GPL?

11

Почему FreeBSD использует GCC в качестве компилятора по умолчанию?

У меня сложилось впечатление, что основным принципом философии FreeBSD является не использование какого-либо программного обеспечения GNU и, в частности, кода GPL.

Тем не менее, GCC, который является одновременно GNU и GPL, поставляется вместе с FreeBSD.

Почему?

JasonH
источник

Ответы:

13

FreeBSD 10 будет использовать лицензированный BSD компилятор Clang вместо GCC для 32- и 64-битных систем Intel x86. Единственное, что препятствует оптовому переходу на всех процессорных платформах, на которых выпускаются FreeBSD, - это время разработчиков и интерес.

Что касается FreeBSD 9 - который должен был быть выпущен, когда этот вопрос был впервые задан, - речь шла о том, чтобы сделать Clang компилятором по умолчанию, но с ним было достаточно проблем, поэтому они решили отправить Clang вместе с GCC и оставить GCC по умолчанию. для этого выпуска.

Что касается того, почему FreeBSD не пыталась перейти на компилятор не-GPL много лет назад или, возможно, даже не создавала их самостоятельно, причина проста: это сложно.

Любой студент CS старшекурсников может написать компилятор - это может быть даже обязательным требованием курса - но написать хороший компилятор сложно. Написание хорошего компилятора еще сложнее, когда это необходимо для такого языка, как C или C ++. Задача становится еще сложнее, когда вы принимаете разумное решение о том, что новый компилятор должен по крайней мере приблизиться к производительности и возможностям GCC, за которым стоит разработка в течение нескольких десятилетий.

Из-за этого GCC 4.2 по-прежнему является компилятором по умолчанию во FreeBSD 9.

Кстати, GCC 3.4, 4.4, 4.6, 4.7 и 4.8 находятся в дереве портов FreeBSD 9, и некоторая версия GCC, вероятно, останется в портах еще много лет. Существует множество программных пакетов, многие из которых находятся в портах FreeBSD, которые собираются только с GCC.

Уоррен Янг
источник
1
Компилятор должен быть не только по крайней мере близок к производительности, но также должны поддерживаться языковые расширения. Разработчики часто используют их по какой-то причине (или нет ;-))
johannes
8

Скорее всего, по необходимости. До недавнего времени лицензированных BSD компиляторов C, вероятно, было немного или они даже близко не подходили к паритету функций gcc.

Из целей проекта FreeBSD :

Этот код в нашем дереве исходных текстов, подпадающий под Стандартную публичную лицензию GNU (GPL) или Общедоступную лицензию библиотеки (LGPL), содержит несколько больше строк, хотя, по крайней мере, на стороне принудительного доступа, а не на обычной противоположности. Однако в связи с дополнительными сложностями, которые могут возникнуть при коммерческом использовании программного обеспечения GPL, мы предпочитаем программное обеспечение, представленное в соответствии с более свободным авторским правом BSD, когда это разумный вариант.

Брайан Каин
источник