29 сентября было объявлено о выходе корректирующего обновления свободной реализации языка программирования Common Lisp sbcl-2.4.9.
Пакет sbcl включает в себя компилятор, профайлер, дебаггер и другие полезные расширения. Распространяется как общественное достояние, с частями под лицензией MIT. Большая часть кода sbcl написана на Common Lisp. Официально поддерживаются платформы x86, x86-64, PowerPC, SPARC, Alpha, MIPS, HPPA, ARM с Linux, а также ряд других операционных систем на аппаратных плафтормах x86 и x86-64.
Изменения в выпуске 2.4.9:
Незначительное нарушение совместимости с предыдущими версиями: FIND, POSITION (и их варианты) теперь проверяют аргументы :START и :END на корректность как ограничивающие указатели индексов (bounding index designators) для последовательностей списков.
Поддержка платформ:
Улучшена поддержка Solaris и ее вариантов на x86 и x86-64 (благодарности Masatoshi SANO)
Исправлен баг в обработке таймаутов и прерванных системных вызовов в SB-UNIX:UNIX-SIMPLE-POLL (lp#2078824, благодарности Michał phoe Herda)
Исправлен баг в лисповом представлении ssize_t в Windows
Исправлено кодирование больших констант в RISC-V. (lp#2077307, благодарности Guillaume LE VAILLANT)
Более экономичные низкоуровневые типовые тесты на arm64
Сборка после выполнения git-archive должна завершаться без ошибок.
Исправлен баг: экспортирование символа во врема итерации пакета больше не пропускает другие символы. (lp#2080387, благодарности kbhit).
Оптимизация: улучшения в хэш-таблицах EQ и связанных хэш-функциях.
Оптимизация: проверка типа строки и строки-обозначения (string-designator) сделана более эффективной.
Оптимизация: компилятор лучше понимает природу результата CONCATENATE.
В пятницу 2-го августа вышел релиз re2c — свободного генератора лексических анализаторов для языков C и C++. Напомним, что re2c был написан в 1993 году Питером Бамбулисом как экспериментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встривать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов.
3 мая состоялся первый публичный выпуск девятой версии GCC: GCC 9.1.
Он содержит множество существенных улучшений и добавлений по сравнению с восьмой
версией.
Zapcc — компилятор языка C++, основанный на наработках LLVM/Clang, данный компилятор отличается высокой скоростью компиляции из-за применения активного кеширования в различных этапах сборки программы. Данный компилятор может выступать в качестве замены gcc и clang, также он поддерживает интеграцию с любыми системами сборок. Исходный код был открыт под лицензией LLVM и располагается на GitHub.
Данный компилятор заметно ускоряет компиляцию C++, но для C это не настолько заметно, к примеру сборка Boost.Math производится в 10 раз быстрее чем у clang, сборка Webkit происходит в 2-4 раза быстрее, сборка Clang при помощи Zapcc выполняется в два раза быстрее, чем самим Clang.
Высокая скорость компиляции достигается применением zapccs, непосредственно выполняющего компиляцию и поддерживающего в оперативной памяти кэш компиляции, в котором между разными запусками сохраняется информация о всех этапах сборки.
Спустя намеченный год после выхода предыдущего мажорного выпуска «Коллекции компиляторов ГНУ» [0], увидел свет GCC 8.1. Разработчики обещают свежие возможности и более жесткую оптимизацию.
Google представила транскомпилятор и runtime для языка программирования Python — Grumpy. Инструмент планируется использовать в качестве замены CPython из-за плохой масштабируемости последнего.
Продукты компании содержат десятки миллионов строк Python-кода. Так, для фронт- и API-серверов сервиса YouTube, обрабатывающих миллионы запросов в секунду, до сих пор использовался CPython 2.7.
Grumpy позволит транспилировать Python-код в Go, который в свою очередь будет компилироваться в нативный. Из преимуществ подобного подхода — лучшая масштабируемость и совместимость с Go, что может в конечном итоге способствовать плавной миграции на этот ЯП.
20 ноября вышел в свет Clasp 0.4 — новый релиз, включающий в себя совершенно новый компилятор, способный генерировать до 200 раз более быстрый код, чем его предшественник, так же улучшено взаимодействие с C++ и теперь реализация полнее соответствует стандарту ANSI Common Lisp.
Clasp — новая реализация Common Lisp с упором на легкое взаимодействие с библиотеками C++, используя LLVM для компиляции в нативный код, с целью использования большого количества существующих библиотек и программ. Встраивание их в среду Common Lisp'а позволяет воспользоваться
быстрым прототипированием, инкрементальной разработкой и другими возможностями, делающими Common Lisp столь мощным языком.
GDC — GNU версия фронтэнда для языка программирования D получила поддержку архитектуры ARM. В качестве бекэнда используется компилятор GCC. В настоящий момент поддержка ARM далеко не полная и в первую очередь акцентирована на программирование в Linux дистрибутивах работающих на архитектуре ARM. Однако уже сейчас компилятор успешно проходит все внутренние тесты. В ближайшее время планируется доработать поддержку программирования на Android и iOS, что позволит разработчикам использовать язык D для программирования смартофонов.
Это далеко не единственный прогресс в пользу поддержки языком архитектуры ARM. Буквально неделю назад было объявлено, что LDC (компилятор на базе LLVM) так же получил экспериментальную поддержку ARM.
На короткий период стал доступным для бесплатного скачивания и использования компилятор Intel C++ v13.0 для Android. Он ускоряет приложения на устройствах, работающих под Intel Atom. Чтобы увидеть улучшения иногда достаточно просто пересобрать проект. Рекомендованные ОС для запуска компилятора – Ubuntu 10.04 или 11.04, целевые платформы — Android Jelly Bean (4.3) и Ice Cream Sandwich (4.0). Работает только через командную строку, никакого GUI.
В сентябре компания Intel выпустила новые наборы инструментов для разработчиков программного обеспечения Studio XE 2013 и Composer XE 2013. Подробности о компонентах можно посмотреть на сайте Intel.
Основные изменения и улучшения:
Оптимизированная производительность компиляторов.
Поддержка процессоров Ivy Bridge, Haswell и Intel Xeon Phi.
Поддержка профилирования приложений Java с низкими затратами вычислительных ресурсов для повышения скорости профилирования в смешанном режиме.
Более десяти новых функций профилирования для более точной настройки приложений.
Инструмент Pointer Checker для обнаружения случаев переполнения буфера, которые могут привести к прекращению работы и нарушению защиты.
Анализ роста динамической памяти для определения свободных ресурсов памяти, которые не могут быть выявлены с использованием традиционных инструментов.
Библиотека MPI с улучшенной устойчивостью к отказам для повышения надежности работы кластеров.
Условная побитовая воспроизводимость.
Поддержка различных стандартов, включая C++ 11, Fortran 2008 и MPI 2.2.
Расширенная функция Parallelism Assistance для поддержки Linux, Fortran и C# помимо Windows и C/C++.
Компания PathScale открыла исходный код собственного компилятора EKOPath 4. До этого компилятор выпускался под проприетарной лицензией, стоимость одной лицензии составляла порядка $2000.
Основные возможности EKOPath 4
Генерирует значительно более быстрый код, чем GCC
Оптимизации под x86_64 (Intel® 64/AMD64, поддержка Intel® MMX™, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AMD SSE4A и AVX)
В прошлом октябре был анонсирован проект по адаптации LLVM компилятора CLang к сборке ядра Linux. С тех пор прошло более полугода, и на днях разработчики опубликовали свой отчет о проделанной работе.
В целом:
Удалось получить работающую сборку ядер 2.6.37 и 2.6.38 (для некоторых конфигураций)
KVM и Xen использовать нельзя, причем последний пока даже не компилируется
Компилируются примерно 90% драйверов ядра, многие работают
Некоторые поставляемые сторонними вендорами драйвера (Broadcom, NVIDIA) работают отлично
Можно использовать многопроцессорные конфигурации (правда, только на x86), однако в некоторых случаях они требуют дополнительных усилий по доработке компилируемого кода
Что не работает:
Ассемблер для генерации кода реального режима (директивы code16gcc), поэтому, невозможно откомпилировать код начальной загрузки (для этой цели используется gas)
GCC-расширения языка C (некоторые работают, некоторые нет)
Проект Portable C Compiler ставит своей целью создание альтернативы компилятору GCC для языка C под лицензией BSD. Проект берёт начало от оригинального компилятора C, использовавшегося в UNIX в семидесятые - восьмидесятые годы прошлого века. Компилятор отличают:
Заявлена работа в ОС Linux, *BSD, Windows, Mac OS X, Solaris. Поддерживаются платформы i386 и amd64, другие платформы — ограниченно.
Генерируемый код, в большинстве случаев, сравним по эффективности с кодом, производимым GCC. На данный момент компилятор собирает FreeBSD, NetBSD и ядро OpenBSD.
Некоммерческая огранизация BSD Fund, спонсор проекта, объявляет конкурс по успешной сборке ядра Linux при помощи PCC. Также в их планах фронтенды для языков Fortran (почти готов) и C++.
Состоялся новый релиз системы программирования 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.
Roman Divacky от имени команды ClangBSD написал сегодня в рассылку:
ClangBSD - это бранч FreeBSD, который нацелен на интегрирование clang в FreeBSD, и замену GCC как системного компилятора. Недавно, мы достигли этапа, когда clang может откомпилировать весь базовый сет FreeBSD на архитектурах i386/amd64 (включая все приложения на C++ и самого себя) и загружаемое ядро. Поэтому мы считаем, что пришло время попросить коммьюнити выполнить более широкое тестирование на i386/amd64 (вы также конечно можете помочь и с другими платформами :)).
Clang наконец-то способен откомпилировать сам себя!
Сегодня Clang впервые успешно выполнил бутстрап самого себя (более 550 тысяч строк на C++). Результирующие бинарники прошли все регрессионные тесты Clang и LLVM, а Clang, откомпилированный Clang'гом смог потом откомпилировать весь LLVM и Clang снова. Получившийся Clang (третий этап) также был полностью функциональным и таким образом завершил бутстрап.
Поздравляем всех разработчиков LLVM и Clang с этим важным этапом развития их проекта!
Не так давно вышел эталонный компилятор эффективного и производительного языка программирования D. Вот список основных изменений за последние несколько релизов:
Поддержка solaris.
Снижение ограничений на функции, выполняющиеся при компиляции.
Вывод информации о символах в формате json при передаче ключа -X
Обнаружение некоторых null-pointer dereference'ов при компиляции.
Глобальные переменные теперь thread-local по умолчанию
Около сотни багфиксов и добавления в стандартной библиотеке.
В подробностях ссылки на полную историю изменений и архивы.