FreeBSD가 Clang/LLVM을 선호하여 GCC를 더 이상 사용하지 않는 이유는 무엇입니까?

FreeBSD가 Clang/LLVM을 선호하여 GCC를 더 이상 사용하지 않는 이유는 무엇입니까?

그래서 웹서핑을 하다가 우연히 발견한이 기사. 기본적으로 보여주네요FreeBSD, 버전 10 이상부터 더 이상 사용되지 않습니다.걸프 협력 협의회유익하다클랭/llvm.

지금까지 온라인에서 본 내용에 따르면,클랭/llvm상당히 야심찬 프로젝트이지만 신뢰성 측면에서는 따라올 수 없습니다.걸프 협력 협의회.

당신은 가지고 있습니까?인위적인FreeBSD가 컴파일러 인프라로 LLVM을 선택한 이유는 무엇입니까? 아니면 전체 문제가 영원한 GNU/GPL 대 BSD 라이센스로 귀결됩니까?

이 문제(어떤 방식으로든) 사용에 관한 관련 정보를 가지고 있습니다.걸프 협력 협의회존재하다FreeBSD

답변1

요약: 전환하려는 주요 이유걸프 협력 협의회도착하다그 소리GCC와 호환되지 않습니다일반 공중 라이선스 v3라이센스 및FreeBSD 프로젝트의 목표. 기업 투자와 사용자 기반의 요구와 관련된 정치적인 문제도 있습니다. 마지막으로 표준 준수 및 디버깅 용이성 측면에서 기술적 이점이 예상됩니다. 컴파일 및 실행의 실제 성능 향상은 코드마다 다르며 두 컴파일러 모두에 대해 논란의 여지가 있습니다.

FreeBSD와 GPL: FreeBSDGPL과 좋은 관계가 아닙니다. BSD 라이센스 옹호자들은 진정한 자유 소프트웨어를 믿습니다.사용 제한 없음. GPL 지지자들은 믿는다제한이 필요하다소프트웨어의 자유를 보호하기 위해, 특히 자유 소프트웨어로부터 비자유 소프트웨어를 만드는 능력은부당한 권력 형태자유보다는. FreeBSD 프로젝트는 가능한 한 열심히 노력합니다.GPL 사용을 피하세요:

그러나 GPL 소프트웨어를 상업적으로 사용하면 추가적인 복잡성이 발생할 수 있으므로 가능하면 이러한 소프트웨어를 더 관대한 FreeBSD 라이센스에 따라 제출하는 소프트웨어로 대체할 것입니다.

FreeBSD 및 GPL v3:이것일반 공중 라이선스 v3소위 말하는 것을 명시적으로 금지합니다.티보이제이션코드의 취약점GPL 버전이로 인해 사용자가 합법적인 소프트웨어 수정을 허용하지 않는 하드웨어 제한이 발생합니다. 이 허점을 막는 것은받아들일 수 없는 단계FreeBSD 커뮤니티의 많은 분들에게:

특히 장치 공급업체는 현재 GPLv2에 따라 라이선스가 부여된 대량의 소프트웨어가 새 라이선스로 마이그레이션될 경우 가장 큰 손실을 입게 됩니다. 그들은 더 이상 GPLv3 소프트웨어를 자유롭게 사용할 수 없으며 하드웨어에 설치된 소프트웨어를 수정하는 것도 제한됩니다... 즉, 갑자기 GPL 라이센스 소프트웨어에 대한 대안을 배우는 데 관심을 갖는 오픈 소스 소비자가 많이 있습니다. .

GCC가 GPL v3으로 이동한 이후 FreeBSD는 계속해서 GCC 4.2.1(GPL v2)을 사용해야 했습니다.2007년에 다시 출시됨, 이제 분명히 구식입니다. FreeBSD가 이전 컴파일러를 실행하고 수정 사항을 백포트하는 데 따른 유지 관리 문제가 추가됨에도 불구하고 최신 버전의 GCC로 이동하지 않았다는 사실은 GPL v3을 피하기 위한 요구 사항의 강도에 대한 아이디어를 제공합니다. C 컴파일러는 FreeBSD 기반의 주요 구성 요소이며 "FreeBSD 10의 (잠정) 목표 중 하나는 GPL 없는 기본 시스템을 달성하는 것입니다.".

