<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Релиз набора компиляторов GCC 4.7]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=21127</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=21127&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Релиз набора компиляторов GCC 4.7».]]></description>
		<lastBuildDate>Fri, 23 Mar 2012 06:45:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Релиз набора компиляторов GCC 4.7]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=261993#p261993</link>
			<description><![CDATA[<p>Отлично. Теперь можно пинать разработчиков, чьи программы не собираются новым gcc <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p>]]></description>
			<author><![CDATA[null@example.com (Vascom)]]></author>
			<pubDate>Fri, 23 Mar 2012 06:45:54 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=261993#p261993</guid>
		</item>
		<item>
			<title><![CDATA[Релиз набора компиляторов GCC 4.7]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=261859#p261859</link>
			<description><![CDATA[<p>После года разработки и спустя 25 лет после основания проекта представлен релиз новой ветки свободного набора компиляторов <a href="http://gcc.gnu.org/">GCC 4.7</a>, развиваемого проектом GNU. В новой версии реализованы новые методы оптимизации, прекращена поддержка устаревших систем, расширена поддержка стандартов C++11 и C11, реализована поддержка транзакционных блоков для C/C++, улучшена поддержка языка Google Go, обеспечена поддержка процессоров ARM Cortex-A7, Intel Ivy Bridge, Intel Haswell и AMD Fusion Piledriver.</p><p>Основные <a href="http://gcc.gnu.org/gcc-4.7/changes.html">изменения</a>:</p><ul><li><p>Улучшения в оптимизации кода:</p><ul><li><p>Улучшение фреймворка для оптимизации во время динамического связывания (LTO - Link Time Optimization) - проведена работа по увеличению масштабируемости, повышению стабильности и сокращению потребления ресурсов. Например, при использовании LTO для Firefox на 64-разрядной системе достаточно 3 Гб ОЗУ, в то время как ранее требовалось 8 Гб.</p></li><li><p>Ускорены операции связывания (linking). Например, связывание компонентов Firefox ускорилось в 10 раз. Сокращён размер объектных файлов и уменьшено дисковое пространство, необходимое для хранения временных данных в процессе связывания;</p></li><li><p>Улучшены эвристические методы inlinе-раскрытия функций, дополнительно учитывающие известные значения параметров функции. Например, для кода<br /><em>void foo(int a) {<br />&nbsp; &nbsp; if (a&gt;10)<br />&nbsp; &nbsp; &nbsp; &nbsp; ... много кода ...<br />}<br />void bar (void) {<br />&nbsp; &nbsp; foo (0);<br />}</em><br />код функции foo будет развёрнут внутри bar, даже в ситуации вколчения режима оптимизации по размеру (изначально известно что блок &quot;много кода&quot; при нулевом аргументе никогда не будет вызван).</p></li><li><p>Улучшены внутрипроцедурные оптимизации размещения констант. Например, при компиляции кода<br /><em>void foo(bool flag) {<br />&nbsp; &nbsp; if (flag)<br />&nbsp; &nbsp; &nbsp; &nbsp; ... do something ...<br />&nbsp; &nbsp; else<br />&nbsp; &nbsp; &nbsp; &nbsp; ... do something else ...<br />}<br />void bar (void) {<br />&nbsp; &nbsp; foo (false);<br />&nbsp; &nbsp; foo (true);<br />&nbsp; &nbsp; foo (false);<br />&nbsp; &nbsp; foo (true);<br />&nbsp; &nbsp; foo (false);<br />&nbsp; &nbsp; foo (true);<br />}</em><br />GCC сгенерирует две копии функции foo: одна для флага true, другая для флага false;</p></li><li><p>Добавлены новые оптимизации строковых операций, основанные на отслеживании размера строк и пытающиеся оптимизировать использование функций strlen, strchr, strcpy, strcat и stpcpy. Например, оптимизатор заменит &quot;strcpy (a, b); strcat (a, c); strcat (a, d);&quot; на &quot;strcpy (stpcpy (stpcpy (a, b), c), d);&quot;;</p></li></ul></li><li><p>Изменения в поддержке языков C и C++:</p><ul><li><p>В компиляторе C++ обеспечена поддержка большей части стандарта ISO C++11, включая поддержку атомарных операций, модели памяти C++11, нестатических инициализаторов членов классов, определяемых пользователем литералов, псевдонимов-деклараций, вызова конструкторов класса из других конструкторов этого же класса, расширенного синтаксиса декларатора классов friend и т.п. В runtime-библиотеке libstdc++ обеспечена экспериментальная поддержка C++11. Управление поддержкой C++11 осуществляется через опции -std=c++11, -std=gnu++11 и -Wc++11-compat;</p></li><li><p>В компиляторе Си добавлена поддержка дополнительных элементов, определённых в стандарте <a href="http://www.opennet.ru/opennews/art.shtml?num=32644">ISO C11</a>, например, Unicode-строки, выравнивание (_Alignas), не возвращающие значения функции, макросы CMPLX. Управление поддержкой C11 осуществляется через опции -std=c11 и -std=gnu11;</p></li><li><p>Экспериментальная поддержка в компиляторе <a href="http://gcc.gnu.org/wiki/TransactionalMemory">транзакционной памяти</a> и создание сопутствующей библиотеки libitm. Транзакционная память определяется конструкцией __transaction_atomic { ... } и <a href="http://lwn.net/Articles/466513/">позволяет</a> обеспечить атомарное выполнение блока кода, все результаты работы которого будут или полностью видны для других нитей или невидны совсем. Поддержка транзакционной памяти пока обеспечена для платформ x86-32, x86-64 и Alpha, для включения поддержки при сборке следует использовать опцию &quot;-fgnu-tm&quot;;</p></li></ul></li><li><p>Улучшения в поддержке процессорных архитектур:</p><ul><li><p>Поддержка процессоров ARM Cortex-A7 (опция для включения -mcpu=cortex-a7), Texas Instruments C6X, Tilera TILE-Gx и TILEPro, Adapteva Epiphany, National Semiconductor CR16,</p></li><li><p>Поддержка семейств процессоров Intel Ivy Bridge (-march=core-avx-i), Intel Haswell (-march=core-avx2) и AMD 15h/Piledriver (-march=bdver2). Процессоры Intel Haswell поступят в продажу только в следующем году и будут отличаться поддержкой расширенных инструкций AVX2, FMA, BMI, BMI2 и LZCNT;</p></li><li><p>Поддержка расширенных наборов инструкций процессоров IA-32/x86-64: Intel AVX2 (-mavx2), Intel BMI2 (-mbmi2), Intel FMA3 (-mfma), Intel rdrnd (-mrdrnd), дополнительных векторных преобразований AVX (-mf16c);</p></li><li><p>Поддержка архитектуры семейства микроконтроллеров XMEGA AVR (ATxmegaxxx);</p></li></ul></li><li><p>Разное:</p><ul><li><p>Предварительная поддержка первой версии <a href="http://weekly.golang.org/doc/go1.html">стандарта</a> языка программирования Go. Довести до конца поддержку всех элементов спецификации планируется в выпуске GCC 4.7.1;</p></li><li><p>Поддержка различных расширений GNU для отладочного формата DWARF, таких как контроль входящих значений и получение информации о вызовах. Поддержка данных расширений ожидается в GDB 7.4;</p></li><li><p>Большая порция улучшений для языка Фортран;</p></li><li><p>Поддержка в компиляторах C, C++ и Fortran спецификации <a href="http://openmp.org/wp/openmp-specifications/">OpenMP 3.1</a>.</p></li></ul><ul><li><p>Нюансы:Объявлены устаревшими и будут удалены в следующих выпусках порты IRIX 6.5 (mips-sgi-irix6.5), MIPS OpenBSD (mips*-*-openbsd*), Solaris 8 (*-*-solaris2.8) и Tru64 UNIX V5.1 (alpha*-dec-osf5.1*).</p></li><li><p>Переведены в разряд устаревших порты ARM, поддерживающие только устаревший акселератор вычислений с плавающей запятой (FPA) и смешанный формат кодирования чисел с плавающей запятой. Большинство портов для устаревших систем ARM будет сохранено, так как они поддерживают альтернативный формат кодирования чисел с плавающей запятой (VFP). Среди подлежащих скорому удалению портов, для которых есть остающиеся в составе альтернативы: arm*-*-rtems (замена arm*-*-rtemseabi), arm*-*-linux-gnu (замена arm*-*-linux-gnueabi), arm*-*-elf (замена arm*-*-eabi), arm*-*-uclinux* (замена arm*-*-uclinux*eabi). Устаревшие порты для которых нет замены на базе VFP: arm*-*-ecos-elf, arm*-*-freebsd, arm*-wince-pe*;</p></li><li><p>Объявлена устаревшей поддержка сопроцессора Maverick для ARM;</p></li><li><p>Удалена поддержка конфигурации для NetWare x86;</p></li><li><p>Убрана поддержка архитектур, <a href="http://www.opennet.ru/opennews/art.shtml?num=30035">объявленных</a> устаревшими в GCC 4.6.0;</p></li></ul></li></ul><p><a href="http://www.opennet.ru/opennews/art.shtml?num=33424">Источник »</a><br /><a href="http://permalink.gmane.org/gmane.comp.gcc.devel/125441">Главная ссылка к новости »</a></p>]]></description>
			<author><![CDATA[null@example.com (XRevan86)]]></author>
			<pubDate>Thu, 22 Mar 2012 17:38:32 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=261859#p261859</guid>
		</item>
	</channel>
</rss>
