LINUX.ORG.RU

Gcc


91

0

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

Широкая дискуссия о будущем GCC

Группа GNU's Not Unix

В прошедший вторник в список рассылки GCC попало одно письмо, вызвавшее множество ответов и даже интересное обсуждение о будущем GNU Compiler Collection, о его конечных целях и об их достижимости. В первом письме просто был задан вопрос о примерных сроках полной реализации стандарта ISO C++11. Но по мере разрастания нити Diego Novillo из Google, хорошо зарекомендовавший себя в роли разработчика GCC, даже высказал опасения, что GCC уже прошёл точку невозврата и ему грозит естественная смерть.

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

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

 ,

quiet_readonly
()

Статья «Внутренние функции компилятора GCC для обработки данных в векторной форме»

Группа Документация

Высокая скорость работы очень важна для мультимедийных и графических приложений, а также приложений, осуществляющих обработку сигналов. Компилятор GCC позволяет использовать промежуточный вариант между ассемблером и стандартным языком C, который позволяет повысить скорость работы приложения и использовать специфические возможности центрального процессора, не используя ассемблер: внутренние функции (compiler intrinsics). Эта статья описывает внутренние функции компилятора GCC, при этом выделяются принципы использования этих функций на примере трех платформ: X86 (используются технологии MMX, SSE и SSE2); Motorоla, а сейчас Freescale (используется технология Altivec); и ARM Cortex-A (используется технология Neon).

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

 ,

vikos
()

GCC переходит на С++ компиляцию самого себя с целью улучшения качества кода

Группа Open Source

Для начала изменен только bootstrap код. Цель — улучшение качества кода (поскольку С++ жестче работает с типами). Когда там появятся классы и темплейты?.. Официально заявленные причины использовать С++:

  • C++ — стандартизованный, популярный язык.
  • C++ — практически надмножество C90, используемого внутри GCC.
  • Совместимый с С C++ код так же эффективен, как просто код C.
  • C++ поддерживает более чистый код во многих важных ситуациях.
  • C++ позволяет легче создавать и поддерживать четкие интерфейсы.
  • C++ никогда не требует более кривого кода.
  • C++ не панацея, но улучшение.

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

 ,

svu
()

Попытка реинтеграции компилятора D в состав GCC

Группа GNU's Not Unix

Как можно заключить из сообщений в рассылке разработчиков gcc, к версии gcc 4.8 будет предпринята попытка официально ввести в состав gcc gdc — свободную реализацию компилятора языка D (digitalmars D).

D позиционируется как «системный язык программирования высокого уровня» и предоставляет как высокоуровневые возможности, включая присущие динамическим языкам, так и позволяет при необходимости задействовать характерные для системного программирования низкоуровневые особенности, включая ручное управление памятью. В известной степени D можно считать наследником C++, избавленным от неоднозначностей.

Так, средства метапрограммирования имеют ясный синтаксис и не порождают нечитаемых сообщений об ошибках. Язык поддерживает концепцию модулей. Скорость компиляции и сборки кода настолько высока, что D можно использовать вместо интерпретируемых языков (скрипты).

D не накладывает жёстких парадигменных ограничений и позволяет записывать код в обобщённом, объектно-ориентированном, функциональном и процедурном стилях, а так же их комбинации. Штатно предоставляются полные средства интроспекции. Дополнительно компилятор несёт в себе нечто вроде интерпретатора языка, позволяющего динамически добавлять/изменять методы во время исполнения.

Имеются средства прямого вызова функций, реализованных на языках C и C++.

В целом, D представляется интересным для программирующих пользователей, нуждающихся в современных выразительных средствах, но не имеющих возможности изучать все особые случаи C++.

Свободно доступен референсный компилятор dmd, однако он предназначен, скорее, для исследовательских целей. Появление штатного фронтенда D в наборе gcc позволяет надеяться на переход от чисто экспериментального применения этого интересного и мощного языка к широкому внедрению.

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

 , ,

