В статье хочу рассказать о проверке проекта Wine такими статическими анализаторами C/C++ кода, как PVS-Studio и Clang Static Analyzer.
Читать полностью »
Рубрика «clang» - 7
Проверяем Wine с помощью PVS-Studio и Clang Static Analyzer
2014-08-13 в 8:03, admin, рубрики: clang, open source, pvs-studio, wine, Блог компании PVS-Studio, ошибки в программе, Программирование, Си, статический анализ кодаПроверка PVS-Studio с помощью Clang
2014-08-08 в 16:44, admin, рубрики: c++, clang, LLVM, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, ошибки в коде, статический анализ кода
Да, да. Вы не ослышались. В этот раз статья «наоборот». Не мы проверяем какой-то проект, а проверили наш анализатор с помощью другого инструмента. На самом деле, подобное делали мы и раньше. Например, проверяли PVS-Studio с помощью Cppcheck, с помощью анализатора, встроенного в Visual Studio, смотрели на предупреждения Intel C++. Но раньше не было повода написать статью. Ничего интересного не находилось. А вот Clang смог заинтересовать своими диагностическими сообщениями.
Читать полностью »
Создание и использование плагина для Clang в Xcode
2014-03-03 в 6:11, admin, рубрики: c++, clang, clang plugin, compiler, LLVM, xcode, КомпиляторыДанный туториал описывает создание плагина для Clang и покрывает следующие шаги:
- настройка окружения
- создание базового плагина
- создание Xcode-проекта для разработки плагина
- генерирование предупреждений
- генерирование ошибок
- интеграция плагина в Xcode
- интерактивные подсказки по устранению предупреждений и ошибок
TL;DR
Готовый плагин можно найти здесь
Читать полностью »
Что нужно знать об ARC
2014-01-16 в 8:47, admin, рубрики: ARC, clang, ios development, memory management, objective-c, разработка под iOS, метки: ARC, clang, ios development, memory management, objective-c Автоматический подсчет ссылок (Automatic Reference Counting, ARC) для языка Objective-C был представлен компанией Apple еще в 2011 году для iOS 4.0 и выше, Mac OS X 10.6 и выше, с использованием xCode 4.2 и выше. И, хотя всё больше библиотек, фреймворков и проектов сегодня используют ARC, до сих пор среди программистов встречается либо неприятие этой технологии, либо eё неполное понимание. Опытные программисты, привыкшие к retain/release, иногда считают, что они лучше и эффективней справяться с подсчетом ссылок, чем это за них сделает компилятор, а новички, начищающие сразу использовать ARC, полагают, что им не надо вообще думать об управлении памятью, и всё сделается магическим образом само.
Читать полностью »
«Разработчики PVS-Studio, вы вообще слышали про Clang?», или сравнение PVS-Studio и Clang без кода
2013-10-09 в 10:49, admin, рубрики: clang, pvs-studio, Блог компании PVS-Studio, статический анализ, статический анализ кода, метки: clang, pvs-studio, статический анализ, статический анализ кодаДовольно часто, когда мы пишем статьи про статический анализатор C++ кода PVS-Studio, нам задают один из следующих вопросов:
- А чем PVS-Studio лучше, чем Clang?
- А вот Clang бесплатный, а вы стоите денег – не понятно, почему?
- Clang лучше, туда легко можно добавить свои диагностики, ведь это open source!
- Вам пора закрываться, Clang вас раздавит, если не сейчас, то когда отладят версию под Windows.(ну это даже и не как вопрос сформулировано).
Пришло время обстоятельно ответить на эти вопросы.
Читать полностью »
Новости о LLVM для Windows
2013-09-06 в 14:29, admin, рубрики: AddressSanitizer, clang, LLVM, Компиляторы, метки: AddressSanitizer, clang, LLVMВо многих новостях про Clang на хабре я наблюдал один и тот же вопрос: «когда будет нормальная поддержка Windows?».
Уверен, задававшим подобные вопросы будет интересна свежая новость из мира LLVM.
Читать полностью »
OpenMP теперь доступен в Clang!
2013-08-30 в 4:11, admin, рубрики: c++, clang, openmp, Блог компании Intel, Компиляторы, параллельное программирование, метки: c++, clang, openmpСкоро первое сентября. Кто-то собирается в школу, кто-то — в институт. А мы предлагаем начать новые проекты с компилятором clang, который теперь поддерживает OpenMP!
Проект доступен здесь. Сейчас в его основе лежит clang 3.3. Небыстрый процесс ревью уже идет, и скоро код будет залит в транк clang'а, а значит войдет в его новые релизы.
Реализована полная поддержка стандарта OpenMP версии 3.1. Успешно проходятся следующие тесты: набор для валидации OpenMP от OpenUH Research Compiler, SPEC OMP2012 и внутренние тесты Intel. Исполняемый код c OpenMP, собранный clang'ом, демонстрирует производительность, сравнимую с другими компиляторами, поддерживающими OpenMP.
В качестве библиотеки времени выполнения использована библиотека Intel OpenMP Runtime Library, также доступная под свободной лицензией.
Читать полностью »
Исключение для библиотек времени исполнения GCC или почему в Clang до сих пор отсутствует поддержка OpenMP
2013-06-21 в 5:50, admin, рубрики: clang, Dura Lex, gcc, GNU, intel, LLVM, openmp, Компиляторы, метки: clang, gcc, GNU, intel, LLVM, openmp Используете GCC в проекте с закрытым исходным кодом? Применяете OpenMP? Вы же в курсе, что библиотека libgomp, с которой компонуются все OpenMP программы, распространяется на условиях GPLv3? Будьте так добры, откройте ваши исходники…
Читать полностью »
Официальный релиз LLVM 3.3
2013-06-18 в 23:55, admin, рубрики: c++, c++11, clang, LLVM, Компиляторы, метки: c++11, clang, LLVMДля тех, кто не следит пристально за развитием Clang/LLVM, сообщаю — состоялся релиз версии 3.3. LLVM продолжает развиваться семимильными шагами и новый релиз, как заявлено, первым поддерживает все фичи C++11, добавлена поддержка целой пачки новых таргетов и появилось несколько интересных тулов, основанных на инфраструктуре LLVM. Также продолжает развиваться оптимизатор — появился автовекторизатор, который работает по умолчанию на -O3, много сделано для улучшения уже уже существующих оптимизаций. Кому интересны подробности — добро пожаловать под кат.
Часто задаваемые вопросы про asm.js
2013-03-04 в 13:36, admin, рубрики: clang, clr, Emscripten, ES6, javascript, jit, jvm, Mandreel, mozilla, NaCl, offline, PNaCl, source maps, SpiderMonkey, динамическая компиляция, оптимизация кода, оптимизация программ, сборка мусора, управляемый код, фонд Мозиллыasm.js — новый язык?
Нет, это просто подмножество JavaScript. Программа на asm.js одинаково поведёт себя и в существующих движках JavaScript, и в движке с предварительной (ahead-of-time, AOT) компиляцией, способном распознавать и оптимизировать asm.js; различаться будет её скорость, разумеется!
Какой выигрыш в производительности можно ожидать от asm.js?
Сейчас ещё рано утверждать. Однако наши предварительные измерения производительности программ, скомпилированных из Си в asm.js, показывают не более чем двукратное замедление по сравнению с компилированными в машинный код посредством clang. Мы опубликуем дальнейшие измерения, когда насобираем их.
Как я могу следить за ходом реализации?
Мозилла работает над первой реализацией оптимизирующего компилятора asm.js для SpiderMonkey. В вики Фонда Мозиллы также опубликован план разработки дальнейших выпусков и оптимизаций. Если авторы других движков JavaScript опубликуют собственные планы реализации компиляторов asm.js, мы их здесь упомянем.
Почему бы вам не разработать синтаксис байткода вместо необычного диалекта джаваскрипта?
Для компиляторов наподобие Emscripten или Mandreel синтаксис байткодового языка попросту не особенно значим. Притом большинство байткодов и вообще машинных языков имеют двоичный формат, не читаемый людьми. Однако мы можем создать на уровне asm.js более человеко-читаемый синтаксис, который будет и удобным в дизассемблировании, и пригодным для чтения и записи людьми.
То обстоятельство, что asm.js — это JavaScript, не обернётся ли непредсказуемым выполнением кода?
Предварительная (ahead-of-time, AOT) компиляция asm.js может генерировать код, выполнение которого весьма предсказуемо, потому что валидный код asm.js ограничен крайне небольшим подмножеством JavaScript, состоящим только из строго типизированных целых чисел, чисел с плавающей точкою, арифметических операций, вызовов функций и обращения к куче.
Почему бы тогда не NaCl или PNaCl вместо этого? Вы просто упорствуете насчёт JavaScript?
Принципиальным достоинством asm.js по сравнению с новыми технологиями вроде NaCl и PNaCl является то, что asm.js работает сегодня: существующие движки JavaScript ужé неплохо оптимизируют код, написанный в таком стиле. Что означает, что разработчики могут выпускать код на asm.js сегодня, а со временем его работа будет ускоряться. Другою важною пользою является заметно бóльшая простота реализации, для которой потребуется совсем немного дополнительных механизмов поверх существующих движков JavaScript — и не понадобится слой совместимости API.