LINUX.ORG.RU

Llvm


48

0

Всего сообщений: 47

В Intel создали новую реализацию OpenCL для GNU/Linux

Группа Linux General

Корпорация Intel выпустила первую версию Beignet — собственной открытой среды исполнения OpenCL и бекенда LLVM для Linux, рассчитанного на работу на процессорах с архитектурой Ivy Bridge. На данный момент частично реализована поддержка стандартов OpenCL 1.0 и 1.1. Проект не использует Gallium 3D. В рассылке intel-gfx ставится под сомнение необходимость создания этого проекта, так как он практически полностью дублирует уже существующую функциональность, доступную в Mesa.

>>> Подробности

 beignet, , ,

prozium
()

Вышел LLVM 3.2

Группа Open Source

Chris Lattner из Apple представил новый релиз LLVM — низкоуровневой виртуальной машины, работающей на многих архитектурах, в байткод которой могут компилироваться многие популярные языки при помощи соответствующих фронтендов.

Разработчики называют данную версию большим скачком, она разрабатывалась более 6 месяцев и содержит большое количество улучшений и новой функциональности.

Clang теперь имеет лучшую в отрасли поддержку C++11, улучшена диагностика, улучшения в C11 и Obj-C (включая поддержку «ObjC literals»). Статический анализатор Clang теперь имеет поддержку кроссфункционального анализа вместе с улучшенной поддержкой Objective-C.

LLVM 3.2 теперь включает:

  • автоматический векторизатор (в ранней стадии разработки);
  • поддержку тюнинга для различных процессоров архитектуры ARM;
  • поддержку кодогенерации NVIDIA PTX (промежуточный код для устройств CUDA);
  • значительные улучшения в фазе компиляции SROA;
  • улучшения в поддержке AVX2 для процессоров x86;
  • значительные улучшения в бэкэнде для процессоров MIPS (включая поддержку ассемблера и дизассемблера);
  • серьезные улучшения в поддержке ELF для архитектуры PowerPC64;
  • LLDB — новый инструментарий для отладки;
  • многочисленные исправления ошибок и минорные улучшения.

Полный список изменений

>>> Подробности

 ,

unfo
()

Продемонстрирован запуск openSUSE с ядром Linux, собранным при помощи Clang

Группа Ядро Linux

Разработчики openSUSE представили видеоролик, на котором продемонстрирован процесс загрузки и работы дистрибутива в графическом окружении, при использовании ядра Linux, собранного с использованием компилятора Clang вместо GCC. Сборка осуществлена с задействованием наработок проекта LLVMLinux, развиваемом при участии организации Linux Foundation с целью решения проблем со сборкой ядра в Clang и продвижения созданных патчей в upstream-проекты (ядро Linux и LLVM/Clang).

Использование компилятора Clang, распространяемого под лицензией BSD, позволяет задействовать дополнительные техники оптимизации и диагностики проблем, например, автоматизировать выявление фактов разыменования указателей и других ошибок, связанных с некорректной работой с памятью. Изначально проект LLVMLinux развивался в рамках инициативы Linaro и был ориентирован на сборку ядра для платформы ARM, но месяц назад была обеспечена поддержка архитектур x86_64 и i586.

Для упрощения формирования сборочного окружения и кросс-компиляции ядра с использованием Clang и LLVM подготовлен специальный сборочный инструментарий.

Сборка ядра для архитектур i586 и x86_64 полностью работоспособна и позволяет получать рабочие системы, что демонстрирует пример openSUSE, но официально подобные ядра пока не готовы для применения в конечных продуктах.

Дополнительно налажен ежедневный процесс сравнительного тестирования при помощи пакета Linux Test Project (LTP) свежих сборок ядра, собранных с использованием GCC и Clang.

>>> Подробности

 , , ,

Boy_from_Jungle
()

Pymothoa — новый JIT-компилятор для Python

Группа Open Source

Pymothoa расширяет возможности Python с помощью JIT без модификации кода интерпретатора. Pymothoa работает на уровне приложения, он использует AST, генерируемые Python. Это позволяет пользователю писать оригинальный код на Python, но с небольшими поправками на изменения, вносимые Pymothoa.

Для того чтобы Python произвел JIT-компиляцию, нужно всего лишь декорировать нужную функцию. Pymothoa использует LLVM как бекенд. В сравнении с написанием Си модулей для Python, Pymothoa менее громоздкий и более удобный для распространения исходников, т.к. не требует перекомпилирования модулей.

Написание приложений с использованием диалекта Pymothoa сравнимо с программированием на C. Переменные должны быть декларированы и статически типизированы. За исключением нескольких конструкций, код Python не претерпевает изменений.

На данный момент проект имеет ограничения, такие как: отсутствие исключений, отсутствие поддержки классов, отсутствие поддержки Python-объектов.

>>> Подробности

 , , pymothoa,

xpahos
()

Предложен проект создания сервера LLVM/Clang

Группа Open Source

Предложен для реализации проект постоянного кеширующего сервиса Clang Server (clangd) для обслуживания инфраструктуры из множества разнородных, сложных и интерактивных C++ инструментов. В частности этот сервисный слой позволяет обобщить и построить в рамках libclang удобное взаимодействие множества самых разнородных редакторов, интегрированных сред разработки (IDE) и популярных Unix-инструментов разработки. Этот сервис будет реализован строго в рамках Clang/LLVM и будет поддерживать разработку для языков C, C++, Obj-C и Obj-C++.

Сервис будет предоставлять функциональность, которая традиционно присуща для IDE, но при этом задумка заключается в том, чтобы в рамках единой среды дать возможность работать сразу с несколькими разными «плохо интегрированными в систему» редакторами с одновременным обеспечением связности с такими слоями LLVM, как Tooling library, libclang и в потенциале этот сервис будет иметь свою собственную расширяемую через плагины структуру.

( читать дальше... )

>>> Подробности

 ,

Boy_from_Jungle
()

Вышел LLVM 3.1

Группа Open Source

После 6 месяцев, прошедших с выпуска LLVM 3.0, представлен очередной релиз проекта LLVM 3.1. LLVM (Low Level Virtual Machine) — универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями. Может использоваться как оптимизирующий компилятор этого байткода в машинный код для различных архитектур либо для его интерпретации и JIT-компиляции (для некоторых платформ).

Некоторые изменения:

  • значительно расширена поддержка C++'11 в компиляторе Clang;
  • AddressSanitizer — инструмент для поиска ошибок работы с памятью, позволяющий обнаруживать типичные ошибки при программировании на Си и Си++, такие как выход за границы буфера и т.п.;
  • в генератор кода добавлена поддержка так называемых «связок инструкций», позволяющих значительно повысить качество генерируемого кода для архитектур процессоров VLIW;
  • улучшена работа MIPS и ARM бэкенда;
  • помимо основных функций, этот релиз включает в себя улучшение производительности, исправление ошибок и другие усовершенствования.

Напоминаю, что LLVM позволяет компилировать программы написанные на языках С, C++, Objective-C, Fortran, Ada, Haskell, Java, Python, Ruby, JavaScript, GLSL или любом другом, для которого реализован front-end. В рамках проекта разработан фронтенд Clang для языков C и C++ и версия GCC, использующие llvm в качестве бэкенда. В Glasgow Haskell Compiler также реализована компиляция посредством llvm, существует ещё множество программ, использующих данную инфраструктуру.

>>> Подробности

 

ymn
()

Поддержка NVIDIA CUDA добавлена в LLVM

Группа Open Source

Процесс открытия исходных кодов компилятора для NVIDIA CUDA завершается. Теперь поддержка CUDA добавлена в фреймворк для построения компиляторов и виртуальных машин LLVM. Это позволит расширить число пользователей CUDA и количество языков программирования с её поддержкой.

>>> Подробности

 , , ,

dinn
()

NVIDIA приоткрывает исходные коды компилятора CUDA

Группа Проприетарное ПО

Сегодня NVIDIA анонсировала открытие исходных кодов нового компилятора CUDA, основанного на технологиях LLVM, для академических групп и разработчиков програмного обеспечения. Это позволит облегчить программирование GPU на различных языках и добавить возможность запускать CUDA программ на альтернативных вычислительных архитектурах. Также в NVIDIA надеются на ускорение развития гетерогенных вычислительных архитектур нового поколения.

Новый CUDA компилятор, основанный на технологии LLVM доступен в последнем выпуске CUDA Toolkit (версия 4.1).

Разработчики программного обеспечения смогут использовать исходные коды компилятора для создания собственных решений.

Doug Miles, директор The Portland Group:

Эта инициатива позволит PGI создать нативные компиляторы CUDA Fortran и OpenACC. Также позволит безпроблемно выполнять отладку и профилирование, используя существующие инструменты, и PGI сфокусируется на высокоуровневой оптимизации и языковых особенностях.

Доступ к исходным кодам компилятора CUDA квалифицированные академические исследователи и разработчики программного обеспечения могут получить после регистрации здесь.

>>> Подробности

 , ,

dinn
()

LLVM 3.0

Группа Open Source

30.11.2011 в свет вышла очередная версия фреймворка для построения компиляторов и виртуальных машин.

Википедия

Low Level Virtual Machine (LLVM) — универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями. Может использоваться как оптимизирующий компилятор этого байткода в машинный код для различных архитектур либо для его интерпретации и JIT-компиляции (для некоторых платформ).

Проект LLVM официально включает в себя следующие основные проекты:

  • LLVMCore - библиотеки для обеспечения платформонезависимой оптимизации и кодогенерации под различные виды процессоров и платформ;
  • CLang - компилятор языков C/C++/Objective-C для LLVM;
  • dragonegg - объединяет в себе парсер GCC-4.5 и оптимизацию и кодогенерацию на основе библиотек LLVM;
  • LLDB - дебаггер, использует Clang и LLVM;
  • libc++ - реализация стандартной библиотеки C++ (включает неполную поддержку стандарта C++11);
  • vmkit - реализация языков Java и .Net для LLVM;
  • SAFECode - память-безопасный компилятор С/С++.

Помимо упомянутых официальных проектов существует большое количество проектов, которые используют LLVM для компиляции программ для таких языков как Ruby, Python, Haskell, Java, D, PHP, Lua и т.д.

Основные изменения:

  • llvm-gcc больше не поддерживается, рекомендуется использовать clang или dragonegg;
  • LLVM IR (intermediate representation - платформонезависимый ассемблер для LLVM) включает в себя полную поддержку атомарных операций с памятью (load, store, compare, exchange, read/modify/write, etc.);
  • полностью переделан механизм обработки исключений в LLVM IR;
  • полностью переделана система типов LLVM IR;
  • MIPS backend доведён до production quality;
  • ...

Полный и подробный перечень изменений можно посмотреть в подробностях.

В настоящее время для скачивания доступен только исходный код (через svn). В ближайшее время на сайте в списке закачек ожидается появление бинарных сборок и тарболла.

>>> Подробности (англ.)

 , ,

shty
()

Анонсирована свободная переносимая реализация OpenCL

Группа Hardware and Drivers

Portable OpenCL позволит разрабатывать и запускать программы, использующие OpenCL, на его свободной платформонезависимой реализации (до этого существовали SDK, предоставляемые вендорами аппаратуры).

Это свободная (MIT-лицензия), основанная на LLVM реализация стандарта OpenCL, которая может быть легко приспособлена для новых целевых платформ. Одна из задач проекта — улучшение «переносимости производительности» программ на OpenCL, избегая нужды в ручной оптимизации, зависящей от целевой платформы. Цель «native» включена, что позволяет запускать ядра OpenCL на CPU.

Также ведётся работа над реализацией OpenCL поверх драйверов видеокарт из Gallium3D (Clover state tracker), в котором можно отметить некоторый прогресс за лето, произошедший в рамках GSoC.

Сайт проекта: https://launchpad.net/pocl

>>> Подробности

 , ,

ChALkeR
()

Статус готовности CLang к сборке ядра Linux

Группа Ядро Linux

В прошлом октябре был анонсирован проект по адаптации LLVM компилятора CLang к сборке ядра Linux. С тех пор прошло более полугода, и на днях разработчики опубликовали свой отчет о проделанной работе.

В целом:

  • Удалось получить работающую сборку ядер 2.6.37 и 2.6.38 (для некоторых конфигураций)
  • KVM и Xen использовать нельзя, причем последний пока даже не компилируется
  • Компилируются примерно 90% драйверов ядра, многие работают
  • Некоторые поставляемые сторонними вендорами драйвера (Broadcom, NVIDIA) работают отлично
  • Можно использовать многопроцессорные конфигурации (правда, только на x86), однако в некоторых случаях они требуют дополнительных усилий по доработке компилируемого кода

Что не работает:

  • Ассемблер для генерации кода реального режима (директивы code16gcc), поэтому, невозможно откомпилировать код начальной загрузки (для этой цели используется gas)
  • GCC-расширения языка C (некоторые работают, некоторые нет)
  • Опции генерации и оптимизации кода: -mregparm, -fcall-saved-reg, __arch_hweight*(), -pg, атрибут no_instrument_function, -fno-optimize-sibling-calls

Несмотря на возникающие трудности, разработчики полны энтузиазма. Свой проект они назвали LLL project, что расшифровывается как LLVM Linux project.

>>> Подробности

 , , license bsd, lll, , , ,

ttnl
()

Релиз LLVM 2.9

Группа Open Source

Состоялся новый релиз системы программирования Low Level Virtual Machine (LLVM). Среди заявленных изменений можно отметить улучшенную генерацию и оптимизацию кода, поддержку C++'0x в Clang, а также более продвинутый отладчик LLDB для C, Objective-C и C++, официально поддерживающий, правда, только Mac OS X i386 и x86-64.

Наиболее важные функциональные новинки включают встроенную поддержку ассемблера для ELF-файлов (прямую запись в объектный файл), некоторые улучшения в области оптимизации во время линковки файлов (Link Time Optimization, LTO), позволяющей компилировать приложения из большого дерева исходных кодов, автоматическую замену циклов на вызов memset и memcpy, улучшения в отладке оптимизированного кода, готовую инфраструктуру для оптимизации, базирующуюся на регионах (region based optimization), улучшенную поддержка кода, обращающегося к состоянию регистров, новый алгоритм распределения регистров.

Версия 2.9 — последняя в ветке 2.х. В 3-ей ветке планируется отказаться от компилятора llvm-gcc 4.2. Указывается, что проект Clang является лучшим решением для компиляции основанных на C языков, а проект DragonEgg является подходящим решением для тех, кто интересуется интеграцией LLVM с GCC.

Комментарии к релизу

>>> Подробности

 ,

ins3y3d
()

Компилятор Clang теперь пригоден для сборки Linux-ядра

Группа Ядро Linux

В блоге разработчиков Clang появилась информация о том, что с помощью Clang удалось собрать работоспособное ядро Linux версии 2.6.36 с поддержкой многопроцессорных систем (SMP). Несмотря на то, что некоторые компоненты ядра пока не поддаются компиляции, это событие приближает тот момент, когда Clang превратится в полноценный аналог GCC.

Немного технической информации:

  • В качестве основного стенда использовался Macbook 5.1 на базе Intel Core 2 Duo (не стоит забывать, что разработку Clang поддерживает в первую очередь компания Apple). На этой конфигурации удалось запустить ядро с работоспособным X-сервером, а также ядро в среде Qemu
  • В качестве второго стенда использовалась microATX-платформа на базе Intel Atom. В этом случае ядро также функционировало, однако разработчики не пытались запускать X-сервер
  • В системе на базе собранного ядра компилятор успешно собирает сам себя, а также новое ядро. Разработчики докладывают об успешной работе кода, полученного в ходе четвертого цикла самосборки.

Работоспособны следующие компоненты ядра:

  • Базовый код ядра, файловые системы, поддержка шин, в том числе и PCI, ACPI
  • SMP, SMT, SysV, pThreads и POSIX IPC
  • NUMA, управление памятью и SWAP
  • Сетевой стек IPv4, за исключением IPSec
  • Некоторые драйверы и прошивки

