LINUX.ORG.RU

GCC 7.1

 , ,


1

7

Состоялся релиз набора компиляторов GCC 7.1.

Основные изменения:

  • Поддерживаются все возможности текущего черновика будущего стандарта C++17.
  • Улучшены сообщения компилятора, в том числе добавлены новые предупреждения -Wduplicated-branches, -Wpointer-compare (включено по умолчанию), -Wswitch-unreachable (включено по умолчанию), Wmemset-elt-size (включено при -Wall), -Wint-in-bool-context (включено при -Wall), -Wregister (включено по умолчанию), -Wduplicate-decl (включено при -Wall).
  • Улучшена оптимизация.
  • Добавлена поддержка архитектуры RISC-V, улучшена поддержка ARM64.
  • Теперь поддерживается ОС Fuchsia OS.
  • Удалена поддержка Java (GCJ).
  • Некоторый код, успешно компилирующийся в прошлых версиях, теперь может потребовать изменений. Читайте руководство для получения подробностей.

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Klymedy (всего исправлений: 8)
Ответ на: комментарий от anonymous

Всякий желающий получить возможность писать идентификаторы кириллицей должен приготовиться читать на деванагари, иврите и китайском :)

Для идентификаторов это не проблема.

anonymous
()
Ответ на: комментарий от anonymous

Не проблема для тех, кто не следует рекомендациям давать идентификаторам осмысленные имена.

grem ★★★★★
()
Ответ на: комментарий от ckotinko

Подожди, но речь ведь не о том, что оптимизатор не обсчитал константное выражение, а о том, что он сгенерировал дополнительный код для распространённого случая, когда аргументом является ноль.

Оптимизатор ничего не знает о том, какие значения аргумента являются валидные, а какие нет. И код вполне валидный: при ноле вызов функции, объявленной extern. Его не волнует, что этой функции не существует, это уже проблемы линковщика.

ИМХО, дело в том, что:

Во-первых, объявление несуществующей функции в расчёте на фэйл при линковке — это хак и костыль, который даже умудряются использовать в продакшене.

Во-вторых, нет способа указать в коде о диапазоне запрещённых аргументов для функции. Наличие такого способа (синтаксиса) было бы подсказкой для оптимизаторов, какие ветвления учитывать, а какие можно (и нужно) проигнорировать.

Решение: в коде ядра добавить TODO/FIXME и временный костыль, а в язык добавить недостающую функциональность. Со временем привести всё это в нормальный вид.

Как тебе?

anonymous00 ★★
()
Ответ на: комментарий от anonymous

Для идентификаторов это не проблема.

Да, у идентификаторов вообще нет проблем. Проблемы будут у читателей :)

anonymous
()
Ответ на: комментарий от cetjs2

Спасибо. В полном тексте, действительно, много чего ещё интересного указано.

Vudod,

Когда строки произвольной длины реализуют нормально встроенным способом?

А что за строки произвольной длины «встроенным» способом всё-таки?

grem ★★★★★
()
Ответ на: комментарий от anonymous

Вспомнилось :)

(https://ru.wikipedia.org/wiki/Алгол_68):

Ещё одна интересная особенность языка Алгол 68 — его «многоязычность» — в язык заложена возможность использования различных таблиц трансляции, что позволяет для каждого естественного языка определить свой набор ключевых слов Алгола-68. В результате программисты получают возможность писать программы ключевыми словами родного языка.

# Nachfolgetag - Deutsche Variante
menge datum = tupel(ganz tag, wort monat, ganz Jahr);
funktion naechster tag nach = (datum x) datum:
         wenn tag von x < monatslaenge(monat von x, jahr von x)
         dann (tag von x + 1, monat von x, jahr von x)
         wennaber monat von x = "Dezember"
         dann (1, "Januar", jahr von x + 1)
         ansonsten (1, nachfolgemonat(monat von x), jahr von x)
         endewenn;
grem ★★★★★
()
Ответ на: комментарий от mittorn

Gcj давно работает медленнее чем открытые jdk. Он не умеет многие оптимизации и код просто тянется грузом.

Компиляторы Java давно ничего не оптимизируют. Оптимизацией занимается исключительно JIT в рантайме.

bbk123 ★★★★★
()
Ответ на: комментарий от anonymous00

Ядро Linux из Git следует за выпусками последних версий компилятора или всё же требует только определённых версий GCC?

iZEN ★★★★★
()
Ответ на: комментарий от bbk123

Компиляторы Java давно ничего не оптимизируют

Неправдоподобно. Кучу оптимизаций сложнее или невозможно сделать в байткоде.

anonymous
()
Ответ на: комментарий от anonymous

В том-то и дело, что байткод совсем не оптимизируют. Оптимизацию делает JIT на уровне машинного кода.

bbk123 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.