LINUX.ORG.RU

Избранные сообщения deadskif

https://benchmarksgame-team.pages.debian.net пробил очередное дно

Форум — Talks

Этому Rust фанатику не хватало результатов чтобы Rust обошёл C++, и он удалил царский код и другие которые использовали mmap. Зато теперь Rust быстрее С++.

Встречайте новость: https://habr.com/ru/post/480608/

 , ,

fsb4000 ()

Выпуск видео-проигрывателя MPV 0.30.0

Новости — Мультимедиа
Группа Мультимедиа

Спустя более года со времени предыдущего выпуска, стала доступна очередная версия многофункционального проигрывателя MPV - наследника некогда почти стандартного для Unix-подобных ОС проигрывателя mplayer.

В последнее время разработка несколько затихла, однако в новой версии упоминается множество изменений, особенно в части декодирования видео с помощью видеокарты, в частности с использованием API Vulkan.

К сожалению, удобочитаемого для человека обзора изменений проект не предоставляет, поэтому со всеми новшествами можно ознакомиться лишь в виде журнала (changelog).

В частности, стоит упомянуть задействование библиотеки libplacebo для работы с Vulkan вместо внутренней реализации. Библиотека ставит своей целью вынести некоторый функционал MPV связанный с рендерингом в отдельный проект.

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

>>> Список изменений на GitHub

 , ,

mos ()

Столлман не прокомментировал судьбу GNU и GPL

Форум — Talks

Написал письмо Столлману, чтобы он прокомментировал ситуацию:

Hello, dear Richard Mattew Stallman!
We are very concerned about your resignation of CSAIL/MIT/FSF because this incident poses a threat to the free software and GNU operating system.

We want to talk on a very important topic. The phrase "or any later version" in the GPL license is a loophole that allows you to do anything with the license. 
If tomorrow some activist writes that “demanding disclosure of code and freedom of distribution is fascism”, 
then the FSF will again bend under a volatile world and write GPLv4 which says “it would be nice if you opened the source code, but if no, oh that's bad, but so be it?" 
While you were president of the FSF, a hypothetical sabotage GPLv4 could not exist. And now we are not at all sure about it.

Please write your opinion on this issue.

В своем ответном письме Столлман пишет:

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

Please write to directors@fsf.org about your concerns with the FSF.

As for CSAIL and MIT, they have nothing to do with the GNU GPL.
You may as well not worry about them.


-- 
Dr Richard Stallman
Founder, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)

Странно то, что он никак не прокомментировал «уход из FSF». Возможно, что в ближайшее время мы узнаем что-то очень интересное.

 , ,

Macrocosm ()

Что на самом деле произошло со Столлманом

Форум — Talks

Поскольку в виде комментария моё сообщение затеряется в десятках страниц, решил создать отдельный тред.

А началось всё с Джеффри Эпштейна. Он занимался сутенёрством, в том числе и с несовершеннолетними и против воли последних.

В 2002 году, когда о преступлениях Эпштейна ещё не было известно, он был организатором конференции по искусственному интеллекту. Там он он приказал одной из девушек подкатить к Минскому — известному учёному и основателю лаборатории Искусственного Интеллекта в MIT. Он отказался, но об этом стало известно лишь позже. Девушка же только сказала, что ей было приказано к нему подкатить, а что дальше происходило не уточняется.

Из-за этого все в списке рассылки CSAIL (Computer Science and Artificial Intelligence Laboratory) думали, что он таки согласился.

Ричард Столлман высказался в защиту Минского, который умер трёмя годами ранее и сам прокомментировать ничего не мог, предположив, что девушка могла притвориться, что ей самой этого хотелось.

Далее пришла Селам Джи Гано, которая с FSF не связана, а просто училась в MIT, откопала этот список рассылки (непубличный), переврала слова Столлмана, убрав слова «могла притвориться», сама этому ужаснулась, написала всем журналистам кому можно, опубликовала статью «Уберите Ричарда Столлмана».

Волну подхватили издания, такие как Vice, где всё переврали ещё сильнее и написали, что Столлман защищал самого Эпштейна, хотя сам RMS недвусмысленно сказал, что его не поддерживает на своём сайте.

