Глава 4. Компилятор и инструменты

tail --follow в файловой системе VXFS

В силу того, что VXFS (Veritas Clustered File System) относится к удаленным файловым системам, в стандартных условиях команда tail --follow не сможет использовать функциональность inotify. Но так как VXFS была добавлена в список удаленных файловых систем, для которых вместо inotify используется режим опроса, теперь tail --follow работает так, как ожидается.

Индикатор выполнения команды dd

Новый параметр status=progress команды dd, выполняющей побайтовое копирование файлов, добавляет индикатор выполнения операции. При передаче больших файлов это поможет оценить оставшееся время и выявить потенциальные проблемы.

Оптимизация времени ожидания в libcurl

Раньше библиотека libcurl демонстрировала излишне долгую задержку блокирования для операций без активных файловых дескрипторов, в результате чего некоторые операции, такие как определение имени узла из /etc/hosts, занимали слишком много времени. С целью оптимизации функциональности libcurl код блокирования был модифицирован так, что изначально устанавливается минимальная задержка, которая постепенно возрастает до тех пор, пока не наступит событие. Вследствие подобных преобразований операции libcurl выполняются быстрее.

libcurl реализует неблокирующее подтверждение SSL

Отсутствие поддержки неблокирующих подтверждений SSL в libcurl отрицательно сказывалось на производительности приложений, построенных на основе libcurl multi API. Теперь libcurl multi API незамедлительно возвращает управление приложению, если не удается прочитать или записать данные в сетевой сокет.

Оптимизация GDB на IBM Power Systems при доступе к таблице символов

Раньше на 64-битных платформах IBM Power Systems освобождение переменной, содержащей таблицу символов для отлаживаемого кода, осуществлялось некорректно, что приводило к ошибке сегментации при попытке доступа GDB к таблице. Эту проблему удалось решить, сделав переменную постоянной, вследствие чего GDB сможет обращаться к таблице символов позднее на этапе отладки, избежав необходимости чтения неверной области памяти.

nscd автоматически перезагружает данные конфигурации

Демон nscd (Name Server Caching Daemon) поддерживает функциональность inotify и отслеживание изменений статистики в файлах конфигурации nscd, что позволяет своевременно обнаружить изменения в конфигурации и перезагрузить ее.

Устранена ошибка рекурсивного вызова к функции dlopen

Раньше конфликт в библиотечной функции dlopen вызывал ошибки при выполнении рекурсивного вызова к этой функции. Теперь рекурсивные вызовы к dlopen из malloc обрабатываются без ошибок.
Эта функция является реентрабельной, и рекурсивные вызовы больше не приводят к сбою или выходу с ошибкой.

operf распознает идентификаторы статических больших страниц

Раньше при профилировании производительности JIT-компилированного кода (Java just-in-time) с включенными статическими большими страницами, команда operf регистрировала большое количество обращений к анонимной памяти (в anon_hugepage) вместо обращения к соответствующему методу Java. Теперь operf распознает идентификаторы больших страниц и корректно сопоставляет полученные образцы с методами Java.

rsync -X

Раньше rsync изменял владельца файла не до, а после установки его атрибутов безопасности, что аннулировало установленные атрибуты. В некоторых случаях это могло нарушить функциональность rsync -X. В этом обновлении порядок операций изменился и rsync обновляет информацию о владельце файла до установки атрибутов безопасности, в результате чего состояние указанных атрибутов не сбрасывается.

Интеграция RELRO в сборку subversion

Исполняемые файлы, входящие в состав пакета subversion, теперь содержат встроенные данные RELRO (read-only relocation data). Это обеспечивает защиту Subversion от некоторых атак, направленных на повреждение памяти.

Оптимизация работы расширения Thread в TCL

Раньше поточная обработка в TCL (Tool Command Language) была реализована так, что использование вызова fork() с расширением Thread могло привести к тому, что процесс переставал отвечать. Именно это послужило основанием для отключения Thread в исходной поставке интерпретатора TLC и приложения TK, что, с другой стороны, нарушало работоспособность сторонних приложений. Эта ошибка была исправлена, и теперь расширение Thread включено по умолчанию.