glebiao
()

Релиз GCC 4.7.1

Группа GNU's Not Unix

Данная версия является первым корректирующим релизом ветки 4.7. Она содержит важные исправления регрессий и серьезных ошибок. Всего исправлено 117 ошибок по сравнению с 4.7.0.

Среди изменений отметим:

  • полноценную поддержка языка Go;
  • исправление ошибки 53599, приводящей к невозможности сборки boost.karma;
  • исправление ошибки 53046, приводящей к невозможности корректного прохождения тестов новых версий libstdc++;
  • исправление ошибки 52465 (невозможность использования директивы using в объявлении класса), приводящей к невозможности сборки Webkit;
  • исправление ошибки 52473 (невозможность использования перегружаемых функций).

Список исправленных ошибок

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

 ,

unfo
()

Вышел GCC Explorer

Группа GNU's Not Unix

GCC Explorer — это новый интерактивный компилятор, созданный на базе GCC Мэттом Годбольтом (Matt Godbolt). Он довольно прост в использовании и поддерживает популярные языки программирования C и C++. GCC Explorer основан на технологиях AJAX, следовательно любое изменение исходного кода и/или флагов сразу же запустит обновление окна с результатами компиляции.

Этот компилятор существует в виде web-приложения реального времени, в котором можно написать/выполнить любой фрагмент кода. Используя GCC Explorer можно практически мгновенно оценить результаты своей работы, а также окинуть взглядом присутствующие ошибки и недочеты в коде, и затем — быстро исправить их, смеясь в лицо «задумчивости» обычных компиляторов.

>>> Исходники на GitHub

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

 , ,

PrikPavel
()

FreeBSD 10 отказывается от GCC в пользу CLANG

Группа BSD

Как отмечено в Q1-2012 FreeBSD Status Report, LLVM компилятор Clang стремительно замещает GCC для этой популярной BSD ОС. Разработчики заметно продвинулись в построении C++11-стека, свободного от GNU. К релизу FreeBSD 10 они планируют сделать Clang С/С++ компилятором по умолчанию, отказавшись от GCC, и получить стек разработки на C++ под лицензией BSD.

Q1-2012 FreeBSD Status Report
http://wiki.freebsd.org/BuildingFreeBSDWithClang

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

 , , ,

power
()

25 лет GCC и выпуск 4.7.0

Группа GNU's Not Unix

Состоялся выпуск GCC версии 4.7.0, приуроченный к 25-летней годовщине проекта.

Основные изменения в этой версии:

  • Поддержка транзакционной памяти на некоторых архитектурах.
  • Расширена поддержка C++11, включая атомарные операции и модель памяти.
  • OpenMP 3.1.
  • Улучшение оптимизации во время компоновки (Link Time Optimization).
  • Новые расширения для отладки кода.
  • Добавлена поддержка архитектур Adapteva's Epiphany, National Semiconductor's CR16, TI's C6X, Tilera's TILE-Gx и TILEPro.
  • Поддержка Intel Haswell и AMD Piledriver; Cortex-A7 (ARM).

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

 , ,

maxcom
()

Debian: clang способен заменить gcc

Группа Open Source

Sylvestre Ledru провел эксперимент по сборке репозитория Debian с помощью компилятора clang. Вопреки ожиданиям, результаты оказались обнадеживающими:

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

В ближайшие несколько лет, учитывая лучшие инструмены статического анализа кода, clang может заменить gcc/g++ как компилятор C/C++ по умолчанию в дистрибутивах Linux и BSD.

Разработчики clang продвигаются очень быстро: с версией 2.9 не собиралось 14.5% пакетов, а с 3.0 - 8.8%. Сделаны существенные шаги: chromium/chrome собираются по умолчанию с помощью clang, Xcode по умолчанию предоставляет clang, FreeBSD работает над переходом с gcc на clang и т. д.

Однако для Debian важно, чтобы clang справлялся со всеми поддерживаемыми архитектурами (11 официальных, 6 неофициальных).