Затем подключились другие: Мэттью Гарретт, Sage/Sarah Sharp, Сара Мей, Neil McGovern (исполнительный директор GNOME) вообще пригрозил разрывом отношений с FSF.

В итоге Столлману пришлось подать в отставку в MIT и FSF.

 , ,

Xenius ()

GHC 8.8.1

Новости — Open Source
Группа Open Source

Тихо и незаметно, вышла новая версия известного компилятора языка программирования Haskell.

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

  • Поддержка профилирования на 64-битных системах с Windows.
  • GHC теперь требует LLVM версии 7.
  • Метод fail окончательно вынесен из класса Monad, теперь он находится в классе MonadFail (финальная часть MonadFail Proposal).
  • Явное применение типа (type application) теперь работает и для самих типов, а не только для значений.
  • forall теперь является ключевым словом вне зависимости от контекста, что позволяет использовать его в type families и rewrite rules.
  • Улучшен алгоритм компоновки кода для x86.
  • Множество других изменений.

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

>>> Гайд по миграции кода на новую версию

>>> Скачать

 , ,

hateyoufeel ()

Когда программистам делать нечего, они пишут Gopher-клиенты под ZX-Spectrum

Галерея — Скриншоты

ESP8266 подарил интернеты многим ретро-компьютерам и ZX-Spectrum не был обойден стороной.

И сегодня я поведую Вам об интернетах на ZX-Uno(испанский FPGA-клон).

У этого клона есть конфигурация ПЛИС со встроенным UART - к нему и подключен микроконтроллер ESP-12E(со штатной прошивкой).

Клиент написан на чистом ассемблере(sjasmplus) под линуксом, работает с esxDos(читает с флэшки WiFi-креды, сохраняет скачанные файлы на SD-карту).

Он способен отображать gopher-страницы в CP866 кодировке(какой у меня был 4x8 шрифт, такой и взял, перелопачивать его под KOI-8 не вижу смысла), может отображать plain-text файлы и скачивать файлы на диск.

Есть даже история на один шаг. Не корректно работает со строками длиннее 64 символов и буфер под страницу чуть меньше 32к.

Но как показала практика, такого объема достаточно для отображения достаточного количества информации на одной странице.

Уж по такому поводу кастану saahriktu

>>> Просмотр (1280x720, 117 Kb)

 , , ,

nihirash ()

F5 Networks купила Nginx Inc.

Новости — Open Source
Группа Open Source

Сиэтлская компания F5 Networks, больше всего известная своими аппаратными LBA, объявила о приобретении Nginx. Сумма сделки составила приблизительно $670 млн.

F5 рассчитывают внедрить в Nginx свои наработки в области безопасности, а также использовать Nginx в своих облачных продуктах. По словам Франсуа Локо-Дону, СЕО F5, слияние позволит клиентам компании значительно ускорить разработку контейнеризируемых приложений, а Nginx в свою очередь получит еще большие возможности в крупном бизнесе.

Руководители обеих компаний отдельно отметили, что одним из основных условий, без которых сделка бы не состоялась, было сохранение открытости Nginx. Команда разработки, в том числе Игорь Сысоев и Максим Коновалов, продолжит развивать его уже в составе F5.

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

 ,

l0stparadise ()

NSA опубликовала инструмент для реверс-инжинринга Ghidra

Форум — Talks

Агентство национальной безопасности США обещало, что опубликует в марте свой инструмент для реверс-инжинринга. Собственно обещание они выполнили:

https://ghidra-sre.org/

(Российские подсети заблочены, заходить с любого VPN)

Исходники сказали подвезут на GitHub чуть попозже. Ссылка для мониторинга: https://github.com/NationalSecurityAgency/ghidra

Новость на Opennet’е: http://www.opennet.ru/opennews/art.shtml?num=50260

Для тех, кто в танке, это может стать отличной альтернативой IDA Pro. Так как там из коробки есть возможность декомпилировать самые разные бинари в псевдо-код аля C, то есть, чем в IDA Pro занимается плагин Hex-Rays Decompiler.