기업 투자:많은 주요 오픈 소스 프로젝트와 마찬가지로 FreeBSD는 다음의 영향을 받습니다.자금그리고개발작업기업에서. FreeBSD가 어느 정도까지 Apple에 의해 자금 지원을 받거나 개발되었는지는 쉽게 알 수 없지만 Apple이 상당히 중복되는 부분이 있습니다.다윈 운영체제다수의 BSD 파생을 사용합니다.커널 코드. 또한 Clang 자체는 Apple에서 내부 프로젝트로 시작하여2007년 오픈소스. 기업 자원은 FreeBSD 프로젝트의 주요 원동력이므로 후원자의 요구 사항을 충족하는 것이 가능할 수 있습니다.중요한 실제 드라이버.

사용자 그룹:FreeBSD는 라이선스가 간단하고 제한이 없으며 소송으로 이어질 가능성이 적기 때문에 많은 기업에게 매력적인 오픈 소스 옵션입니다. GPL v3의 등장과 새로운 계약반티보화 조항, 누군가가 다음을 제안했습니다.공급업체 중심의 추세는 더욱 허용적인 라이선스를 향해 가속화되고 있습니다.. 상업용 개체에 대한 FreeBSD의 이점은 허용 라이센스이므로 기업 사용자 기반에서는 일반적으로 GCC와 GPL을 포기하라는 압력이 커지고 있습니다.

GCC 질문:라이센스 외에도 GCC를 사용하면일부 인식된 문제. GCC는 표준을 완전히 준수하지 않으며ISO 표준 C에서 찾을 수 없는 많은 확장. 300만 줄이 넘는 코드가 포함된 이 제품은 "가장 복잡하고 무료/오픈 소스 소프트웨어 프로젝트 중 하나”. 이러한 복잡성으로 인해 릴리스 수준 코드 수정이 어려운 작업이 되었습니다.

기술적인 장점:Clang에는 일부가 있습니다.GCC에 비해 기술적 이점. 가장 주목할만한 것은추가 정보를 제공하는 오류 메시지그리고명시적으로 설계된 APIIDE용 리팩토링 및 소스 코드 분석 도구입니다. Clang 웹사이트에도 불구하고현재의 줄거리보다 효율적인 컴파일 및 메모리 사용을 나타내며 실제 결과는 다음과 같습니다.극적인 변화, 성능은 GCC와 거의 일치합니다. 일반적으로 Clang에서 생성된 바이너리는천천히 달리다동등한 GCC 바이너리보다:

LLVM으로 코드를 작성하는 것이 GCC보다 빠르지만... 대부분의 경우 GCC 4.5로 빌드된 바이너리는 LLVM-GCC 또는 Clang보다 성능이 더 좋습니다... 나머지 테스트에서 성능은 GCC에 가깝거나 매우 뒤떨어집니다. 일부 테스트에서는 Clang으로 생성된 바이너리의 성능이 매우 나빴습니다.

결론적으로:특히 바이너리 성능이 부족한 경우, 컴파일 효율성은 FreeBSD와 같은 대규모 프로젝트를 완전히 새로운 컴파일러 툴체인으로 옮기는 큰 위험을 감수하는 데 중요한 동기가 되지 않을 것입니다. 그러나 이러한 상황은 실제로 지속될 수 없습니다. 1) 오래된 GCC를 실행하거나, 2) 최신 GCC로 마이그레이션하고 프로젝트 목표와 호환되지 않는 라이센스를 사용해야 하거나, 3) 안정적인 BSD 라이센스 컴파일러로 마이그레이션하는 옵션을 고려할 때 이 결정은 아마도 불가피했을 것입니다. 이는 기본 시스템 및 배포판 지원에만 적용된다는 점을 명심하세요. 사용자가 FreeBSD 시스템에 최신 GCC를 설치하고 사용하는 데 방해가 되는 것은 없습니다.

