[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
обновил список релизов
 
(не показано 29 промежуточных версий 17 участников)
Строка 6:
| подпись =
| тип = [[Компилятор]]
| автор = Крис Латтнер
| разработчик = [[Apple]] и другие
| написана на = [[C++]]
| операционные системы = [[Кроссплатформенное программное обеспечение]]
| языки интерфейса =
| первый выпуск = 26 сентября 2007
| последняя версия = 18.1.8<ref>{{Cite news|title=LLVM 16.0.0 Release|url=https://discourse.llvm.org/t/llvm-16-0-0-release/69326|accessdate=2023-03-17|archivedate=2023-03-18|archiveurl=https://web.archive.org/web/20230318081420/https://discourse.llvm.org/t/llvm-16-0-0-release/69326}}</ref>
| последняя версия = 12.0.0<ref>[http://llvm.org/releases/ Download LLVM releases<!-- Заголовок добавлен ботом -->]</ref>
| дата последней версии = {{Start date and age|20212024|0406|1418}}
| состояние = Активное
| лицензия = [[лицензия Университета Иллинойса]] ([[:en:University of Illinois/NCSA Open Source License|англ.]])
| сайт = http://clang.llvm.org/
}}
 
'''Clang''' (произносится «клэнг»<ref>[http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-July/015624.html Обсуждение произношения названия на рассылке llvmdev] {{webarchive|url=https://web.archive.org/web/20120208050747/http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-July/015624.html |date=2012-02-08 }}</ref>) является [[Front and back ends|фронтендом]] для [[язык программирования|языков программирования]] [[Си (язык программирования)|C]], [[C++]], [[Objective-C]], [[Objective-C++]] ([[:en:Objective-C++|англ.]]) и [[OpenCL|OpenCL C]], использующимся совместно с [[фреймворк]]ом [[LLVM]]. Clang транслирует [[Исходный код|исходные коды]] в [[байт-код]] LLVM, затем фреймворк производит оптимизации и [[кодогенерация|кодогенерацию]].
 
Целью проекта является создание замены GNU Compiler Collection ([[GCC]]). Разработка ведётся согласно концепции [[Открытое программное обеспечение|open source]] в рамках проекта LLVM.
 
Clang 12 последней версии от апреля 2021 имеет полную поддержку всех опубликованных стандартов [[C++]] до [[C++17]], реализует большинство функций [[C++20]] и добавляет частичную поддержку разрабатываемого стандарта [[C++23]] . Начиная с версии V6.0.0 в Clang компилирует C++ с использованием в GNU [[C++14]] диалект по умолчанию, которое включает функции из C++14 стандарта и в соответствии с GNU расширений.
 
В проекте участвуют работники нескольких корпораций, в том числе [[Google (компания)|Google]] и [[Apple]]. Исходный код доступен на условиях [[Лицензия BSD|BSD]]-подобной лицензии.
 
== Обзор ==
Clang — это [[транслятор]] для C-подобных языков, созданный специально для работы на базе LLVM. Комбинация Clang и LLVM представляет собой полноценный компилятор и предоставляет набор инструментов, позволяющих полностью заменить GCC. Благодаря архитектуре, основанной на [[Библиотека (программирование)|библиотеках]], Clang (как и LLVM) легко встраивается в другие приложения.
 
Clang — это транслятор для C-подобных языков, созданный специально для работы на базе LLVM. Комбинация Clang и LLVM представляет собой полноценный компилятор и предоставляет набор инструментов, позволяющих полностью заменить GCC. Благодаря архитектуре, основанной на [[Библиотека (программирование)|библиотеках]], Clang (как и LLVM) легко встраивается в другие приложения.
 
Одной из главных задач Clang является поддержка инкрементной компиляции, позволяющей более тесно интегрировать компилятор и графический интерфейс [[Интегрированная среда разработки|среды разработки]], в отличие от GCC, который был создан для работы в классическом цикле «компиляция-линковка-отладка». В отличие от GCC, ориентированного преимущественно на [[кодогенерация|кодогенерацию]], Clang стремится предоставить универсальный фреймворк для [[парсинг]]а, индексации, [[Статический анализ кода|статического анализа]] и [[Компилятор|компиляции]] языков семейства Си. В частности, Clang не производит упрощений исходного кода на этапе парсинга (как это делает GCC), гарантируя точное воспроизведение исходного текста в [[абстрактное синтаксическое дерево]].
 
В отличие от GCC, Clang изначально спроектирован для максимального сохранения информации в ходе процесса компиляции, в том числе сохранения «внешнего вида» исходного кода. Эта особенность позволяет Clang создавать развернутые контекстно-ориентированные сообщения об ошибках, понятные как для программистов, так и для сред разработки. Модульный дизайн компилятора позволяет использовать его в составе среды разработки для индексирования кода, [[Подсветка синтаксиса|подсветки синтаксиса]] и [[Рефакторинг|переработки кода]].
 
Clang поддерживает большинство распространенных опций GCC.
Строка 50 ⟶ 52 :
|archivedate = 2012-04-30
|deadurl = yes
}}</ref><ref>[{{Cite web |url=http://wiki.freebsd.org/BuildingFreeBSDWithClang |title=BuildingFreeBSDWithClang — FreeBSD Wiki<!-- Заголовок добавлен ботом -->] |access-date=2011-03-17 |archive-date=2012-10-01 |archive-url=https://web.archive.org/web/20121001103027/http://wiki.freebsd.org/BuildingFreeBSDWithClang |deadlink=no }}</ref>. Сейчас весь исходный код FreeBSD — как ядро, так и пользовательские программы — может быть скомпилирован с помощью Clang.
|-
|-
Строка 61 ⟶ 63 :
|archivedate = 2012-04-30
|deadurl = yes
}}</ref><ref>[{{Cite web |url=http://www.dragonflybsd.org/docs/developer/clang/ |title=DragonFlyBSD: clang<!-- Заголовок добавлен ботом -->] |access-date=2011-03-17 |archive-date=2012-10-05 |archive-url=https://web.archive.org/web/20121005113539/http://www.dragonflybsd.org/docs/developer/clang/ |deadlink=no }}</ref>.
|-
|23 октября 2009||Clang 1.0 впервые выпущен в составе LLVM 2.6.
|-
|Декабрь 2009||Кодогенерация для языков C и Objective-C достигла промышленного качества (поддержка C++ и Objective-C++ ещё не завершена). Компилятор C++ может осуществлять лексический разбор [[libstdc++]] из GCC 4.2 и генерировать работоспособный код для нетривиальных программ<ref name=clang>Clang team, ''[http://clang.llvm.org/ clang: a C language family frontend for LLVM] {{Wayback|url=http://clang.llvm.org/ |date=20110313095638 }}''</ref>, а также компилирует себя<ref>{{cite web
|publisher = Блог проекта LLVM
|url = http://blog.llvm.org/2009/12/clang-builds-llvm.html
Строка 74 ⟶ 76 :
}}</ref>.
|-
|2 февраля 2010||Clang осуществил [[:en:Self-hostingСамодостаточность (компиляторы)|self-hosting]] (скомпилировал работоспособную версию clang+llvm)<ref>{{cite web
|publisher = Блог проекта LLVM
|url = http://blog.llvm.org/2010/02/clang-successfully-self-hosts.html
Строка 112 ⟶ 114 :
}}</ref>.
|-
|25 октября 2010||Clang/LLVM успешно компилирует ядро [[Linux]] (частично)<ref>[http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html &#91;ANNOUNCE&#93; Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)] {{webarchive|url=https://web.archive.org/web/20150907044958/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html |date=2015-09-07 }}</ref>. До полной поддержки остаётся исправить несколько ошибок в clang<ref>{{Cite web |url=http://llvm.org/bugs/show_bug.cgi?id=4068 |title=Страница отслеживания ошибок llvm, препятствующих сборке ядра Linux |access-date=2011-10-17 |archive-date=2014-06-09 |archive-url=https://web.archive.org/web/20140609150754/http://llvm.org/bugs/show_bug.cgi?id=4068 |deadlink=no }}</ref> и избавиться от некоторых gnu-специфичных конструкций в ядре.
[http://llvm.org/bugs/show_bug.cgi?id=4068 Страница отслеживания ошибок llvm, препятствующих сборке ядра Linux]</ref> и избавиться от некоторых gnu-специфичных конструкций в ядре.
|-
|Январь 2011||Проведена предварительная работа по поддержке черновика стандарта [[C++0x]], в разрабатываемой версии Clang поддерживаются некоторые новые возможности<ref>{{cite mailing list
Строка 120 ⟶ 121 :
| last=Gregor
| title=New C++0x feature support in Clang
| date=26 January 2011-01-26
| accessdate=29 января 2011-01-29
| deadurlurl-status=yesdead
| archiveurl=https://web.archive.org/web/20110130065354/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-January/013013.html
| archivedate=2011-01-30
Строка 139 ⟶ 140 :
|last = Simonis
|title = Compiling the HotSpot VM with Clang
|date = 10 February 2011-02-10
|quote = ''While the overall GCC compatibility is excellent and the compile times are impressive, the performance of the generated code is still lacking behind a recent GCC version. ''
|accessdate = 13 февраля 2011-02-13
|archiveurl = https://www.webcitation.org/67JxM051z?url=http://weblogs.java.net/blog/simonis/archive/2011/02/10/compiling-hotspot-vm-clang
|archivedate = 2012-04-30
Строка 152 ⟶ 153 :
|last = Criswell
|title = &#91;LLVMdev&#93; Clang + SAFECode Release Announcement
|date = 18 august 2011-08-18
|accessdate = 25 августа 2011-08-25
|archiveurl = https://www.webcitation.org/67JxMWDqM?url=http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-August/042506.html
|archivedate = 2012-04-30
Строка 162 ⟶ 163 :
|url = http://lists.freedesktop.org/archives/libreoffice/2011-October/019632.html
|title = Building LibreOffice with Clang
|date = 22 october 2011-10-22
|accessdate = 23 октября 2011-10-23
|archiveurl = https://www.webcitation.org/67JxN1ZVJ?url=http://lists.freedesktop.org/archives/libreoffice/2011-October/019632.html
|archivedate = 2012-04-30
Строка 213 ⟶ 214 :
| url=https://twitter.com/sdt_intel/status/325289093170864129
| title=Clang is C++11 feature complete as of *just now*!
| access-date=2013-04-22
}}</ref>.
| archive-date=2019-09-24
| archive-url=https://web.archive.org/web/20190924204137/https://twitter.com/stefanusdutoit/status/325289093170864129
| deadlink=no
}}</ref>.
|-
|18 июня 2013||Релиз Clang 3.3 поддерживает 100 % возможностей C++11.
|-
|07 ноября 2013||Clang поддерживает 100 % возможностей C++14<ref>[http://llvm.org/viewvc/llvm-project?view=revision&revision=194194 ]{{Wayback|url=http://llvm.org/viewvc/llvm-project?view=revision&revision=194194 |date=20170130114326 }}<span> [llvm-project</span>&#93x5D;<span> Revision 194194<!-- Заголовок добавлен ботом -->]</span></ref>.
|-
|11 сентября 2014
|С помощью Clang 3.5 можно пересобрать 94,3 % архива Debian. Доля неудач при сборках снизилась с января 2013 г. на 1,2 % на релиз, в основном вследствие повышения совместимости с флагами GCC<ref>{{Cite web|url=http://sylvestre.ledru.info/blog/2014/09/11/rebuild-of-debian-using-clang-3-5|title=Rebuild of Debian using Clang 3.5.0|publisher=sylvestre.ledru.info|accessdate=2016-05-06|archive-date=2016-04-19|archive-url=https://web.archive.org/web/20160419003014/http://sylvestre.ledru.info/blog/2014/09/11/rebuild-of-debian-using-clang-3-5|deadlink=no}}</ref>.
|-
|13 марта 2017
Строка 230 ⟶ 235 :
| last=Nagy
| title=switch the default compiler on amd64 and i386 to clang
| date=26 July 2017-07-26
| accessdate=30 September 2017}}</ref>.-09-30
| archivedate=2018-10-25
| archiveurl=https://web.archive.org/web/20181025144820/https://marc.info/?l=openbsd-cvs&m=150109829003860&w=2
}}</ref>.
|-
|7 сентября 2017
|Clang 5.0.0 [https://releases.llvm.org/5.0.0/tools/clang/docs/ReleaseNotes.html Релиз].
|-
|5 марта 2018||Clang становится компилятором по умолчанию сборок [[Google Chrome]] для всех поддерживаемых платформ.<ref>{{Cite web|url=http://blog.llvm.org/2018/03/clang-is-now-used-to-build-chrome-for.html|title=Clang is now used to build Chrome for Windows|accessdate=2018-03-06|archive-date=2018-03-05|archive-url=https://web.archive.org/web/20180305220009/http://blog.llvm.org/2018/03/clang-is-now-used-to-build-chrome-for.html|deadlink=no}}</ref>
|-
|8 марта 2018
Строка 258 ⟶ 266 :
|14 апреля 2021
|Clang 12.0.0 [https://releases.llvm.org/12.0.0/tools/clang/docs/ReleaseNotes.html Релиз]
|-
|4 октября 2021
|Clang 13.0.0 [https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html Релиз]
|-
|25 марта 2022
|Clang 14.0.0 [https://releases.llvm.org/14.0.0/tools/clang/docs/ReleaseNotes.html Релиз]
|-
|6 сентября 2022
|Clang 15.0.0 [https://releases.llvm.org/15.0.0/tools/clang/docs/ReleaseNotes.html Релиз]
|-
|17 марта 2023
|Clang 16.0.0 [https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html Релиз]
|}
 
Строка 264 ⟶ 284 :
 
== Ссылки ==
 
* [http://clang.llvm.org/ Официальная страница проекта]