Как и ожидалось, для запуска Ghidra потребовалась Java, JDK версии 11+; для сравнения – в IDA Pro используется (в настоящее время) библиотека Qt 5.

В Ghidra скорее всего используется SWT, но не ковырялся сильно. Возможно тупо AWT+Swing на стероидах. Внутри релиза от АНБ полно ошмётков от различных Eclipse-проектов. Главное окно программы, в котором можно создавать одиночные и совместные проекты, выглядит следующим образом:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_main.png

Из интересного – широкие возможности совместной работы над дизассемблированием файлов. Так сказать, можно звать товарищей на помощь и медитировать на выхлопы местного дизассебмлера холодными зимними вечерами вместе с ними. Список поддерживаемых процессорных архитектур:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_cpu.png

Самый вкусный инструмент это, конечно же, «CodeBrowser». В отличие от IDA Pro, тут всё довольно инуитивно и кнопочек с окошечками гораздо меньше. Просто импортируешь файл, открываешь его в «CodeBrowser», соглашаешься на его анализирование и через некоторое время (как закончится анализ) уже можно смотреть псевдокод тех или иных функций:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser1.png

Непонятно для чего они захардкодили стиль виджетов «Solaris» от ныне почившего Sun Microsystems, с ужаснейшими половинчатыми скроллбарами. При анализе бинарника разработчики Gidra даже сделали весёлую анимацию, где красный дракончик кушает бинарный код вида 00010001010. Сотрудники АНБ не лишены чувства юмора. Так что ждём в ближайшем апдейте миниатюрных лошадей и миленьких глазастых девочек. Больше скринов:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser2.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser3.png

Кроме того, стоит отметить, что из коробки в Ghidra имеется полезный дизассемблерский инструмент, который называется «Version Tracking». Суть этого инструмента в том, чтобы реверс-инженеру было удобно переносить уже проделанную работу на новые версии программы. Отслеживать все изменения, которые сделали разработчики по паттернам, сдвигам и т. д.

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_versiontracking.png

Я попробовал разобрать бинарь ARMv7, либу ARMv8 из APK и dex’ированные Android’овские Java-классы. На всех вариантах показался более-менее осязаемый псевдокод. Кому интересно, можете сравнить с той же IDA Pro:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_vs_idapro.png

Я ранее использовал IDA Pro для разбора бинарного файла ARMv7, который работал с камерой телефона. Проанализировав псевдокод я узнал правильный порядок инициализации и подсмотрел как работали с нужными мне проприетарными классами, на которых нет ни документации, ни заголовочных файлов. Я думаю, воспользовавшись Ghidra’ой, я бы тоже справился с этой работой.

Так что в полку интересных и полезных инструментов прибыло.


Update. Посмотрел внимательнее на структуру релиза и оказалось что там уже лежат архивы с исходным кодом на Java для большинства компонентов этой программы. Поковырялся в них и нашёл небольшой GUI-фреймворк базирующийся на AWT+Swing, по типу того, как оно сделано у платформы IntelliJ IDEA. Корней SWT не нашёл. Декомпиляторы выполнены в виде нативных исполнительных (соответственно платформозависимых) файлов; их исходников в этом релизе я не обнаружил.


Под Windows выглядит эта Ghidra более-менее цивильно. Видимо под неё и затачивалась. А вот под macOS, просто ужас:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_win.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_macos.png

Даже хуже, чем на Linux c Solaris-темой.

 , ,

EXL ()

Увидело свет ядро Linux 5.0

Новости — Ядро Linux
Группа Ядро Linux

Увеличение цифры мажорной версии до 5 не означает каких-то грандиозных изменений или поломок совместимости. Оно просто помогает дорогому нашему Линусу Торвальдсу сохранить душевный покой. Ниже — список некоторых изменений и новшеств.

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

>>> Полный список изменений (на английском)

 ,

Deleted ()

Вести с полей стандартизации C++: C++20 design is complete (Kona, 2019-02)

Форум — Development

На Reddit-е появился большой пост с описанием того, что вошло в C++20 в результате очередного заседания комитета. На этой встрече в С++20 включили:

Modules!

Coroutines!

static, thread_local, and lambda capture for structured bindings.

