Dlaczego FreeBSD korzysta z GCC na licencji GPL?


11

Dlaczego FreeBSD używa GCC jako domyślnego kompilatora?

Jestem pod wrażeniem, że filarem rdzeń filozofii FreeBSD jest nie używać żadnego oprogramowania GNU aw szczególności kodu GPL.

Jednak GCC, które jest zarówno GNU, jak i GPL, jest dostarczane w pakiecie z FreeBSD.

Dlaczego?

Odpowiedzi:


13

FreeBSD 10 użyje licencjonowanego przez BSD kompilatora Clang zamiast GCC dla 32- i 64-bitowych systemów Intel x86. Jedyną rzeczą, która uniemożliwia hurtową zmianę na wszystkich platformach CPU, na których wydawane jest FreeBSD, jest czas i zainteresowanie programistów.

Jeśli chodzi o FreeBSD 9 - który właśnie miał zostać wydany, kiedy to pytanie zostało zadane po raz pierwszy - mówiono o ustawieniu Clanga jako domyślnego kompilatora, ale było wystarczająco dużo problemów z tym, że zdecydowali się wysłać Clanga razem z GCC i pozostawić GCC domyślnym dla tego wydania.

Jeśli chodzi o to, dlaczego FreeBSD nie próbował przejść wiele lat wcześniej na kompilator inny niż GPL, a może nawet nie stworzyć własnego, powód jest prosty: jest trudny.

Każdy student studiów licencjackich z CS może napisać kompilator - może to być nawet wymóg kursu - ale napisanie dobrego kompilatora jest trudne. Pisanie dobrego kompilatora jest jeszcze trudniejsze, gdy musi być dla języka takiego jak C lub C ++. Zadanie staje się jeszcze trudniejsze, gdy podejmiesz rozsądną decyzję, że nowy kompilator musi przynajmniej zbliżyć się do wydajności i możliwości GCC, który ma kilka dziesięcioleci rozwoju.

Z tego powodu GCC 4.2 jest nadal domyślnym kompilatorem FreeBSD 9.

Nawiasem mówiąc, GCC 3.4, 4.4, 4.6, 4.7 i 4.8 są w drzewie portów FreeBSD 9, a niektóre wersje GCC prawdopodobnie pozostaną w Portach przez wiele lat. Istnieje wiele pakietów oprogramowania - z których wiele znajduje się w portach FreeBSD - które są budowane tylko z GCC.


1
Kompilator musi być nie tylko zbliżony do wydajności, ale także muszą być obsługiwane rozszerzenia językowe. Programiści często używają ich z jakiegoś powodu (lub żadnego ;-))
John

8

Prawdopodobnie z konieczności. Do niedawna kompilatory C licencjonowane przez BSD były prawdopodobnie nieliczne lub nie zbliżały się do parytetu cech gcc.

Z celów projektu FreeBSD :

Ten kod w naszym drzewie źródłowym, który objęty jest GNU General Public License (GPL) lub Library General Public License (LGPL), zawiera nieco więcej ciągów znaków, choć przynajmniej po stronie wymuszonego dostępu, a nie po prostu odwrotnie. Ze względu na dodatkowe złożoności, które mogą ewoluować w komercyjnym użyciu oprogramowania GPL, wolimy jednak oprogramowanie przesłane na podstawie bardziej swobodnego prawa autorskiego BSD, gdy jest to rozsądna opcja.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.