Началось альфа-тестирование FreeBSD 15

Подготовлен первый альфа-выпуск FreeBSD 15.0. Установочные сборки сформированы для архитектур amd64, powerpc64le, aarch64 и riscv64. Релиз запланирован на 2 декабря. Обновление до ветки 15.0-ALPHA1 с прошлых выпусков при помощи утилиты freebsd-update пока не реализовано.

Начиная с ветки FreeBSD 15 время сопровождения значительных веток после формирования первого релиза (15.0) сокращено с 5 до 4 лет, а новые значительные ветки будут формироваться раз в два года. Промежуточные выпуски (15.1, 15.2, 15.3) будут разрабатываться в рамках фиксированного цикла разработки, подразумевающего публикацию новых версий в одной ветке примерно через каждые 6 месяцев, а не раз в год как было до сих пор. C учётом одновременного сопровождения двух разных значительных веток, новый промежуточный выпуск будет публиковаться раз в 3 месяца (15.4, 16.1, 15.5, 16.2 и т.п.), за исключением подготовки первых релизов новых значительных веток, перед которыми будет 6-месячный перерыв в релизах (например, релиз 15.3 будет сформирован в июне 2027 года, 16.0 в декабре 2027, 15.4 – в марте 2028, 16.1 – в июне 2028).

Среди изменений во FreeBSD 15:

  • Прекращено формирование установочных образов и сборок бинарных пакетов для 32-разрядных архитектур. Возможность сборки 32-разрядных программ и использования режима COMPAT_FREEBSD32 для запуска 32-разрядных исполняемых файлов в окружении на базе 64-разрядного ядра сохранится как минимум до конца жизненного цикла ветки FreeBSD 16.
  • Удалён менеджер логических томов gvinum, который использовался для программных RAID. Разработка Gvinum остановилась около 15 лет назад, при том, что в коде имеется ряд известных проблем, которые никто так и не взялся исправить. Вместо gvinum рекомендовано использовать gconcat, gmirror, gstripe, graid или zfs.
  • Намечен к удалению драйвер agp (Accelerated Graphics Port), необходимый для работы многих драйверов для старых видеокарт.
  • Поведение системных вызовов setgroups, getgroups и initgroups при обработке групп пользователей приближено к другим платформам (отличие реализации во FreeBSD сводилось к хранению эффективного идентификатора группы процессов в нулевом элементе массива со списком групп).
  • Состояние DRM-драйверов i915 и amdgpu синхронизировано с ядром Linux 6.9.
  • Добавлена поддержка именованных атрибутов файлов (расширенных атрибутов в стиле Solaris), которые планируют поддерживать в качестве альтернативного механизма управления расширенными атрибутами, доступного для ZFS и NFSv4. Отличия от традиционных для FreeBSD и Linux методов работы с расширенными атрибутами сводится к представлению атрибутов в служебной директории, не видимой в основном пространстве имён ФС и ассоциированной с файлом. Работа с атрибутами производится как с обычными файлами, например, для определения списка атрибутов можно выполнить функцию readdir().
  • Реализация Kerberos в основном составе FreeBSD заменена c Heimdal Kerberos на MIT Kerberos. Для возвращения Heimdal Kerberos при сборке можно использовать флаг WITHOUT_MITKRB5. Во FreeBSD 16 поддержка сборки Heimdal Kerberos будет удалена.
  • В NFS добавлена поддержка операции CLONE, определённой в спецификации NFSv4.2 и позволяющей организовать быстрое копирование файлов через клонирование блоков на сервере. Режим пока работает только при экспорте через NFS разделов ZFS.
  • Повышена надёжность работы разделов с ФС UFS, содержащих более 2,000,000,000 inode.
  • На системах amd64 добавлена возможность использования более 4TB ОЗУ.
  • Объявлена устаревшей функция readdir_r.
  • В SNMP-сервере bsnmpd прекращена поддержка транспорта UDP.
  • Добавлен драйвер ufshci для поддержки контроллеров систем хранения с интерфейсом UFSHCI (Universal Flash Storage Host Controller Interface).
  • Реализованы системные вызовы c реализацией механизма inotify для отслеживания изменений в файловых системах.
  • По умолчанию отключена и объявлена устаревшей настройка net.inet.tcp.nolocaltimewait, т.е. возвращено создание по умолчанию TIME_WAIT-записей для TCP-соединений, разорванных на стороне локальной системы. Для настройки времени нахождения соединения в состоянии TIME_WAIT добавлен новый sysctl net.inet.tcp.msl_local.
  • По умолчанию отключена поддержка создания сетевых соединений к localhost, указывая INADDR_ANY. Для возвращения поддержки можно выставить sysctl net.inet.ip.connect_inaddr_wild sysctl в значение 1.
  • Sysctl net.link.bridge.member_ifaddrs по умолчанию выставлен в 0, т.е. в сетевые мосты можно добавлять интерфейсы без IP-адресов.
  • Добавлена утилита sndctl для управления настройками звуковых карт.
  • Добавлена утилита mididump для дампа событий MIDI 1.0 в режиме реального времени .
  • Объявлен готовым к применению модуль mac_do, позволяющий задавать политики, разрешающие непривилегированным пользователям изменять учётные данные процессов. Для запуска команд под другим пользователем подготовлена утилита mdo похожая на утилиту su, но не требующая suid root.
  • В реализации ФС UFS1 решена проблема 2038 года (можно использовать даты до 2106 года).
  • Включена по умолчанию реализация протокола TLS на стороне ядра (KTLS).
  • Прекращена генерация хостовых ключей RSA для SSH и EC2 AMI.
  • Добавлена опция сетевых сокетов SO_SPLICE для объединения TCP-соединений (подобие прокси, работающего без копирования данных в пространство пользователя).
  • В утилите grep по умолчанию отключён обход символических ссылок при рекурсивном поиске.
  • Добавлен модуль ядра nvmftа для поддержки контроллеров NVMe over Fabric и утилита nvmecontrol для подключения к внешнему контроллеру NVMe over Fabric.
  • В утилиту date добавлена поддержка вывода времени с наносекундной точностью, например, “date -Ins” выведет “2024-04-22T12:20:28,763742224+02:00”.
  • В jail добавлена поддержка опции zfs.dataset добавление в изолированное окружение ZFS dataset (раздела, снапшота или клона).
  • В гипервизор bhyve добавлен новый сетевой бэкенд “slirp”, использующий библиотеку libslirp с реализацией сетевого стека в пространстве пользователя. Бэкенд “slirp” позволяет настроить доступ к сети гостевой системы из хост окружения без отдельной настройки сети на стороне хоста.
  • В tty по умолчанию выставлен флаг IUTF8, при котором корректно работает удаление символов UTF-8 при нажатии Backspace.
  • Утилита dialog заменена на bsddialog.
  • Обновлены версии Lua 5.4.8, jemalloc 5.3.0, Awk 04082025, unicode 16.0.0, CLDR 45.0.0, byacc 20240109, ncurses 6.5.

На странице альфа-версии FreeBSD 15 опубликовано примечание к релизу (копия) со списком изменений, но пока данный список лишён смысла, так содержит не специфичные для ветки FreeBSD 15 изменения, а изменения в ветке 14.x относительно выпуска 14.0, т.е. в него помещены старые данные, перенесённые из ранее опубликованных примечаний к релизам 14.1, 14.2 и 14.3.

Release. Ссылка here.