std::polymorphic_allocator<>.

std::midpoint and std::lerp.

std::execution::unseq execution policy.

std::ssize() free function that returns a signed size.

std::span usability enhancements.

Precalculated hash values in lookup.

На следующей встрече в июне 2019-го будут рассматриваться к включению в C++20 следующие предложения (принципиально они уже одобрены, но до сих пор не были включены из-за незавершености формальных спецификаций):

Expansion statements.

The C++20 synchronization library.

std::format.

constexpr std::vector.

Allow constexpr allocation, but disallow allocations that are not deleted at compile time.

constexpr std::type_info::operator==.

New conceptification of iterators.

Monadic operations for std::optional.

std::source_location.

std::flatmap.

std::flatset.

std::ostream_joiner.

Stack trace library.

std::byteswap.

constinit.

Deprecating some uses of volatile.

Implicit creation of objects for low-level object manipulation.

using enum.

Ну и до кучи указывается, что еще было добавлено в C++20 ранее:

Concepts.

Contracts.

Ranges.

operator<=>.

A lot more constexpr features: consteval functions, std::is_constant_evaluated, constexpr union, constexpr try and catch, constexpr dynamic_cast and typeid.

Feature test macros.

std::span.

Synchronized output.

std::atomic_ref.

За подробностями лучше сходить на Reddit, там много поясняющего текста. Так же можно почитать отчет Херба Саттера.

 

eao197 ()

Обфускация строк сишным препроцессором, как?

Форум — Development

Как обфускацировать строку на этапе компиляции? Типа по такому виду ->

#define OBFUSCARE(str) /*how?*/

const char *  deobfuscare(const char * obs_str)
{
  /*decode str*/
  return obs_str;
}

...

const char obs_str[] = OBFUSCARE("supersecretstr");
const char*plain_str = deobfuscare(obs_str);


В hex редакторах же строка supersecretstr становиться «мусором» типа 1fga5f3ggegva7 тойже длинны что и основная строка

Ответ: никак

 ,

Deleted ()

BuguRTOS-4.0.0

Новости — Open Source
Группа Open Source

Седьмого января 2019 года вышла встраиваемая операционная система реального времени BuguRTOS-4.0.0.

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

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

 , , ,

shkolnick-kun ()

Новый стандарт языка C: C18

Новости — Разработка
Группа Разработка

Международная Организация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2018, его также называют C17 и C18.

Новый стандарт не вносит никаких новых возможностей, а лишь исправляет дефекты, сообщенные для C11. Значение макроса __STDC_VERSION__ увеличено до 201710L.

Поддержка C18 у GCC появилась, начиная с 8 версии, а у LLVM Clang — с 6.0. Чтобы указать во время компиляции использование стандарта C18 у GCC и LLVM Clang используются флаги -std=c17 и -std=gnu17. В GCC можно также указать новый стандарт флагами -std=c18 и -std=gnu18.

Последний черновик стандарта

Статья на en.wikipedia.org

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

 , , ,

neon1ks ()

Официальное заявление разработчиков GnuPG и GPG4Win по поводу только что обнародованной уязвимости

Новости — Безопасность
Группа Безопасность

(Это заявление касается лишь вопросов уязвимости OpenPGP, GnuPG и GPG4Win. Мы ничего не говорим здесь про S/MIME.)

Только что отдельные исследователи безопасности обнародовали статью, озаглавленную «Efail: Взлом шифрования S/MIME и OpenPGP с использованием приемов эксфильтрации». Фонд электронных рубежей (EFF) воспринял это настолько серьезно, что посоветовал незамедлительно удалить Enigmail [0][1].

Мы же по этому поводу сначала заявим три вещи, а затем и постараемся показать, почему мы правы:

  1. Статья озаглавлена неверно.
  2. Атака направлена на забагованные почтовые клиенты.
  3. Авторы составили список таковых клиентов.

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

>>> gnupg-users@gnupg.org

 , , ,

Zmicier ()

Прикладное ониместроение в Blender — очередные итоги осеннего запоя

Галерея — Скриншоты

