Глава 3. Компиляторы и утилиты

Dracut настраивает VLAN в соответствии с записями iBFT

Раньше dracut не создавал интерфейс VLAN, несмотря на наличие параметра VLAN в iBFT. Теперь iSCSI Boot с VLAN работает как ожидается.

Подготовка к возможным изменениям функций System z в GCC

Атрибут GCC hotpatch реализует возможность внесения изменений в многопоточный код функций System z за счет резервирования некоторого количества байтов в прологе. Для конкретной функции это поведение можно включить с помощью атрибута hotpatch, в то время как параметр командной строки -mhotpatch= выбирает сразу все функции в текущей единице компиляции.
В результате этой операции размер программы неизбежно возрастет, что негативно скажется на быстродействии, поэтому рекомендуется придерживаться избирательного подхода и не включать -mhotpatch сразу для всех функций.

Версии TLS в curl

Сurl поддерживает новые аргументы --tlsv1.0, --tlsv1.1 и --tlsv1.2, с помощью которых определяется версия протокола TLS для NSS. Соответствующие константы были добавлены и в libcurl API: CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1 и CURL_SSLVERSION_TLSv1_2. Семантика существующего аргумента --tlsv1 и константы CURL_SSLVERSION_TLSv изменилась, в результате чего будет выбираться последняя версия протокола TLS 1.x, которую поддерживает и клиент, и сервер.

Python: обработка параметров без значений модулем ConfigParser

Модуль ConfigParser изначально был спроектирован так, чтобы требовать определения значений всех перечисленных параметров в файлах конфигурации. Вследствие этих ограничений параметры без значений (например, в файле my.cnf) не могли быть прочитаны. Теперь эта функция интегрирована в Python 2.6.6, и ConfigParser успешно обрабатывает подобные параметры.

tcpdump: аргументы -J/-j и --time-stamp-precision

Ядро, glibc и libpcap предоставляют API для генерации отметок времени с точностью до наносекунд, и последнее обновление tcdump отражает эти изменения. Аргумент -J позволяет получить список доступных типов отметок , -j, соответственно, изменяет тип, а --time-stamp-precision устанавливает точность определения времени.

sg3_utils: копирование данных между устройствами SCSI

Пакет sg3_utils предоставляет новые инструменты для эффективного копирования данных между устройствами, использующими набор команд SCSI. Для реализации этой функциональности было выполнено портирование программ sg_xcopy и sg_copy_results из последней версии sg3_utils.

Ethtool допускает изменение хэш-значений RSS

Ethtool допускает определение собственных хэш-значений RSS для эффективного контроля очередей пакетов в зависимости от интенсивности их поступления и адаптации к ожидаемым изменениям трафика.

tcpdump: поддержка setdirection

Tcpdump поддерживает функцию setdirection для контроля захвата трафика в зависимости от направления движения пакетов. Для перехвата входящих пакетов надо добавить параметр «-P in», исходящих — «-P out», и тех, и других — «-P inout».

Чтение конфигурации sysctl из нескольких системных каталогов

Новый переключатель --system позволяет sysctl осуществлять чтение файлов конфигурации из каталогов /etc/sysctl.d/*.

Обновление mcelog

Пакеты mcelog обновлены до версии 109 и включают ряд исправлений и дополнений. В частности, добавлена поддержка процессоров Intel Core i7.

Обновление biosdevname

Пакет biosdevname обновлен до версии 0.6.2, в которой, помимо всего прочего, предусмотрен атрибут dev_port для нового драйвера Mellanox, который отменяет присвоение имен устройствам FCoE.

Изменения в библиотеке PCRE

С целью предотвращения ошибки «grep -P» о недействительной последовательности UTF-8 при анализе бинарных файлов, были сделаны следующие изменения:
- pcre_exec() проверяет, чтобы смещение не выходило за пределы допустимого диапазона, и возвращает ошибку PCRE_ERROR_BADOFFSET вместо PCRE_ERROR_NOMATCH или перехода в бесконечный цикл;
- Если функции pcre_exec() передана недействительная строка UTF-8, то при условии, что массив ovector содержит по крайней мере два элемента, смещение первого неверного символа UTF-8 будет записано в первый элемент массива, а код ошибки — во второй. Впоследствии эти данные можно будет извлечь с помощью pcrcetest. Следует подчеркнуть, что pcre_compile() теперь возвращает первый недействительный байт UTF-8, а не последний. Кроме того, была изменена подпись функции _pcre_valid_utf8(), которая не предназначена для публичного использования, а утилита pcretest теперь добавляет краткое пояснение к коду ошибки.

glibc: поддержка инструкций Intel AVX-512

Динамический загрузчик glibc теперь может сохранять и восстанавливать регистры AVX-512, что предотвращает сбой приложений, использующих инструкции AVX-612.

Valgrind распознает инструкции Intel MPX

Valgrind распознает новые инструкции Intel MPX и префикс BND. В настоящее время инструкции MPX реализованы как команды NOP, а префикс BND игнорируется. В итоге Valgrind игнорирует и инструкции MPX, и префиксы BND, тем самым предотвращая несвоевременное прерывание программ по сигналу SIGKILL.

Форматирование вывода команды free

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

w поддерживает параметр -i

Утилита w поддерживает параметр -i, который позволяет идентифицировать узел, с которого пользователь вошел в систему, по адресу, а не по имени.

Обновление текстового редактора Vim

Пакеты vim были обновлены до версии 7.4, в которую вошло множество изменений по сравнению с предыдущими версиями. Среди них надо отметить несколько наиболее примечательных изменений: - Сохранение истории редактирования в отдельный файл при помощи параметра конфигурации undofile. По умолчанию Vim очищает буфер изменений после закрытия файла, однако эта функция позволяет сохранять историю даже при выходе из редактора. Изменения автоматически сохраняются и восстанавливаются из файла при открытии файла. - Новый механизм регулярных выражений. В отличие от старого механизма, использовавшего алгоритм последовательного перебора подстановок, в основе нового механизма лежит конечный автомат, который проверяет все возможные альтернативы для заданного символа и сохраняет возможные состояния. Несмотря на то, что такой подход несколько снижает скорость обработки простых регулярных выражений, он позволяет добиться серьезного роста производительности при отработке сложных выражений в больших текстах. Улучшение быстродействия наиболее очевидно при подсвечивании синтаксиса в файлах Javascript и XML с длинными строками.