답변2

고려해야 할 한 가지 점은 FreeBSD가 현재 GCC 4.2.1을 다음과 같이 사용하고 있다는 것입니다.ire_and_curses 답변에 언급됨따라서 성능 비교는 프로젝트와 실제로 관련이 없는 4.5 또는 4.6이 아닙니다. 따라서 당신이 물어봐야 할 질문은 다음과 같습니다

  1. 이전 GCC와 비교하여 프로젝트에서 사용하는 새로운 Clang의 성능 향상은 무엇입니까?

  2. GCC 4.2.1에서 컴파일된 동일한 바이너리는 새로운 Clang과 어떻게 비교됩니까?

GCC가 GPL v3으로 이동함에 따라 FreeBSD는 2007년에 릴리스되어 현재는 상당히 오래된 GCC 4.2.1(GPL v2)을 계속 사용해야 했습니다.

Clang이 현재 GCC보다 뒤처져 있지만 프로젝트에 구현된 GCC보다 여전히 광년 앞서 있다면 그들의 개발 결정은 근거가 충분하고 진정한 영감을 받은 것입니다.

답변3

GCC는 GPLv3이지만 GCC에서 생성된 바이너리에는 라이선스 제한이 없습니다. 분명히 GCC를 사용하여 원하는 라이센스에 따라 소프트웨어를 구축할 수 있습니다. GCC와 함께 제공되고 바이너리에 포함된 C 라이브러리도 라이센스가 없습니다.http://www.gnu.org/licenses/gcc-Exception-faq.html

GNU GPLv3 섹션 2:

귀하는 런타임 라이브러리를 독립 실행형 모듈과 결합하여 형성된 개체 코드 작업을 전파할 권리가 있습니다. 이러한 전파가 GPLv3의 조항을 위반하더라도 모든 개체 코드가 적격한 컴파일 프로세스에 의해 생성된 경우에만 가능합니다. 그러면 이런 조합을 전달할 수 있습니다.고객님께서 선택하신 조건에 따라, 독립 실행형 모듈에 대한 라이센스와 일치합니다.

"적격"이란 GCC 및 GPL 비호환성을 포함하지 않는 소프트웨어를 컴파일하는 것을 의미합니다. 이는 제한 사항이 아닙니다. BSD 라이센스 소프트웨어는 GNU GCC와 관련된 빌드 프로세스에 사용될 수 있습니다.

보시다시피 위에서 말한 것과는 달리진짜GCC를 FreeBSD와 함께 사용할 때 비호환성이 없기 때문에 GCC를 포기하는 라이센스 관련 이유입니다.

이러한 변화의 실제 이유는 정치적이고 기회주의적입니다.

  • BSD는 철학적으로 GNU Public License와 경쟁하는 자체 라이센스를 가지고 있습니다(위의 *ire_and_curses*에서 설명한 대로).
  • CLANG은 FreeBSD 후원자가 시작한 새로운 비GPL 컴파일러로, 기술적으로 GPL 라이센스 GCC(위의 *ire_and_curses*에 설명된 대로)와 동등한 것으로 보입니다.

이러한 사실은 FreeBSD가 GCC를 멀리하고 제거할 수 있는 기회를 제공합니다. GCC를 사용하여 무료 또는 BSD 라이센스 소프트웨어를 구축할 수 있기 때문에 실제로 법적으로 강제되지는 않지만 " 모든 BSD 라이센스 소프트웨어" 아이디어.

답변4

저는 전문가는 아니지만 Clang/LLVM은 GCC보다 더 적은 리소스를 사용하고 더 빠르다는 것을 알고 있습니다.

http://clang.llvm.org/features.html#performance

많은 것을 여러 번 구축해야 하는 환경을 운영하는 경우 이러한 성능을 통해 에너지 비용과 시간을 실질적으로 절약할 수 있습니다. 그것이 사실이라면.

관련 정보