«над нами баржы абаддона... - космодесант идёт в неравный бой» В который раз еду на CG EVENT с докладом — снова Blender и NPR. Материала много, в том числе практической части. Так как в опенсурс-блоке то и дело мелькает персонаж из известного веб-комикса про ведьму с рыжим котом, решил не отставать и тоже запилить один из примеров с Пеппер. В выходные уже доделаю окончательно с одеждой и шейпами лица и выложу под СС ATRIBUTIONS каким нибудь в открытый доступ. Предвижу традиционный вопрос про сиськи — сиськи будут!

P.S. B.A.K.A. выходит в декабре.

>>> Просмотр (1920x1080, 396 Kb)

 ,

wst ()

Получен полный доступ к Intel ME

Новости — Безопасность
Группа Безопасность

Хакеры Максим Горячий и Марк Ермолов сообщили о получении полного доступа к сервисному процессору Intel CSME через USB DCI. Ранее они уже демонстрировали возможность запуска неподписаного кода на сервисном процессоре.

В августе Максим Горячий публиковал код, который по всей видимости служит для перманентного отключения процессора (защита от воровства).

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

 , , ,

alt-x ()

Как создать GUI-подобное приложение для десктопного веб и не сойти с ума?

Форум — Web-development

Заголовок очень длинный, но зато суть отражает почти полностью:

суть в том, что мне и далеко не только мне нравится GUI-программирование. Нормальное такое классическое, в результате которого получались такие без гениальные вещи как интерфейс OS/2 WorkPlace Shell, интерфейс Mac OS X Aqua и все последующие...

Отсюда вопрос: а есть ли хоть какой-то вариант писать веб-приложения именно в GUI-стиле? Да, пусть с ограниченным набором виджетов и без каких-то феерических возможностей, но зато с такими классическими вещами, как обработчики событий на виджете, абсолютно адекватным поведением виджетов-контейнеров, правильным взаимодействием между виджетами, унификацией их внешнего вида и широкими возможностями их «тематического» декорирования (гм, вспомните лучше темы KDE). При этом если никому не нужно, чтобы приложение было одним и тем же для мобильных устройств и для десктопа -почему бы не разнести сугубо V составляющую на 2 части, а не пытаться сделать один интерфейс настолько супер-адаптабельным и универсальным, что его код станет по сути SSHA-суммой Книги перемен?

При этом весь JS код должен оперировать вменяемыми операциями наподобие «создай виджет - инстанс такого-то класса и помести его в другой виджет - контейнер такой то» или, как более правильный подход: «загрузи по URL такому-то описание формы приложения, сгенерируй виджеты. А теперь вот тебе обработчики событий для созданных объектов-виджетов».

В общем, вопрос прост как три копейки: есть ли в 2017-м году хоть один JS-фреймворк, который был бы комфортен для GUI-разработчиков и позволял бы получать работающие в браузере веб-приложения, по сути являющиеся, например, «веб-репликами» их уже написанных GUI-собратьев? Ведь многие же компании, и очень крупные, самые крупные, переводили свои десктопные приложения на веб-платформу. Неужели им всем было в радость просто писать всё заново в чистой веб-парадигме со всеми этими «прекрасными» вещами типа DOM и VirtualDOM?

P.S. Вопрос возник по итогам попытки прочесть https://habrahabr.ru/post/341688 : из прочитанного я не понял практически вообще ничего, хотя у меня есть опыт JS-разработки. Я просто не врубаюсь, что такого полезного с функциональной, осязаемой точки зрения мне даёт всё это...

Внимание, правильный ответ:

https://github.com/qooxdoo/qooxdoo

Огромное спасибо dmxrand и всем-всем-всем, кто помог определиться!

 , ,

DRVTiny ()

Выпуск Talos II

Новости — Hardware and Drivers
Группа Hardware and Drivers

Компания Raptor представила материнскую плату Talos II на базе IBM POWER9 с открытым BMC, основанным на OpenBMC, оснащённую слотами DDR4 и PCIe 4.0. Главной особенностью продукта является то, что прошивки всех компонентов, включая микрокод ЦПУ, свободны. Планируемое время отгрузки по предзаказу — 4-й квартал 2017 г.

