html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Официальный релиз LLVM 3.3

Для тех, кто не следит пристально за развитием Clang/LLVM, сообщаю — состоялся релиз версии 3.3. LLVM продолжает развиваться семимильными шагами и новый релиз, как заявлено, первым поддерживает все фичи C++11, добавлена поддержка целой пачки новых таргетов и появилось несколько интересных тулов, основанных на инфраструктуре LLVM. Также продолжает развиваться оптимизатор — появился автовекторизатор, который работает по умолчанию на -O3, много сделано для улучшения уже существующих оптимизаций. Кому интересны подробности — добро пожаловать под кат.

Начнём с поддержки C++11. Заявлена полная поддержка, включая библиотечную поддержку таких важных фич, как например, std::regex. О завершении работы над С++11 в транке было объявлено в LLVM blog'е ещё в апреле и теперь разработчики фронт-энда заняты работой над поддержкой драфта следующего стандарта, который именуется С++1y. Говорят, что после того, как после релиза С++11 нашлось несколько досадных огрехов, Бьерн Страуструп заявил, что не выпустит нового стандарта, пока все фичи не будут реализованы хоть в одном компиляторе. Так что остаётся только поприветствовать активность разработчиков clang'а.

Для тех, кто готов начать использовать С++11 прямо сейчас в уже существующих проектах, предлагается специальный C++11 Migration Tool. С помощью этой утилиты вы сможете автоматически конвертировать старые циклы в range-based for циклы, расставить использование nullptr вместо инициализации указателей нулями, изменить тип в объявлениях переменных на auto там, где это уместно, и добавить override к объявлениям виртуальных функций. Отрадно отметить, что этот тул разработан сотрудниками компании Intel, которая начинает всё больше инвестировать в LLVM наряду с Apple и Google.

Ещё один интересный инструмент, который стал возможен благодаря открытости и расширяемости Clang, это clang-format. Он позволяет форматировать исходный код согласно заданному стилю, но при этом отличается от своих аналогов тем, что, используя различные компоненты Clang, получает информацию о синтаксической структуре кода, достаточную для полного переформатирования, практически не ориентируясь на исходное форматирование (за редкими исключениями: например, он может оставлять пустые строки, разделяющие логические блоки кода, и сохранять привязку комментария к комментируемым сущностям). При этом clang-format не использует целиком парсер Clang, что позволяет использовать его для любых фрагментов исходника, похожих на корректный C++ код. И если во времена С можно было обойтись относительно простыми подходами, то обилие синтаксических конструкций в C++ и их зависимость от контекста требуют от подобного инструмента достаточно глубокого понимания кода. Кому интересны подробности, рекомендую посмотреть видео с конференции, где один из разработчиков рассказывает об этом инструменте: материалы конференции, ищите «clang-format — Automatic formatting for C++». Кстати, также доступны плагины для Vim и Emacs, которые позволяют форматировать текст на лету.

Оптимизатор также неплохо прибавил. Главное нововведение — автовекторизатор циклов, включённый по умолчанию на -O3. Как известно, чуть меньше года назад Apple начала активно продвигать создание автовекторизатора и сейчас мы можем наблюдать первые плоды этих усилий. Объективно оценивая статус проекта стоит отметить, что хоть и до лучшего доступного на рынке автовекторизатора для x86 (реализованного в Intel Compiler) ещё в лучшем случае многие годы разработки и конкуренция с GCC пока тоже не в пользу новичка, но даже относительно простое решение способно дать пользователю заметные бенефиты. Ведь как известно 80% результата достигается 20% усилий. И пусть не пинают меня за аффелированность с компанией Intel, думаю с такой оценкой согласятся многие.

Перечислять же более мелкие улучшения в оптимизациях бессмысленно. Просто скажу, что в том, что касается скалярных оптимизаций, Clang готов поспорить и с GCC, и с Intel Compiler, а иногда и обыграть этих зубров оптимизации. Неплохо себя чувствует и LTO (link time optimizations) — но в то время как результаты хоть и неплохие, один из архитекторов признает, что там есть фундаментальные проблемы, которые ещё предстоит решить. Заинтригованным столь дерзким заявлением советую посмотреть keynote «Optimization in LLVM — Numbers, A Case Study, and Looking Forward» товарища Chandler'а на всё той же конференции.

В Release Notes на удивление обошли стороной одну из самых сильных сторон Clang'а — его непревзойдённую точность и детализацию диагностики, над которой тоже продолжают работать (скажем прямо, на фоне такого конкурента разработчикам GCC стало стыдно и они тоже хорошо прибавили в этом направлении). В семействе инструментов динамической верификации кода, так называемых санитайзеров, тоже прибавление — в дополнение к Address- и Thread- добавился MemorySanitizer. Для тех, кто пользуется статической проверкой кода, тоже хорошая новость — Clang Static Analyzer теперь поддерживает несколько новых типов проверок и умеет ходить через границы С++ конструкторов и деструкторов.

В новом релизе появилась поддержка новых таргетов, самыми заметными из которых стали AArch64 и AMD R600 GPU. Также в списке присутствует IBM's z/Architecture S390 — думаю, поддержка такой архитектуры, это уже заявка на зрелость компилятора. Кому-то возможно будет интересен серьёзно улучшенный бек-энд PowerPC и поддержка MIPS.

Официальные Release Notes доступны тут, а сам компилятор для различных платформ можно скачать здесь.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

0

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции