После шести месяцев разработки сформирован релиз FreeBSD 14.1. Установочные образы подготовлены для архитектур amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 и riscv64. Дополнительно подготовлены сборки для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Vagrant.
Основные изменения:
- Проведена работа по улучшению звукового стека. Реализована возможность отсоединения звуковых устройств в асинхронном режиме, что необходимо, например, для горячего отключения звуковых карт с интерфейсом USB. Удалён фреймворк snd_clone и связанные с ним параметры sysctl, что позволило упростить звуковую подсистему. Вместо отдельных файлов устройств для каждого звукового канала (/dev/dspX.Y) теперь создаётся только основной файл устройства (/dev/dspX).
- Функции работы со строками и памятью в libc оптимизированы с использованием инструкций SIMD на системах с архитектурой AMD64. Предложено 17 функций, оптимизированных при помощи SIMD, а также 9 функций, переведённых на вызов функций, оптимизированных через SIMD. При проведении тестов производительность новых функций при обработке строк размером 64 символа увеличилась в 5.54 раза.
- Добавлена встроенная поддержка настройки при помощи cloud-init, инструментария для настройки системы на стадии загрузки. Среди прочего, поддерживается
создание пользователей/групп, добавление ключей ssh, настройка параметров подключения к сети, определение стартового скрита nuageinit и настройка дисковых разделов (config-drive). Реализация совместима с OpenStack и многими хостинг-провайдерами. - Для новых файловых систем UFS2, создаваемых утилитой newfs, по умолчанию включён механизм обеспечения целостности и повышения производительности ФС “soft updates” (в инсталляторе режим “soft updates” по умолчанию включался и ранее, но при создании ФС утилитой newfs требовалось указание отдельных опций).
- Предоставлена возможность сборки ядра только с поддержкой IPv6 (INET6), без IPv4 (INET).
- В утилите adduser, применяемой в bsdinstall, обеспечено создание отдельного ZFS dataset (раздела, снапшота или клона) для домашнего каталога пользователя, если ZFS dataset уже используется для родительского каталога. Также добавлена возможность использования шифрования домашних каталогов средствами ZFS. Для управления активацией данных возможностей в adduser.conf добавлены параметры “Zcreate” и “Zencrypt” .
- В “libutil” в функцию “setusercontext” добавлена поддержка выставления приоритета процессам на основании настроек из файла “.login.conf”, размещённого в домашнем каталоге. При выставлении приоритета или umask добавлена поддержка значения “inherit”, при котором приоритет и umask выставляются такими же как у родительского процесса.
- В утилиту “date” добавлена поддержка наносекундной точности, например, “date -Ins” выдаст “2024-06-04T10:20:28,763742224+05:00”, а “date +%N” – “415050400”.
- В утилите “dtrace” реализована возможность формирование вывода в форматах, удобных для автоматического разбора и просмотра, таких как JSON, XML и HTML.
- В утилиту “usbconfig” встроена возможность вывода дополнительной информации об USB-устройствах и производителях, соответствующей описаниям из файла /usr/share/misc/usb_vendors.
- В драйвер “ice” добавлена поддержка Ethernet-контроллеров Intel E800 с пропускной способностью 100 Gb/s.
- В Ethernet-драйвер “msc” добавлена поддержка выставления MAC-адреса на основе параметра “smsc95xx.macaddr”, передаваемого некоторыми моделями плат Raspberry Pi.
- Проведена работа по повышению стабильности драйвера “iwlwifi” для беспроводных чипов Intel.
- Добавлена возможность использования нескольких областей PCI MCFG на системах amd64 и i386 для сегментирования адресного пространства PCI-устройств.
- Расширена поддержка оборудования.
- В NFS-обработчике “mountd” для декодирования имён каталогов в файле “exports” задействована библиотека “strunvis”, что позволило использовать в именах каталогов спецсимволы, например, пробелы. Добавлены новые sysctl-переменные kern.rpc.unenc и kern.rpc.tls для настройки NFS-over-TLS.
- В загрузчике обеспечено чтение файлов конфигурации, перечисленных в переменной local_loader_conf_files, после файлов конфигурации, определённых в файле /boot/loader.conf.local. Также добавлена возможность извлечения настроек из SMBIOS в привязке к идентификаторам производителя и продукта. Улучшено определение консоли на системах с EFI. Реализация фреймбуфера в загрузчике теперь может использовать консольные видеодрайверы.
- Реализована возможность использования загрузчика LinuxBoot (loader.kboot) для загрузки FreeBSD из окружений на базе Linux на системах aarch64 и amd64.
- В rc.conf добавлена поддержка параметра kdc_restart, включающего автоматический перезапуск kdc (сервер Kerberos 5) в случае его аварийного завершения. Дополнительно доступен параметр kdc_restart_delay, через который можно установить задержку перед перезапуском.
- По умолчанию в целях сокращения размера отчётов, отправляемых на email, сокращены сведения об изменениях при выполнении периодически запускаемых работ и скриптов, проверяющих безопасность.
Для настройки уровня вывода можно использовать параметры daily_diff_flags и security_status_diff_flags в periodic.conf. - Обновлены версии сторонних компонентов: Clang/LLVM 18.1.5, OpenZFS 2.2.4, OpenSSH 9.7p1, awk 2024-01-22 (с поддержкой UTF-8 и режима “-csv”), libarchive 3.7.4, sendmail 8.18.1, unbound 1.20.0.