( Краткая спецификация )

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

 ,

ktk ()

Intel ME отключение.

Форум — General

https://wiki.gentoo.org/wiki/Sakaki's_EFI_Install_Guide/Disabling_the_Intel_M...

Тут инструкцию выкатили.
Кто-нибудь уже пробовал? Главное каковы критерии успешности?

 ,

Deleted ()

Релиз набора компиляторов LLVM 5.0

Новости — Разработка
Группа Разработка

После шести месяцев разработки представлен релиз проекта 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:

  • Поддержка расширения для использования сопрограмм в коде на C++ (пример кода). Для включения следует использовать опции "-fcoroutines-ts -stdlib=libc++";
  • Обеспечена полная поддержка стандарта C++17. Для активации режима C++17 следует использовать флаг "-std=c++17" ("-std=c++1z" оставлен для обеспечения совместимости);
  • Новые возможности для диагностики:
    • "-Wcast-qual" для проверки корректности приведения типов в Си-стиле для C++;
    • "-Wunused-lambda-capture" для выявления переменных, захваченных лямбда-выражением, но не используемых в теле лямбда-выражения;
    • "-Wstrict-prototypes" для выявления не-прототипных функций, определений блоков и типов в Си и Objective-C;
    • "-Wunguarded-availability" для информирования об использовании новых API, которые были представлены в системе, версия которой новее версии системы, заданной в качестве целевой.
      • Также добавлен сокращённый вариант "-Wunguarded-availability-new", который охватывает проверку версий API, выпущенных после macOS 10.13, iOS 11, tvOS 11 и watchOS 4;
    • "-Wdocumentation" - позволяет использовать в комментариях директивы \param и \returns для задания типа указателя для блока или функции;
    Добавлен новый флаг компилятора "--autocomplete" для вывода списка флагов и их аргументов для применения в системах автодополнения ввода; Объявлены устаревшими и игнорируются флаги "-fslp-vectorize-aggressive" (заменён нормальным векторизатором SLP) и "-fno-slp-vectorize-aggressive" (данное поведение теперь всегда используется по умолчанию);
  • Добавлена новая pragma attribute для применения атрибута к нескольким декларациям;
  • Для языков Си++ и Си реализовано GNU-расширение для неявного скалярного преобразования в вектор. Пример преобразования скалярного значения в вектор (ко всем элементам вектора «a» будет прибавлено 5):
       typedef unsigned v4i32 __attribute__((vector_size(16)));
       v4i32 foo(v4i32 a) {
          return a + 5;
       }
    
  • Clang 5 станет последним выпуском, в котором по умолчанию используется режим "-std=gnu++98" при использовании совместимого с GCC драйвера clang++. Начиная со следующего выпуска будет применяться режим "-std=gnu++14" для совместимости с поведением новых выпусков GCC. Пользователям рекомендуется добавить в файлы сборки опции для явного определения используемой версии стандарта;
  • Устранена порция ошибок в реализации OpenCL, расширен тестовый набор для OpenCL, расширена диагностика, в руководство добавлена документация по OpenCL. Обеспечена поддержка расширения cl_khr_subgroups и атрибута intel_reqd_sub_group_size. В CIndex добавлены типы OpenCL;
  • В clang-format добавлена опция BreakBeforeInheritanceComma для подстановки разрывов после ":" и "," при определении класса.
  • Опция включена по умолчанию при выборе стиля оформления кода Mozilla. Обеспечено выравнивание комментариев. Обеспечена автоматическая подстановка комменария с именем пространства имён в конце его определения;
       class MyClass
           : public X
           , public Y {
       };
    
       /* line 1
        * line 2
        */
    
       namespace A {
          int i;
          int j;
       } // namespace A
    
  • В Libclang обеспечена поддержка автодополнения кода для следующих конструкций C++: static_assert, alignas, constexpr, final, noexcept, override и thread_local. Добавлено автодополнения для членов зависимых классов;
  • В linter clang-tidy добавлена большая порция новых проверок, реализованы новые модули bugpron и hicpp;
  • В статическом анализаторе добавлена поддержка автоматического доказателя теорем Z3, созданного в Microsoft Research для верификации кода своих продуктов. По сравнению с предлагаемым по умолчанию доказателем теорем Z3 работает примерно в 15 раз медленнее, но позволяет обрабатывать более сложные запросы. Для включения Z3 требуется сборка с опцией «CLANG_ANALYZER_BUILD_Z3=ON» и указание флагов "-Xanalyzer -analyzer-constraints=z3";
  • Расширены возможности компонента UBSan (Undefined Behavior Sanitizer) с реализацией детектора неопределенного поведения, выявляющего во время выполнения программы ситуации, когда поведение программы становится неопределенным:
  • Добавлены и включены по умолчанию новые средства для проверки переполнения указателей (-fsanitize=pointer-overflow).
  • Реализованы проверки для определения нарушения аннотаций о значениях NULL (-fsanitize=nullability) в аргументах функций, операциях присвоения и значениях return.
  • Обеспечено определение некорректной загрузки из битовых полей (bitfields) и булевых наборов ObjC.
  • В биндингах для языка Python обеспечена поддержка обеих веток — Python 2 и Python 3.

Основные новшества LLVM 5.0:

  • В компоновщике LLD решены многие проблемы с совместимостью, реализован более читаемый формат сообщений об ошибках, добавлена опция "-Map" для вывода схемы с сопоставлением входных файлов с результирующим файлом, значительно ускорена работа опции "--gdb-index ", добавлена поддержка нестандартных перестановок R_X86_64_8 и R_X86_64_16, по умолчанию обеспечено заполнение добавочных блоков в текстовых сегментах инструкцией INT3 вместо нулевых байтов. Добавлены новые опции: -compress-debug-sections, -emit-relocs, -error-unresolved-symbols, -exclude-libs, -filter, -no-dynamic-linker, -no-export-dynamic, -no-fatal-warnings, -print-map, -warn-unresolved-symbols, -z nocopyreloc, -z notext, -z rodynamic;
  • В оптимизаторе циклов Polly, поддерживающем несколько техник оптимизации циклов и позволяющем организовать автоматическое распараллеливание кода с задействованием OpenMP, обеспечена поддержка компиляции всех компонентов платформы Android и пакета FFMPEG;
  • Представлена новая библиотека BinaryFormat, в которую перемещены определения структуры file_magic и функций identify_magic, а также структур и определений для форматов DWARF, ELF, COFF, WASM и MachO;
  • Утилита llvm-pdbdump переименована llvm-pdbutil, так как она уже давно переросла из программы для дампа содержимого PDB в полноценный инструмент диагностики и манипуляции содержимым PDB;
  • Удалена стадия векторизации BBVectorize, на смену которой пришёл векторизатор SLP;
  • Добавлена утилита opt-viewer.py для визуализации сведений о выполненных оптимизациях в формате HTML на основании YAML-отчёта, генерируемого опцией "-fsave-optimization-record";
  • Добавлен новый CMake-макрос LLVM_REVERSE_ITERATION;
  • Добавлена утилита llvm-dlltool для создания коротких библиотек импорта из файлов с определениями в стиле GNU. Поддерживаются форматы импорта PE COFF SPEC Import Library и PE COFF Auxiliary Weak Externals;
  • Для архитектуры x86 добавлена поддержка CPU Intel Goldmont, реализован планировщик для CPU AMD Ryzen (znver1), обеспечено более агрессивное развёртывание (inlining) вызовов memcmp.
  • Добавлена поддержка инструкций AMD Lightweight Profiling (LWP), avx512vpopcntdq и инструкций AVX512 для ротации векторов.
  • Добавлена возможность трассировки процессов и core-файлов NetBSD в одном потоке LLDB;
  • В бэкенд AMDGPU добавлена поддержка архитектуры Radeon GFX9, используемой в GPU Vega;
  • Внесены многочисленные улучшения в бэкенды для архитектур AArch64, ARM, AVR, MIPS и PowerPC, в том числе добавлена поддержка инструкций ARMv 8.1, 8.2 и 8.3, большой порции расширений POWER ISA 3.0, MIPS MT ASE и оптимизаций размера для microMIPS.

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

 , , ,

valman___ ()