Собрать не удалось 1381 пакет из 15658. Самая частая причина неудачи - более строгое следование стандартам со стороны clang.

Найденные баги будут отправлены в багтрекер Debian вместе с патчами. Автор исследования продолжит тестировать новые версии clang.

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

 , ,

unsigned
()

GMP 5.0.2 — The GNU Multiple Precision Arithmetic Library

Группа GNU's Not Unix

Спустя 15 месяцев после выхода предыдущей версии, 8 мая 2011 года была опубликована версия 5.0.2 свободной открытой библиотеки для расчётов с произвольной точностью над целыми числами, рациональными дробями и числами с плавающей запятой GMP - The GNU Multiple Precision Arithmetic Library.

GMP является частью проекта GNU и распространяется на условиях GNU LGPL.

GMP находит применение в криптографических приложениях, научных исследованиях, алгебраических системах итп.

GMP написана с использованием языка ассемблера и C. При этом GMP считается одной из самых быстрых среди себе равных, как при вычислениях с операндами малой разрядности, так и при расчётах с большим количеством разрядов, благодаря оптимизированному коду и использованию асимптотически оптимальных алгоритмов.

Функции в GMP поделены на категории для удобства использования:

  • mpz - высокоуровневые арифметические и логические функции для операций над знаковыми целыми числами (около 140).
  • mpq - высокоуровневые арифметические функции для операций над рациональными дробями (около 35).
  • mpf - высокоуровневые арифметические функции для операций над числами с плавающей точкой (около 65) для вычислений с точностью не ниже двойной.
  • C++ классы для интерфейса к функциям категорий mpz, mpq, mpf.
  • mpn - низкоуровневые функции для операции с беззнаковыми целыми числами с менее удобным вызовом, но низкими накладными расходами. Используются функциями вышеперечисленных категорий.
  • mpfr - отдельно поддерживаемые и разрабатываемые высокоуровневые арифметические функции для операций над числами с плавающей точкой с высокоточным округлением.

В полном списке изменений, который можно найти в архиве с исходными кодами, всего около 30 изменений, большая часть из которых внесена автором и главным разработчиком GMP Торбйоном Гранлундом (Torbjörn Granlund), также известным соавторством во многих утилит командной строки в Linux (cp,split), авторством GNU superoptimizer'a, а также участием в разработке gcc.
Изменения главным образом касаются исправления ошибок, включения поддержки HPPA 2.0N, ОС Darwin и новых процессоров.

В вышедшем выпуске осталась проблема при компиляции с gcc 4.3.2 на 64-битных архитектурах. При этом проблем с компиляцией, например, с gcc 4.3.1 или gcc 4.3.3, не замечалось. Кстати тот факт, что именно gcc 4.3.2 был включен в поставку Debian Lenny, было и остаётся источником потока багрепортов в рассылку проекта.

GMP используется в библиотеке MPFR и, соответственно, в gcc.

На странице проекта можно ознакомиться с документацией, другой важной информацией для разработчиков и забавной программой для расчёта миллиона знаков числа пи с помощью GMP.

>>> Исходный код GMP

>>> Краткий список изменений

>>> Страница проекта GMP

 , , , , ,

adriano32
()

Вышел PCC 1.0

Группа Open Source

Проект Portable C Compiler ставит своей целью создание альтернативы компилятору GCC для языка C под лицензией BSD. Проект берёт начало от оригинального компилятора C, использовавшегося в UNIX в семидесятые - восьмидесятые годы прошлого века. Компилятор отличают:

  • полная поддержка стандарта C99;
  • малый размер (640 КБ в архиве) и простой код;
  • быстрая компиляция.

Заявлена работа в ОС Linux, *BSD, Windows, Mac OS X, Solaris. Поддерживаются платформы i386 и amd64, другие платформы — ограниченно.

