Автоматический подсчет ссылок (Automatic Reference Counting, ARC) для языка Objective-C был представлен компанией Apple еще в 2011 году для iOS 4.0 и выше, Mac OS X 10.6 и выше, с использованием xCode 4.2 и выше. И, хотя всё больше библиотек, фреймворков и проектов сегодня используют ARC, до сих пор среди программистов встречается либо неприятие этой технологии, либо eё неполное понимание. Опытные программисты, привыкшие к retain/release, иногда считают, что они лучше и эффективней справяться с подсчетом ссылок, чем это за них сделает компилятор, а новички, начищающие сразу использовать ARC, полагают, что им не надо вообще думать об управлении памятью, и всё сделается магическим образом само.
Читать полностью »
Метка «clang»
Что нужно знать об ARC
2014-01-16 в 8:47, admin, рубрики: ARC, clang, ios development, memory management, objective-c, разработка под iOS, метки: ARC, clang, ios development, memory management, objective-c«Разработчики 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, много сделано для улучшения уже уже существующих оптимизаций. Кому интересны подробности — добро пожаловать под кат.
Сейчас с уверенностью можно утверждать, что времена самописных C++-парсеров постепенно отходят в прошлое. На сцену медленно, но неумолимо выходит clang — полноценный C++-фронренд и компилятор, предоставляющий своим пользователям богатое API. С помощью этого API можно распарсить исходный текст на C/C++/Objective C, и вытащить из него всю необходимую информацию — от простого лексического значения токенов, до таблицы символов, AST-деревьев и результатов статического анализа кода на предмет всяких разных проблем. В связке с llvm и при сильном на то желании C++ можно использовать в качестве скриптового языка, парся и исполняя C++-программы «на лету». В общем, возможности перед программистами открываются богатые, надо только понять — как ими правильно воспользоваться. А тут, как это не редко случается, и начинается самое интересное.
Читать полностью »
Отладка Objective-C ARC retain
2012-07-19 в 9:54, admin, рубрики: clang, gcc, iOS, objective-c, отладка, разработка под iOS, метки: clang, gcc, iOS, objective-cИногда возникают ситуации, когда стандартных средств отладки недостаточно.
Например, в iOS 4.1 была возможность использовать valgrind в симуляторе. А в Lion x86_64 и iOS 5 valgrind работать уже перестал.
Это связано с 64-битной архитектурой и изменениями в симуляторе (в valgrind есть ряд
недоработок).
С переходом на ARC метод отладки retain исчез:
- (id) retain
{
// Break here to see who is retaining me.
return [super retain];
}
CLANG, игра для фанатов фехтования
2012-06-10 в 11:46, admin, рубрики: clang, game development, метки: clang
Нил Стивенсон, известный писатель-фантаст, оказывается, очень любит историческое фехтование. В компании Subutai он не только заседает в совете, но также отвечает за разработку и изготовление брони для фехтования.
9 июня Стивенсон представил на проекте Kickstarter свою компанию и её игровой проект «CLANG», что можно примерно перевести как “лязг”. Компьютерная игра, призванная как можно более реалистично отобразить сражения при помощи холодного оружия.
Читать полностью »
Qt/Objective-C++11 или сборка Qt-проекта с помощью GCC-4.7 и Clang
2012-05-28 в 15:32, admin, рубрики: blocks, c++, clang, gcc, mac os x, macosx, programming, qt, Qt Software, Программирование, метки: blocks, c++, clang, gcc, macosx, objective-c, programming, QtВсем доброго хабрадня!
Сегодня я расскажу уважаемым хабражителям об очередном извращении — о сборке проекта, написанного на Qt, под Mac OS X компилятором GCC-4.7.0 с примесью Clang'а (про шланг — в конце статьи, там станет понятно, зачем ещё и его приплетать будем).
Для чего нам GCC 4.7? Ну, например, чтобы использовать все те крутые фичи из стандарта C++11. Разве этого мало? Кроме поддержки нового стандарта, в нём очень много улучшений по сравнению с идущим в комплекте с Xcode GCC 4.2 (хотя он и оказывается на поверку i686-apple-darwin11-llvm-g++-4.2), так что смысл в переходе на 4.7 явно имеется. Но и проблемы присутствуют, о чём ниже.
Мы можем предположить, что нам потребуются некие фичи из Cocoa
, а значит, нам потребуется компилятор Objcetive-C, а ещё лучше — Objective-C++, чтобы, например, интегрировать наше Qt-приложение в окружение Mac OS X.
Читать полностью »