Пока не удалось добиться работы следующих подсистем:

  • CryptoAPI, а следовательно, и SELinux, Posix ACLs, IPSec, eCrypt
  • Стека IPv6 и код Netfilter/Router из-за зависимости от CryptoAPI
  • Виртуализации (поддержки гипервизора Xen)
  • Поддержки загружаемых модулей

Разработчики намерены и дальше улучшать совместимость между Clang и GCC и добиваться сборки с помощью Clang полностью работоспособного ядра.

>>> Подробности

 , ,

frankincent
()

Вышел Mono 2.8

Группа Open Source

Буквально на днях состоялся долгожданный выпуск Mono 2.8, обновивший платформу разработки Mono. Этот выпуск содержит в себе труд 10 месяцев: новые возможности, исправления стабильности, улучшенная производительность и исправления ошибок.

Основные изменения выпуска:

  • поддержка C# 4.0;
  • профиль 4.0 используется по умолчанию;
  • новый сборщик мусора (используйте --gc=sgen или mono-sgen для его включения) — если перейти к заметкам к выпуску и посмотреть графики тестирования производительности, то проделанная работа весьма впечатляет; на данный момент поддерживаются платформы ARM, x86, x86-64 и s390x;
  • новые фреймворки под лицензиями Mono MIT X11 и Microsoft MS-PL/Apache2:
    • ASP.NET 4.0 (очень много изменений, смотрите весь список в заметках к выпуску);
    • Parallel Framework, включая PLINQ;
    • System.XAML;
    • System.Dynamic;
    • Managed Extensibility Framework;
    • ASP.NET MVC 2;
    • System.Data.Services.Client (клиент для OData);
    • WCF Routing;
    • CodeContracts в .NET 4.0.
  • улучшения производительности:
    • общая производительность была значительно улучшена;
    • поддержка LLVM дошла до стабильного состояния (используйте mono-llvm для запуска нагрузки сервера через LLVM); учтите, что запуск приложения будет занимать больше времени, но зато возрастёт производительность во время работы.
  • API версии 2.0 для встраиваемых систем;
  • удалён профиль 1.1 и некоторые устаревшие библиотеки;
  • интегрирована поддержка OpenBSD;
  • Mono больше не зависит от GLib (заменена на eglib);
  • поведение исключений в пуле потоков теперь аналогично .NET 2.0.

Всех, кто использует C# и Mono для разработки — с праздником! Выпуск получился действительно очень «вкусным», с интересными изменениями, которые делают разработку на Mono ещё более лёгкой.

Для просмотра полного и подробного списка изменений обратитесь к заметкам к выпуску Mono 2.8.

>>> Сообщение в блоге Мигеля де Икасы

 , ,

MuZHiK-2
()

Вышел LLVM 2.8

Группа Open Source

Спустя полгода активной разработки анонсирован выход версии 2.8 набора компиляторов LLVM , распространяемых по условиям BSD-подобной лицензии UIUC. Одновременно вышли и обновления подпроектов LLVM: компилятора C/C++ — Clang, модифицированной версии GCC 4.2.x (использует LLVM для генерации кода) — llvm-gcc, плагина для GCC 4.5 (и выше) — dragonegg.

Наиболее значимые изменения:

  • в основной проект вошел отладчик LLDB;
  • другим дополнением проекта стала замена libstdc++ — совместимая с C++0x стандартом библиотека libc++;
  • LLVM Machine Code (MC) — подсистема для поддержки ассемблирования, дизассемблирования и обработки бинарных форматов файлов (подробности в блоге);

    К сожалению, вышеперечисленные новшества реализованы в LLVM 2.8 только для платформ Mac OS X (x86 и x86-64).

  • llvm-diff для семантического сравнивания .ll-файлов.

В числе других изменений можно отметить:

  • оптимизация внутренних функций работы с памятью;
  • более эффективная отладка за счет генерации метаданных для отладчика в режиме реального времени;
  • более эффективная оптимизация циклов, вложенности функций (inlining), -loweratomic pass;
  • Clang теперь поддерживает ключи -momit-leaf-frame-pointer, -ffunction-sections, -fdata-sections;
  • значительно улучшен аллокатор регистров (особенно для -O0), возможен выбор алллокатора (в зависимости от ключа -O) при использовании ключа -regalloc=default, также будет задействованы SSE-регистры;
  • множество процессор-специфичных оптимизаций для платформ ARM и x86 (SSE, AVX, NEON).

