Исключение для библиотек времени исполнения GCC или почему в Clang до сих пор отсутствует поддержка OpenMP

в 5:50, , рубрики: clang, Dura Lex, gcc, GNU, intel, LLVM, openmp, Компиляторы, метки: , , , , ,

Используете GCC в проекте с закрытым исходным кодом? Применяете OpenMP? Вы же в курсе, что библиотека libgomp, с которой компонуются все OpenMP программы, распространяется на условиях GPLv3? Будьте так добры, откройте ваши исходники…

К счастью, ничего не нужно открывать, разве что банку с пивом. Действительно, «обвес» времени исполнения GCC, например libstdc++ или libgomp имеет GPL лицензию, однако существует специальное исключение для библиотек времени исполнения GCC. Оно разрешает использование перечисленных в FAQ библиотек в коммерческих приложениях с небольшой оговоркой: они должны собираться только с помощью GCC. Другими словами, компоновка с libgomp при сборке любым другим компилятором является нарушением GPL.

Именно из-за этой оговорки в Clang до сих пор отсутствует OpenMP, т.к. добавление такой поддержки означало бы создание runtime с нуля. Впрочем, в этой ситуации подсуетился Intel, вовремя открыв исходники своей реализации OpenMP под лицензией BSD, совместимой с лицензией Clang, и почти добавил поддержку OpenMP в LLVM. К сожалению, всё равно остаются вопросы, к примеру, Intel OpenMP всю жизнь работал под x86(-64), и не ясно как у него обстоят дела с ARM.

Также из-за исключения на библиотеки GCC в Clang/LLVM пришлось писать с нуля свой libstdc++ (aka libc++) и libgcov (aka llvm-cov — средство для анализа покрытия кода тестами).

Стоит быть морально готовым к отмене этого исключения, хоть и маловероятной. GCC уже однажды перешел с GPLv2 на GPLv3, в результате чего Apple сменила официальный компилятор на Clang и стала его активно улучшать, взяв в штат главного разработчика Криса Латтнера. В самом тексте исключения написано, что это вынужденная мера, потому что «запрет, вероятно, приведет к последствиям, негативным для нас самих, и потому что если бы небольшие библиотеки использовались для того, чтобы ограничить применение GCC, это выглядело бы как хвост, виляющий собакой». Быть может, когда все крупные компании вслед за Apple променяют GCC на Clang, последствия перестанут быть такими негативными…

Автор: markhor

Источник

Поделиться

* - обязательные к заполнению поля