Вышла сборка GCC 15.2.0 для Symbian
В комплекте идут Binutils 2.29.1 и GDB 10.2. Для желающих собрать самим – использовать скрипты в архиве GCC4Symbian.zip(проверено на Devuan). Для Windows выложена готовая сборка.
Качать на sourceforge.
Всего сообщений: 57
В комплекте идут Binutils 2.29.1 и GDB 10.2. Для желающих собрать самим – использовать скрипты в архиве GCC4Symbian.zip(проверено на Devuan). Для Windows выложена готовая сборка.
Качать на sourceforge.
После долгого и тяжелого труда вышла сборка GCC 14.2.0 в которой были исправлены ошибки сборки и добавлен ряд улучшений. В состав также вошли Binutils 2.29.1 и GDB 10.2.
Для Windows доступна в виде исполняемых файлов, для сборки на Linux-системах прилагается bash-сценарий.
Улучшения:
__SYMBIAN32__;operator delete ( void* ptr, std::size_t sz ) noexcept;.Для поддержки современных стандартов C++ в папке fixed_headers находятся два заголовочных файла: gcce.h и e32cmn.h. Первый подходит ко всем SDK на базе Symbian 9, второй совместим лишь с несколькими SDK и исходниками Symbian 3. Для установки следует использовать install_headers.py
Макрос __SYMBIAN32__ предназначен для изоляции кода предназначенного для Symbian. По умолчанию задается системой сборки SDK или через прараметры компилятора если используется другая система сборки. Теперь будет немного легче тем, кто использует другие системы сборки.
«The common predefined macros are GNU C extensions» ©GCC мануал – предоставлен полный набор макросов для типов фиксированного размера.
Исправления:
Начиная с 5 версии, GCC собирался только при помощи make -k, без оного начинал требовать crtfastmath.o, и на этом сборка заканчивалась. Это при том, что этот файл не компилируется для SOFTFP (в этом режиме программе все равно – FPU реальный или эмулиремый!). С указанным ключом собиралось все, кроме freestanding libstdc++ и GDB.
Качать здесь.
>>> Подробности
В основной состав GCC принят фронтэнд m2 и библиотека libgm2, позволяющие использовать штатный инструментарий GCC для сборки программ на языке программирования Modula-2. Поддерживается сборка кода, соответствующего диалектам PIM2, PIM3 и PIM4, а также принятому ISO-стандарту для данного языка. Изменения включены в ветку GCC 13, релиз которой ожидается в мае 2023 года.
Modula-2 разработан в 1978 году Никлаусом Виртом, продолжает развитие языка Pascal и позиционируется как язык программирования для высоконадёжных промышленных систем (например, применяется в ПО для спутников ГЛОНАСС). Modula-2 является предшественником таких языков, как Modula-3, Oberon и Zonnon. Помимо Modula-2 в состав GCC включены фронтэнды для языков C, C++, Objective-C, Fortran, Go, D, Ada.
Также было одобрено включение фронтэнда для Rust. Разработчикам gccrs рекомендовано начать работу с командами, отвечающими за рецензирование изменений и подготовку релизов GCC, для проведения финальной проверки и одобрения патчей с точки зрения соблюдения технических требований к коду, добавляемому в GCC. В случае, если разработка gccrs продолжится в соответствии с ранее намеченным графиком и не будет выявлено непредвиденных проблем, фронтэнд для языка Rust будет интегрирован в состав выпуска GCC 13, намеченного на май следующего года. Реализация Rust в GCC 13 будет иметь статус бета-версии, пока не включаемой по умолчанию.
Ричард Столлман опубликовал электронную книгу «Введение и справочное руководство по GNU C».
Труд за авторством Столлмана, Трэвиса Ротвелла и Нэльсона Биба распространяется по лицензии GFDL-1.3 и позиционируется одновременно и как введениие в язык C, и как справочник непосредственно по диалекту GNU C (т.е. включающему gnu-расширения gcc).
RMS просит сообщать о найденных ошибках, неточностях и непонятных, либо неоднозначно написанных пассажах.
>>> Подробности
GCC - это набор компиляторов языков программирования от GNU.
Релиз GCC 12.1 ожидается в апреле 2022.
GCC 12 уже является системным компилятором Fedora 36. Также GCC 12 доступен в Red Hat Enterprise Linux в Red Hat Developer Toolset (версии 7) или Red Hat GCC Toolset (версии 8 и 9).
В GCC 12
улучшили поддержку OpenMP 5.0
реализовали поддержку ADA 2022 (флаг -gnat2022)
реализовали некоторые возможности следующего стандарта С: C2X (флаг -std=c2x или -std=gnu2x)
реализовали часть возможностей С++23.
Более подробное описание реализованного только про новые возможности компилятора С++ без учёта стандартной библиотеки.
В GCC 12 реализовали часть возможностей C++23. Без указания флага стандарта в g++-12 используется -std=gnu++17, чтобы использовать возможности описываемые далее нужно компилировать с флагами -std=c++23 или -std=gnu++23.
Реализованные возможности C++23:
if constevalХотя уже в C++20 появились consteval функции, которые могут выполнятся только во время компиляции и был std::is_constant_evaluated (), но была проблема их совместного использования
#include <type_traits>
int slow (int);
consteval int fast (int n) { return n << 1; }
constexpr int fn (int n)
{
if (std::is_constant_evaluated ())
return fast (n); // 'n' is not a constant expression
else
return slow (n);
}
constexpr int i = fn (10);
https://godbolt.org/z/Yhbqq6K36
P1938R3 представил if consteval который позволяет использовать consteval функции внутри constexpr:
#include <type_traits>
int slow (int);
consteval int fast (int n) { return n << 1; }
constexpr int fn (int n)
{
if consteval {
return fast (n); // OK
} else {
return slow (n);
}
}
constexpr int i = fn (10);
https://godbolt.org/z/Kxs6Wjfq6
Заметьте что if consteval требует {} в отличие от обычного if, и что if consteval может быть в обычной не constexpr функции.
auto(x)
GCC 12 реализовал P0849 который позволяет auto каст в prvaluestruct A {};
void f(A&); // #1
void f(A&&); // #2
A& g();
void h()
{
f(g()); // calls #1
f(auto(g())); // calls #2 with a temporary object
}
https://godbolt.org/z/x7hn5GKEx
Заметьте что и auto(x) и auto{x} допустимы, хотя decltype(auto)(x) остаётся неверным.
Non-literal переменные в constexpr функциях
GCC 12 реализовал P2242R3, который позволяет non-literal переменным, goto, и меткам быть в constexpr функциях если выполнение во время компиляции не доходит до этих мест.#include <type_traits>
template<typename T> constexpr bool f() {
if (std::is_constant_evaluated()) {
return true;
} else {
T t; // OK when T=nonliteral in C++23
return true;
}
}
struct nonliteral { nonliteral(); };
static_assert(f<nonliteral>());
https://godbolt.org/z/6xnzM46Ej
constexpr int
foo (int i)
{
if (i == 0)
return 42;
static int a;
thread_local int t;
goto label;
label:
return 0;
}
static_assert(foo(0) == 42);
https://godbolt.org/z/PGsErnE4n
struct S {
int a[64];
constexpr S () : a {} {};
constexpr S (int x, int y, int z) : a {x, y, z} {};
constexpr int &operator[] () { return a[0]; }
constexpr int &operator[] (int x) { return a[x]; }
constexpr int &operator[] (int x, long y) { return a[x + y * 8]; }
};
void g ()
{
S s;
s[] = 42;
s[5] = 36;
s[3, 4] = 72;
}
https://godbolt.org/z/nnGead631
Заметьте что operator[] сейчас не поддерживает аргументов по умолчанию. Рабочая группа рассматривает CWG2507 , и если она примет предложенное решение проблемы, то в будущем такой код будет валиден:
struct X {
int a[64];
constexpr int& operator[](int i = 0) { return a[i]; }
};
#ifdef и #ifndef это синтаксический сахар для #if defined(something) и #if !defined(something). Для вариантов с else не было такого синтаксического сахара. Так что его добавили в С++23(и в С2X) и GCC 12: P2334R1#ifdef __STDC__
/* ... */
#elifndef __cplusplus
#warning "not ISO C"
#else
/* ... */
#endif
https://godbolt.org/z/z4hbj6M7q
if, for, switch) позволяя им содержать объявление псевдонимов. На практике это означает что теперь валиден подобный код:for (using T = int; T e : v)
{
// use e
}
Также можете ознакомиться с описанием исправлений и новыми предупреждениями в GCC 12 в оригинальной статье
Iain Buclaw, разработчик компилятора D для GCC сообщил, что версия gcd синхронизирована с основной разработкой. gcd переведён с C++ на D, для сборки теперь требуется инсталляция gcc с работающим компилятором D.
Синхронизация разрабатываемой версии gdc и основного репозитория dmd будет проводиться до конца марта и вплоть до заморозки релиза GCC 12.
Работа компилятора была проверена на следующих платформах:
>>> Подробности
12 января компания Open Source Security, известная разработкой grsecurity, объявила о спонсировании разработки фронтенда к компилятору GCC для поддержки языка программирования Rust — gccrs.
Изначально gccrs разрабатывался параллельно с оригинальным компилятором Rustc, но из-за отсутствия спецификаций к языку и частых ломающих совместимость изменений на раннем этапе разработка была временно заброшена и возобновилась только после выхода Rust 1.0.
Open Source Security мотивируют своё участие возможным появлениям кода на Rust в ядре Linux и тем, что ядро собирается чаще всего компилятором gcc. Дополнительно к этому, программы на нескольких языках сразу могут иметь уязвимости, вызванные именно этим фактом (см. Exploiting Mixed Binaries), которых бы не было в программах на чистом C или C++.
На данный момент Open Source Security спонсируют работу одного разработчика, который будет работать над gccrs в течение следующего года, с возможностью выделения средств на увеличение штата. Так же в процессе участвует британская компания Embercosm, специализирующаяся на разработке GCC и LLVM и предоставившая оформление официального трудоустройства разработчиков для данной инициативы.
>>> Подробности
12 марта был опубликован выпуск GCC 9.3.
GCC (GNU Compiler Collection) включает в себя компиляторы и стандартные библиотеки для языков C, C++, Objective-C, Fortran, Ada, Go, и D.
В выпуске представлено более 157 исправлений, среди них 48 исправлений для компилятора C++, 47 - для компилятора Fortran и 16 - для libstdc++.
>>> Подробности
3 мая состоялся первый публичный выпуск девятой версии GCC: GCC 9.1. Он содержит множество существенных улучшений и добавлений по сравнению с восьмой версией.
( читать дальше... )
>>> Серия релизов девятой ветки GCC
>>> Подробности
Спустя намеченный год после выхода предыдущего мажорного выпуска «Коллекции компиляторов ГНУ» [0], увидел свет GCC 8.1. Разработчики обещают свежие возможности и более жесткую оптимизацию.
( читать дальше... )
>>> info-gnu@gnu.org
После шести месяцев разработки представлен релиз проекта LLVM 5.0 (Low Level Virtual Machine) — GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.
Напомним, что в соответствии с новой нумерацией версий осуществлён уход от разделения значительных и функциональных выпусков. В каждом функциональном обновлении теперь меняется первая цифра (например, весной следующего года состоится релиз LLVM 6.0.0). Для обеспечения совместимости с существующими системами разбора номеров версий LLVM корректирующие обновления, как и раньше приводят к увеличению третьей цифры (5.0.1, 5.0.2, 5.0.3).
Из новых возможностей LLVM 5.0 отмечается полная реализация стандарта C++17, поддержка сопрограмм в C++, реализация GNU-расширения для неявного скалярного преобразования в вектор, новые оптимизации и средства диагностики ошибок.
Новшества в Clang:
typedef unsigned v4i32 __attribute__((vector_size(16)));
v4i32 foo(v4i32 a) {
return a + 5;
}
class MyClass
: public X
, public Y {
};
/* line 1
* line 2
*/
namespace A {
int i;
int j;
} // namespace A
Основные новшества LLVM 5.0:
>>> Подробности
Дэвид Эделсон (David Edelsohn), руководитель группы оптимизации GCC в IBM Research, объявил об одобрении включения рантайма и фронтенда для языка программирования D в состав GCC. Ментейнером назначен Ян Буклав (Iain Buclaw), основной разработчик GDC, работающий в Sociomantic Labs.
GDC — это реализация компилятора языка D под лицензией GPL, использующая бэкенд GCC. Проект был основан Давидом Фридманом (David Friedman) в 2004 году. Сейчас разработкой руководит Ян Буклав, присоединившийся к проекту в 2009 году.
Какая версия GCC получит поддержку D, пока неизвестно.
>>> Сайт проекта GDC
Состоялся релиз набора компиляторов GCC 7.1.
Основные изменения:
-Wduplicated-branches, -Wpointer-compare (включено по умолчанию), -Wswitch-unreachable (включено по умолчанию), Wmemset-elt-size (включено при -Wall), -Wint-in-bool-context (включено при -Wall), -Wregister (включено по умолчанию),
-Wduplicate-decl (включено при -Wall).
>>> Подробности
Состоялся релиз GCC 6.1 — набора свободных компиляторов с открытым исходным кодом. Основным новшеством стало применением в компиляторе C++ по умолчанию стандарта C++14 и улучшение экспериментальной поддержки C++17. Кроме того расширены средства диагностики, заявлена полная совместимость с OpenMP 4.5 и поддержка системной библиотеки musl. Также заявлено об улучшении поддержки платформ ARM и поддержке процессоров AMD Zen, Intel Skylake, IBM z13 и IBM POWER 9.
Основные изменения:
-std=gnu++14 вместо -std=gnu++98). Кроме того добавлена поддержка расширения системы шаблонов C++ Concepts, активируемая опцией -fconcepts. Реализованы некоторые новые элементы будущего стандарта C++17, такие как выражения fold, символьные литералы u8, расширенный static_assert и вложенное определение пространств имён. Реализована возможность вычисления констант для всех бестиповых аргументов шаблонов. Добавлена поддержка транзакционной памяти (C++ Transactional Memory) при сборке с опцией -fgnu-tm;
std::size, std::empty, std::data для контейнеров и массивов, std::uncaught_exceptions, std::invoke, std::shared_mutex, std::void_t и std::bool_constant), экспериментальная поддержка File System TS, экспериментальная поддержка второй версии Library Fundamentals TS, поддержка std::locale для DragonFly и FreeBSD;
-mmusl или при выборе архитектуры по маске *-linux-musl*.Разработчики официального компилятора языка программирования Go объявили об окончательном отказе от использования дополнительного компилятора языка Си при сборке и компиляции проекта. Теперь проект полностью переписан на Go с использованием небольшого количества ассемблера.
Среди причин указывается облегчение отладки, большая модульность и легкость написания кода для параллельной работы.
Также объявлено, что следующий релиз языка с версией 1.5 произойдет в августе 2015 года, сейчас проект заморожен для внесения новых улучшений, а разработчики заняты устранением существующих ошибок.
>>> Подробности
В GCC версии 5 будет доступна возможность jit-компиляции исходного кода и встраивание GCC в виде разделяемой библиотеки libgccjit в другие программы. Новые возможности были продемонстрированы на примере небольшого интерпертатора brainfuck.
>>> Подробности
OpenMandriva Lx 2015 станет первым дистрибутивом Linux, перешедшим на LLVM/Clang в качестве базового компилятора. В качестве его преимуществ перед GCC были названы более быстрое развитие, более широкие возможности проверки кода и меньшие временные затраты на сборку пакетов. GCC будет оставлен дополнительным компилятором.
>>> Подробности
Состоялся очередной выпуск GCC 4.7.4.
GNU Compiler Collection (GCC) — набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU. GCC является свободным программным обеспечением, распространяется фондом свободного программного обеспечения на условиях GNU GPL и GNU LGPL и является ключевым компонентом GNU toolchain.
GCC 4.7.4 является последним релизом с баг-фиксами для версии GCC 4.7. Новая версия содержит ряд важных исправлений регрессий и серьезных ошибок. GCC 4.7.3 содержит более 134 исправлений ошибок, исправленных после предыдущего релиза. Этот релиз доступен на FTP-серверах, доступных на GNU Mirror List.
>>> Подробности
Спустя один год и один месяц с предыдущего значительного релиза объявлен выпуск новой версии набора компиляторов GNU Compiler Collection 4.9.0.
Список новшеств:
>>> Changelog
GNU toolchain — это набор созданных в рамках проекта GNU программ, необходимых для компиляции и генерации исполняемого кода из исходных текстов. В него входят GCC, libc, binutils, GNU make и многое другое.
В этом месяце разработка не отличалась особой активностью. Основная ветка GCC вплотную подобралась к релизу 4.9, а работа над проектами GDB и BINUTILS заключалась в основном в исправлении ошибок. Однако есть и несколько достойных внимания вещей:
--long-plt, включающий генерацию больших PLT-записей, которые могут поддерживать вплоть до 4GB кода. По умолчанию используются PLT-записи меньшего размера, которые поддерживают лишь до 512 MB кода. Помимо этого, ARM-линковщик теперь поддерживает генерацию PLT-записей, использующих лишь Thumb2-инструкции, для ядер, не поддерживающих набор инструкций ARM.
-ffunction-sections и -fdata-sections. Microsoft недавно выпустила небольшую модификацию формата PE, расширяющую некоторые поля для подержки до 2³¹ секций, и теперь линковщик GNU поддерживает это расширение.
-mvirt, позволяющий использовать MIPS Virtualization Application Specific инструкции.
>>> Источник
| следующие → |