Вышла стабильная ветка FreeBSD 15.0 с поддержкой обновлений до 2029 года.

Спустя почти два года после появления ветки 14.0 проект FreeBSD сформировал новый крупный релиз FreeBSD 15.0. Установочные образы уже доступны для скачивания для архитектур amd64, aarch64, armv7, powerpc64, powerpc64le и riscv64, кроме того, подготовлены образы для систем виртуализации в форматах QCOW2, VHD, VMDK и raw, а также варианты для облаков, включая Amazon EC2, Google Compute Engine и окружения Vagrant.
Одновременно разработчики обновили политику жизненного цикла. Начиная с ветки 15 срок поддержки значимых веток после выхода первого релиза (15.0) сокращен с пяти до четырех лет, а новые крупные ветки будут появляться раз в два года. Промежуточные версии (15.1, 15.2, 15.3) планируют выпускать примерно раз в шесть месяцев, а с учетом одновременной поддержки двух веток новый релиз будет выходить примерно раз в три месяца: 15.4, 16.1, 15.5, 16.2 и так далее, с полугодовой паузой перед формированием очередной «круглой» версии вроде 16.0. В официальных заметках о релизе помимо новшеств 15.0 суммированы и изменения, ранее появившиеся в ветках 14.1, 14.2 и 14.3.
Одно из ключевых изменений 15.0 касается модели обслуживания базовой системы. Теперь компоненты «base» можно ставить и обновлять через пакетный менеджер pkg: так называемые pkgbase пакеты могут находиться на установочных носителях для офлайн установки или скачиваться из репозитория pkg.freebsd.org. В конфигурации pkg (/etc/pkg/FreeBSD.conf) репозиторий FreeBSD-base по умолчанию неактивен, но новый метод уже используется по умолчанию в образах для виртуальных машин и облаков и пока считается экспериментальным для обычных установок. Инсталлятор bsdinstall предлагает пользователю два режима установки, традиционный с монолитной базовой системой и обновлениями через freebsd-update и новый вариант с раздельными пакетами.
Важный шаг сделан и в сторону безопасности цепочки сборки. FreeBSD 15.0 можно собирать в непривилегированных окружениях, без прав root, при этом без привилегий создаются и установочные ISO, и образы для виртуальных машин. Параллельно реализованы воспроизводимые сборки: собранные бинарные файлы детерминированы и позволяют проверить соответствие исходникам, что снижает риск скрытых изменений.
Релиз меняет и архитектурную линейку. Проект прекратил выпуск установочных образов и бинарных репозиториев для 32-битных i386, armv6 и powerpc, в качестве единственной поддерживаемой 32-битной платформы остается armv7. При этом возможность локальной сборки 32-битных приложений и использования режима COMPAT_FREEBSD32 на 64-битном ядре сохранится как минимум до конца жизненного цикла ветки FreeBSD 16.
В ядро добавлены системные вызовы, реализующие Linux-совместимый механизм inotify для отслеживания изменений в файловых системах, что упрощает портирование программ, полагающихся на эту модель уведомлений. Реализованы именованные атрибуты файлов в стиле Solaris, которые рассматриваются как альтернативный механизм расширенных атрибутов для ZFS и NFSv4: атрибуты хранятся в служебном каталоге, невидимом в обычном пространстве имен, и обрабатываются как обычные файлы, их список можно получить, например, через readdir().
Подсистема безопасности получила новый инструмент управления правами. Готовым к использованию объявлен модуль mac_do, позволяющий описывать политики, по которым непривилегированные пользователи могут изменять учетные данные процессов. Для запуска команд от имени другого пользователя без suid root предложена утилита mdo, функционально напоминающая su.
Серьезно обновлена поддержка графики и беспроводных адаптеров. Состояние DRM-драйверов i915 и amdgpu синхронизировано с ядром Linux 6.9, а драйверы Wi-Fi rtw88 (Realtek 802.11n/ac), rtw89 (Realtek 802.11ax) и iwlwifi (семейство Intel 802.11a/b/g/n/ac/ax/be) приведены в соответствие с состоянием драйверов в Linux 6.17. На системах amd64 появилась поддержка конфигураций с объемом оперативной памяти более 4 ТБ, добавлен драйвер ufshci для контроллеров накопителей с интерфейсом UFSHCI.
В сетевой и файловой части также есть заметные изменения. В NFS реализована операция CLONE из спецификации NFSv4.2, которая позволяет копировать файлы за счет клонирования блоков на стороне сервера, пока только при экспорте ZFS-разделов. Улучшена устойчивость UFS на разделах с более чем 2 000 000 000 inode, в реализации UFS1 решена проблема 2038 года, даты корректно обрабатываются до 2106 года. Добавлена опция SO_SPLICE для TCP-сокетов, которая дает возможность объединять соединения по принципу легковесного прокси без копирования данных в пространство пользователя. В ядро включен модуль nvmfta для контроллеров NVMe over Fabrics, а утилита nvmecontrol получила средства подключения к внешним NVMe-устройствам.
В области администрирования появилось несколько новых утилит. Для управления настройками звуковых устройств добавлен инструмент sndctl, для мониторинга MIDI-событий в реальном времени предназначена утилита mididump. В гипервизоре bhyve появился сетевой бэкенд slirp, использующий библиотеку libslirp с реализацией пользовательского сетевого стека и позволяющий отдавать гостю доступ в сеть без дополнительной настройки сетевой инфраструктуры хоста. В утилите newsyslog добавлен параметр выбора метода сжатия по умолчанию (bzip2, xz, zstd, gzip), что избавляет от необходимости проставлять отдельные флаги в каждой строке newsyslog.conf, а в date внедрен вывод времени с точностью до наносекунд, например команда "date -Ins".
Изменения коснулись и окружений jail. Появилась опция zfs.dataset для добавления в jail отдельного ZFS-раздела, снепшота или клона, а также параметры meta и env в команде jail, с помощью которых можно привязывать метаданные и передавать переменные окружения. Добавлена адресация jail-окружений через дескрипторы, для работы с ними предложены функции jail_set и jail_get, а также системные вызовы jail_attach_jd и jail_remove_jd, поддерживаются kevent-фильтры для отслеживания операций с jail. В утилите adduser, которую использует bsdinstall, реализовано автоматическое создание отдельного ZFS dataset для домашнего каталога пользователя при наличии ZFS у родительского каталога, а также возможность шифрования домашнего каталога средствами ZFS, управляемая через параметры Zcreate и Zencrypt в adduser.conf.
В пользовательском пространстве немало улучшений. В стандартной C-библиотеке во многих функциях работы со строками и памятью задействованы SIMD-оптимизации. Шрифт Gallant, используемый в виртуальных терминалах, получил более 4300 новых глифов, включая кириллицу и дополнительные математические символы. В tty по умолчанию включен флаг IUTF8, что обеспечивает корректное удаление UTF-8 символов при нажатии Backspace. Утилита dialog, применяемая в bsdconfig и инсталляторе bsdinstall, заменена на bsddialog. В grep по умолчанию отключен обход символических ссылок при рекурсивном поиске.
Проект продолжает движение в сторону контейнеров и облаков. Добавлена возможность формирования OCI-совместимых контейнерных образов и системных образов для Oracle Cloud. Появился новый тип облачных образов small для совместимых с AWS EC2 сред: в отличие от базовых они лишены отладочных данных, тестов, 32-битных библиотек, отладчика LLDB, Amazon SSM Agent и AWS CLI, а загрузка базовых EC2-образов заметно ускорена.
Существенно расширены и изменены репозитории пакетов. В конфигурации pkg добавлен новый репозиторий FreeBSD-kmods, включенный по умолчанию и содержащий модули ядра, собранные конкретно под релизные ветки 15.x-RELEASE, а не под постоянно обновляемую 15-STABLE, что важно для графических и других драйверов, завязанных на нестабильные интерфейсы ядра. Ранее существовавшие в /etc/pkg/FreeBSD.conf репозитории FreeBSD и FreeBSD-kmods переименованы в FreeBSD-ports и FreeBSD-ports-kmods соответственно.
В стек протоколов и сетевые настройки внесены изменения по умолчанию. Отключен и объявлен устаревшим параметр net.inet.tcp.nolocaltimewait, таким образом TCP-соединения, разрываемые на локальной стороне, снова получают TIME_WAIT-записи по умолчанию, для настройки времени нахождения соединения в этом состоянии добавлен sysctl net.inet.tcp.msl_local. По умолчанию запрещены соединения к localhost с указанием INADDR_ANY, при необходимости старое поведение можно вернуть через sysctl net.inet.ip.connect_inaddr_wild. В сетевые мосты теперь можно добавлять интерфейсы без IP-адресов, так как sysctl net.link.bridge.member_ifaddrs по умолчанию установлен в 0.
Релиз включает и заметный блок отказов от устаревших компонентов. Из базовой системы удален менеджер логических томов gvinum, долгое время использовавшийся для программных RAID, вместо него рекомендованы gconcat, gmirror, gstripe, graid или ZFS. Утилита fdisk объявлена устаревшей, взамен предлагается gpart. В категорию устаревших переведен консольный драйвер syscons, не совместимый с UEFI и не поддерживающий UTF-8. Во FreeBSD 16 запланировано удаление драйвера agp, необходимого для ряда старых видеокарт, а также драйверов fdc (контроллер дискет IBM PC), firewire (IEEE1394), le (старые Ethernet-адаптеры AMD) и upgt (USB 802.11g).
Изменения затронули и подсистему аутентификации и сетевые сервисы. В основной системе реализация Kerberos переведена с Heimdal на MIT Kerberos, при сборке пока еще можно вернуть Heimdal флагом WITHOUT_MITKRB5, но в FreeBSD 16 эта возможность исчезнет. Старые интерфейсы также активно выключаются: функция readdir_r объявлена устаревшей, в SNMP-сервере bsnmpd прекращена поддержка транспорта UDP. Для SSH и образов EC2 прекращена генерация хостовых RSA-ключей, поддержка DSA в OpenSSH полностью удалена, а база publickey, основанная на DES, больше не используется. Из базовой системы исключены ftpd и shar, теперь они доступны только в виде портов ftp/freebsd-ftpd и sysutils/freebsd-shar.
На уровне интерфейсов и поведения системы также есть выравнивание с другими платформами. Логика системных вызовов setgroups, getgroups и initgroups при работе со списками групп пользователя приведена к более ожидаемой схеме, когда эффективная группа не выделяется отдельным элементом в начале массива. По умолчанию включена реализация TLS на стороне ядра (KTLS), что позволяет разгружать часть криптографической обработки.
Наконец, FreeBSD 15.0 включает масштабное обновление пользовательского пространства и инструментов разработки. В состав вошли LLVM 19.1.7, OpenSSH 10.0p2, OpenSSL 3.5.4, OpenZFS 2.4.0rc4, Lua 5.4.8, jemalloc 5.3.0, Awk 20250804 с поддержкой UTF-8, bc 7.1.0, unicode 16.0.0, ncurses 6.5, libarchive 3.8.2, tcpdump 4.99.5, unbound 1.24.1, less 679, file 5.46, GoogleTest 1.15.2 и другие обновленные компоненты, что делает ветку 15 более современной как для серверных, так и для десктопных сценариев.