Генерируемый код, в большинстве случаев, сравним по эффективности с кодом, производимым GCC. На данный момент компилятор собирает FreeBSD, NetBSD и ядро OpenBSD.

Некоммерческая огранизация BSD Fund, спонсор проекта, объявляет конкурс по успешной сборке ядра Linux при помощи PCC. Также в их планах фронтенды для языков Fortran (почти готов) и C++.

Архитектура PCC (на английском)

Объявление о релизе

>>> Домашняя страница

 , , , ,

unsigned
()

GCC 4.6.0

Группа GNU's Not Unix

Вышла новая версия GNU Compiler Collection — 4.6.0.

Новшества:

  • улучшения в использовании памяти и скорости компиляции;
  • поддержка языка программирования Go;
  • новый уровень оптимизации -Ofast, который включает в себя все ключи из -O3 и ключи, позволяющие получить ещё более оптимизированный код, например -ffast-math;
  • улучшения в LTO (Link-Time Optimization);
  • улучшения в IPO (межпроцедурная оптимизация);
  • на 32-х битных системах теперь по умолчанию задействован ключ -fomit-frame-pointer (кроме -Os).

Добавлена поддержка следующих процессоров:

  • Intel Core i3/i5/i7 (-march=corei7, -mtune=corei7);
  • Intel Core i3/i5/i7 с новым набором инструкций — AVX (-march=corei7-avx, -mtune=corei7-avx);
  • AMD Bobcat (-march=btver1, -mtune=btver1).

Анонс

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

 , ,

megabaks
()

H.J. Lu анонсирует x32-abi

Группа Linux General

Сегодня один из ведущих инженеров Intel, занимающихся разработкой для Linux, H.J. Lu, сообщил о прогрессе в разработке ответвления архитектуры x86_64 — x32-abi (x32-psABI). Данная архитектура, являясь 64-битной и использующей практически все преимущества x86_64, тем не менее, предлагает 32-битный размер указателей, и, возможно, будет востребованной для устройств и систем не обладающих большими объёмами оперативной памяти.

В настоящее время ведутся работы над:

  • портом ядра (Linux) на новую архитектуру (практически готово);
  • binutils, добавлена поддержка в версию 2.21.51.0.6;
  • GCC (стабилизация);
  • Bionic libc.

Следующим этапом должно стать создание порта Glibc.

Проектом занимаются инженеры Intel, SuSE и Codesourcery : H.J. Lu, Milind Girkar, Michael Matz, Jan Hubicka, Andreas Jaeger и Mark Mitchell.

Доступна техническая документация.

Проекту требуется помощь в тестировании и разработке.

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

 , , , , , , , x32-psabi,

Sylvia
()

Несовместимость версий GPL

Группа Open Source

Сегодня я прочитал, с опозданием всего на год, претензии к исключениям для библиотек времени выполнения в gcc. Проблема в следующем: данные исключения позволяют лицензировать бинарный продукт под любой лицензией, но GPLv2 требует, чтобы соответствующий исходный код был выложен под GPLv2-совместимой лицензией, в то время как библиотеки времени выполнения идут под лицензией GPLv3 + исключения. Казалось бы, тут можно сказать, что libgcc — это «системная библиотека» в терминах лицензии, но и тут подвох: исключение в GPLv2 для системных библиотек действует, судя по всему, только если они не распространяются вместе с программой. Таким образом, в дистрибутив нельзя класть gcc версии 4.4.0 и старше вместе со скомпилированными им GPLv2-only программами.

Тут сразу возникает два вопроса: решена ли эта проблема? Я не нашел решения, кроме «мы считаем, что если разработчик использует в продукте библиотеки с несовместимыми GPL-лицензиями, то он неявно даёт разрешение на линковку с ними, но лучше, если бы он давал их явно» в gpl-faq. И второй вопрос: на сколько я помню, в комплекте SFU были какие-то куски GPLv2-кода. SFU распространяется в комплекте с Windows Vista Ultimate. Не являются ли эти два факта нарушением GPL cо стороны MS?

