В рассылке clang было сообщено об успешном bootstrap'е компилятора clang на платформе ARM. Сборка производилась на Debian-ARM.
Способность clang бутстрапиться на платформе ARM делает возможным использование его не только в качестве кросскомпилятора для встраиваемых решений, но и для разворачивание полноценных систем в устройствах на базе процессора ARM.
Напомним, что clang — компилятор на базе фреймворка LLVM, развиваемый Apple и сообществом. Распространяется он под BSD лицензией.
Автор популярного IMAP/POP3 сервера Dovecot давно хотел перейти на CLang, но многие важные проверки на возможные ошибки не были реализованы, например проверка на корректность формата в printf() из-за этого и использовался GCC.
В последние пару дней один из разработчиков стал добавлять такие проверки. И у него это получилось лучше, чем у команды GCC.
Были проведены тесты, которые показали, что код собранный CLang работает на 7% быстрее.
Похоже, что это первый из наиболее крупных проектов, которые официально сказали что CLang/LLVM это mainstream.
Low-Level Virtual Machine - инфраструктура компиляторов для различных языков программирования, кодогенераторов байт-кода и двоичного исполняемого кода для различных платформ.
DragonEgg - плагин для gcc, заменяющий встроенные в gcc оптимизаторы и кодогенераторы аналогами от LLVM. Поддерживает C, C++, Fortran, Ada и слегка Obj-C.
Roman Divacky от имени команды ClangBSD написал сегодня в рассылку:
ClangBSD - это бранч FreeBSD, который нацелен на интегрирование clang в FreeBSD, и замену GCC как системного компилятора. Недавно, мы достигли этапа, когда clang может откомпилировать весь базовый сет FreeBSD на архитектурах i386/amd64 (включая все приложения на C++ и самого себя) и загружаемое ядро. Поэтому мы считаем, что пришло время попросить коммьюнити выполнить более широкое тестирование на i386/amd64 (вы также конечно можете помочь и с другими платформами :)).
Разработчики проекта LLVM сообщили о новом достижении - GCC-плагин DragonEgg достиг состояния, позволяющего пересобрать самого себя. В начале с использованием DragonEgg были пересобраны исходные тексты GCC-4.5, LLVM и dragonegg, а затем эксперимент был повторен с задействованием для пересборки свежескомпилированного бинарного файла.
DragonEgg представляет собой подключаемый к набору компиляторов GCC плагин, позволяющий в максимально прозрачном режиме использовать в стандартном GCC оптимизаторы и генераторы кода, разработанные в рамках LLVM.
В настоящий момент до достаточно высокого уровня доведена работоспособность DragonEgg для языков Си и Си++, частично реализована поддержка Fortran и Ada, хуже обстоят дела с поддержкой Obj-C и Obj-C++, много работы предстоит проделать для поддержки Java. На текущей стадии развития DragonEgg поддерживает архитектуры x86-32 и x86-64, может работать в Linux и Darwin.
Clang наконец-то способен откомпилировать сам себя!
Сегодня Clang впервые успешно выполнил бутстрап самого себя (более 550 тысяч строк на C++). Результирующие бинарники прошли все регрессионные тесты Clang и LLVM, а Clang, откомпилированный Clang'гом смог потом откомпилировать весь LLVM и Clang снова. Получившийся Clang (третий этап) также был полностью функциональным и таким образом завершил бутстрап.
Поздравляем всех разработчиков LLVM и Clang с этим важным этапом развития их проекта!
В лучших традициях большинства популярных интернет-ресурсов и по просьбе читателей мы делаем репост интересной новости от 28 марта 2009 года, исправленный и дополненный.
Несколько сотрудников компании Google, принимающие участие в разработке CPython, объявили о выпуске новой версии высокопроизводительной экспериментальной реализации интерпретатора языка Python — Unladen Swallow, в которой производится обкатка некоторых идей по существенному увеличению производительности.
Основные задачи:
Довести свою ветку Python до, как минимум, пятикратного увеличения производительности по сравнению с классическим CPython.
Производительность Python-приложений не должна опускаться ниже определённого уровня.
Доработка совместимости на уровне исходного кода с приложениями и расширениями CPython.
Хотя разработчики пока не рекомендуют использование данного ПО в промышленной эксплуатации, оно уже проходит все стандартные тесты на совместимость с базовой реализацией языка. Команда Unladen Swallow не планирует создавать форк Python - лишь заниматься поддержкой собственной ветки.
В квартальном отчете проекта FreeBSD сообщается о желании заменить набор компиляторов GNU Compiler Collection на связку LLVM и Clang, в текущее время развиваемого корпорацией Apple. Сообщается, что на текущий момент новый компилятор удачно справляется с 99% пакетов, в том числе и с ядром FreeBSD на архитектурах i386 и amd64. Разработчики команды FreeBSD уже отправили более 100 багрепортов в проект Clang.
Проект Unladen Swallow ("Ласточка налегке", отсылка к Monty Python) имеет целью увеличить производительность интерпретатора Python 2.6.1 минимум в 5 раз. при этом сохраняя совместимость со всеми Python-приложениями и модулями расширения. Проект не рассматривается как форк Python, и все усовершенствования планируется слить в основную ветку.
Самое существенное намеченное изменение - использование LLVM вместо текущей Python-специфичной VM, но запланированы и менее радикальные изменения, направленные на быстрое получение практически полезного ускоренного Python - усовершенствования "классического" интерпретатора (ceval.c), GC, внутренних структур данных, и эксперименты с новейшими GCC. Работа будет разбита на несколько этапов, с ежеквартальными релизами. Более подробный план работы здесь: http://code.google.com/p/unladen-swal..., уже достигнутые результаты здесь: http://code.google.com/p/unladen-swal....
LLVM -- это оптимизирующий компилятор из C, C++ и других языков в низкоуровневое представление, имеющее много общего с системой команд RISC-процессоров, а также трансляторы (статические и для преобразования "на лету") из этого промежуточного представления в команды обычных процессоров. LLVM поддерживает эффективную оптимизацию на этапах компиляции, компоновки (в том числе между процедурами) и выполнения, оставаясь "прозрачным" для разработчиков и сохраняя совместимость с существующими скриптами сборки.
Новое в версии 2.2:
генерация кода для процессоров Cell
экспериментальная поддержка преобразования Ada и FORTRAN через gcc-backend в промежуточное представление
поддержка типа long double на x86/x86_84 (80 бит) и Darwin PPC/PPC64 (128 бит)