Просмотреть полный список изменений (также по ссылке доступен и список нерешённых проблем выпуска).
Ознакомиться с материалами конференции разработчиков LLVM, прошедшей перед выпуском.
Загрузить source-tarballs.

>>> Сайт проекта

 , , , ,

Sylvia
()

Вышел Mono 2.6.7

Группа Open Source

Основные изменения:

  • Теперь mono включает в себя MVC2
  • Добавлен WCF — как клиент, так и сервер
  • Добавлена поддержка LLVM для улучшения производительности
  • Новый отладчик, который интегрирован в MonoDevelop 2.2
  • Добавлена поддержка модели безопасности CoreCLR
  • Множество мелких исправлений

>>> Подробности

 ,

Root-msk
()

Сообщено о возможности clang собрать себя на платформе ARM

Группа Open Source

В рассылке clang было сообщено об успешном bootstrap'е компилятора clang на платформе ARM. Сборка производилась на Debian-ARM.

Способность clang бутстрапиться на платформе ARM делает возможным использование его не только в качестве кросскомпилятора для встраиваемых решений, но и для разворачивание полноценных систем в устройствах на базе процессора ARM.

Напомним, что clang — компилятор на базе фреймворка LLVM, развиваемый Apple и сообществом. Распространяется он под BSD лицензией.

Домашняя страница проекта

>>> Подробности

 , , , ,

vaulter
()

Dovecot переходит на CLang

Группа Open Source

Автор популярного IMAP/POP3 сервера Dovecot давно хотел перейти на CLang, но многие важные проверки на возможные ошибки не были реализованы, например проверка на корректность формата в printf() из-за этого и использовался GCC.

В последние пару дней один из разработчиков стал добавлять такие проверки. И у него это получилось лучше, чем у команды GCC.

Были проведены тесты, которые показали, что код собранный CLang работает на 7% быстрее.

Похоже, что это первый из наиболее крупных проектов, которые официально сказали что CLang/LLVM это mainstream.

>>> Оригинал

 , , ,

catap
()

LLVM 2.7

Группа Open Source

Low-Level Virtual Machine - инфраструктура компиляторов для различных языков программирования, кодогенераторов байт-кода и двоичного исполняемого кода для различных платформ.

  • Clang
    • Умеет собирать сам себя
    • Улучшена поддержка Objective-C ABI
    • Поддержка ARM для Linux и Darwin ABI
    • Множество улучшений в анализаторе кода
  • DragonEgg - плагин для gcc, заменяющий встроенные в gcc оптимизаторы и кодогенераторы аналогами от LLVM. Поддерживает C, C++, Fortran, Ada и слегка Obj-C.
  • llvm-gcc работает с gcc-4.5 и поддерживает ARM v7 NEON
  • Новый логотип
  • Ассемблер и дисассемблер машкода
  • И множество других улучшений в кодогенераторах, оптимизаторах, интерпретаторах и JIT, кодоанализаторах и поддержке ARM...

LLVM развивается силами корпорации Apple и сообщества. Исходники доступны под лицензией BSD.

>>> Подробности

 , , , , ,

shahid
()

ClangBSD самособирается - нужны тестеры

Группа BSD

Roman Divacky от имени команды ClangBSD написал сегодня в рассылку:

ClangBSD - это бранч FreeBSD, который нацелен на интегрирование clang в FreeBSD, и замену GCC как системного компилятора. Недавно, мы достигли этапа, когда clang может откомпилировать весь базовый сет FreeBSD на архитектурах i386/amd64 (включая все приложения на C++ и самого себя) и загружаемое ядро. Поэтому мы считаем, что пришло время попросить коммьюнити выполнить более широкое тестирование на i386/amd64 (вы также конечно можете помочь и с другими платформами :)).

Все желающие помочь могут воспользоваться этой инструкцией.

>>> Подробности

 , , , ,

val-amart
()