gcc exception

Совместимость лицензий

>>> GPLv2

 ,

wlan
()

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

Группа Open Source

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

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

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

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

>>> Оригинал

 , , ,

catap
()

Разрешено использование C++ в GCC

Группа GNU's Not Unix

Вчера в списке рассылки GCC появилось важное сообщение по поводу использования языка программирования C++ при разработке GCC (GNU Compiler Collection, а не сам компилятор языка C).

Марк Митчелл (Mark Mitchell), один из основных разработчиков GCC:

Я рад сообщить, что руководящий комитет GCC и FSF одобрили использование C++ в самом GCC. Конечно, нет никаких причин использовать возможности С++ только потому, что мы умеем это делать. Главная цель - предоставить пользователям более качественные компиляторы, а не кодовую базу на C++ для самих себя.

Перед тем, как мы действительно начнём использовать C++, мы должны определиться с набором правил, которыми нужно будет руководствоваться при использовании C++ для разработки GCC. Я считаю, что для начала мы должны минимизировать список разрешённых возможностей С++, чтобы не подвергать разработчиков GCC, не знакомых с C++, таким резким переменам в основном языке разработки компиляторов. Мы всегда сможем расширить использование С++ позднее, если появится такая необходимость.

На данный момент разработчики ограничиваются стандартом C++98 и использованием типа long long для 64-битных целых чисел. Использование множественного наследования, шаблонов (тех, которые не входят в стандартную библиотеку C++) и исключений, скорее всего, будет запрещено. Это мотивировано тем, что это будет сложно для программистов на C, а также тем, что сами программисты C++ могут с лёгкостью допустить ошибки в таких вещах.

Так как язык C++ достаточно обширен, то Марк Митчелл предложил составить список того, что разрешается использовать, а не того, что использовать нельзя. На данный момент необходимо составить некоторые информационные нормативы, а не очередной стандарт ISO.

Все желающие поучаствовать в разработке нормативов могут связаться с разработчиками GCC. На данный момент предполагается сделать это в виде странички в Wiki.

>>> Официальный анонс

 , , , , ,

MuZHiK-2
()

Google выпустил Native Client SDK

Группа Open Source

Native Client - это кроссплатформенная технология с открытым исходным кодом от Google, позволяющая запуск нативного кода C/C++ в браузере. SDK основан на GNU Compiler Collection и доступен для Linux, Windows и Mac OS X. Поддерживаемые платформы x86, x86_64 и ARM. Разработчики заявляют, что технология Native Client безопаснее Flash и JavaScript, а так же значительно превосходит их по скорости выполнения. На текущий момент доступны клиент-плагины для браузеров Chrome, Safari, Firefox, и Opera.

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

 , ,

tr0ll
()

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
()

GCC 4.5.0 released

Группа GNU's Not Unix

GNU и команда разработки GCC рады представить релиз GNU Compiler Collection версии 4.5

В новой версии:

  • Добавлена поддержка плагинов позволяющих менять функциональность компиляторов без пересборки GCC
  • Поддержка оптимизации при компоновке (LTO)
  • Добавлена поддержка библиотеки MPC для улучшения математическо-расчетной части компилятора
  • Поддержка Intel Atom, а также наборов инструкций для новейших процессоров Интел и AMD (XOP,FMA4,MOVBE,LWP)
  • Поддержка новых процессоров ARM, AVR, Coldfire, Atmega, MeP, MIPS, Picochip (см. подробности)
  • Улучшения стандарта C++0x в libstdc++
  • Значительно улучшена подсистема векторизации и параллелизации кода Graphite
  • много других изменений

Анонс релиза

>>> Подробности изменений

 , ,

Sylvia
()

GCC-плагин DragonEgg прошёл тест на самосборку

Группа Open Source

Разработчики проекта 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.

Запись в блоге LLVM

>>> Взято с Opennet.ru

 , , ,

jeuta
()