После десяти месяцев разработки официально представлен релиз FreeBSD 10.1, который доступен для архитектур amd64, i386, ia64, powerpc, powerpc64, sparc64 и armv6. Новый выпуск примечателен интеграцией консольного драйвера vt, начальной поддержкой UEFI, поддержкой гостевых систем FreeBSD/i386 и загрузки с ZFS в гипервизоре Bhyve, поддержкой многопроцессорности (SMP) для архитектуры ARMv6, реализацией протокола UDP-Lite, добавлением подсистемы autofs, переход по умолчанию на ключи ED25519 в sshd.
Основные новшества:
Система
Начальная поддержка загрузки FreeBSD/amd64 на системах с UEFI. Формирование дополнительных загрузочных образов для CD/DVD и flash-накопителей с поддержкой загрузки на системах с UEFI;
Из ветки FreeBSD-CURRENT импортирован драйвер vt, развиваемый в рамках проекта Newcons, развивающего замену syscons. Vt предоставляет новый интерфейс для обеспечения вывода через графические устройства, позволяющий организовать доступ простых драйверов к консоли и терминальному режиму, а также доступ к фреймбуферу для X.Org. При этом от драйвера не требуется встраивание шрифтов, цветовых карт и изображений курсоров мыши, все эти компоненты предоставлены Newcons-драйвером vt. Среди возможностей отмечается поддержка мыши, KMS (i915kms и radeonkms), USB-клавиатур, экрана-заставки, vidcontrol, Unicode, xterm-подобная эмуляция терминала, использование различных шрифтов в разных окнах терминала;
Расширены возможности инсталлятора (bsdinstall), в котором появилась поддержка создания зашифрованных (geli) и отзеркалированных (gmirror) разделов подкачки при установке на ZFS;
В подсистеме виртуальной памяти реализован метод "fast path" в обработчике обращений к невыделенным страницам памяти (page-fault);
В загрузчике реализовано меню для выбора используемого для загрузки ядра;
Существенно улучшена производительность кода RPC (например, используется на NFS-сервере) на SMP-системах;
Дисковая подсистема, ввод/вывод, системы хранения и файловые системы
Обновлена реализация ZFS, в которой появилась возможность установки закладок на снапшоты (zfs bookmarks). Из OpenSolaris импортирован API libzfs, который позволяет обеспечить параллельное сканирование дисков, что приведёт к сокращению времени импорта zpool;
Для файловой системы FFS (Fast File System) реализована поддержка многопоточной обработки soft updates. Ранее soft updates обрабатывались одним потоком, а теперь свой поток используется для каждой точки монтирования;
Из FreeBSD-CURRENT перенесена реализация файловой системы autofs и связанного с ней демона automountd для организации автоматического монтирования ФС при попытке обращения к связанным с ними разделам. Система автомонтирования реализована в виде, близком к подобным подсистемам Linux, OS X и Solaris, для обеспечения совместимости на уровне формата файлов маппинга;
Из FreeBSD-CURRENT импортирован новый сервер nfsd с поддержкой NFS 4.1 (RFC5661);
В GEOM_MULTIPATH обеспечена поддержка автоматического изменения размера разделов на лету. Как следствие в GEOM_PART, geom label и gmirror добавлена команда resize, позволяющая изменять размер дискового раздела или зеркала после замены всех его компонентов;
В уровень блочных устройств GEOM добавлена функциональность прямой отправки (direct dispatch), позволяющей разделить нагрузку между несколькими потоками и процессорами, сократив число переключений контекста.
В RAID-драйвере на основе GEOM, а также в драйверах mfi, virtio_blk и virtio_scsi обеспечена поддержка unmapped I/O, которая позволила поднять производительность ввода/вывода, благодаря исключению стадии маппинга буферов в TLB-кэше, что существенно снизило накладные расходы при работе на многопроцессорных системах;
В классе GEOM_ELI обеспечено кэширование пароля расшифровки, что позволяет ограничиться одним вводом пароля в процессе загрузки при наличии нескольких дисков с идентичным паролем;
Переработан механизм блокировок в CAM (ATA/SCSI) и GEOM, что позволило заметно увеличить производительность на многоядерных системах. Например, в тестах был достигнут порог в 1 млн операций ввода/вывода в секунду;
Сетевая подсистема
Поддержка протокола UDP-Lite (RFC 3828), допускающего доставку частично повреждённых пакетов с расчётом на то, что восстановление может быть проведено силами приложения. Например, битые аудио и видеоданные могут быть частично восстановлены на уровне кодека;
Серия улучшений и оптимизаций, связанных с работой iSCSI;
Изолированные окружения, безопасность и ограничения ресурсов
Код гипервизора bhyve синхронизирован с веткой FreeBSD-CURRENT. В гипервизор bhyve добавлена поддержка гостевых систем FreeBSD/i386 (в дополнение к amd64), возможность загрузки с разделов ZFS, и виртуализированная поддержка XSAVE;
Добавлен драйвер virtio_random, предоставляющий качественную энтропию генераторам псевдослучайных чисел гостевых систем;
В функции crypt для хэширования паролей по умолчанию задействован алгоритм SHA512. Добавлена поддержка формата Blowfish $2b$, допускающего использование паролей длиннее 256 символов;
Для архитектур amd64 и i386 добавлен и включён по умолчанию драйвер Hyper-V KVP (key-value pair);
В rc.d-скрипте для запуска sshd обеспечена генерация ключей ED25519, предложенных Дэниэлом Бернштейном (Daniel J. Bernstein), если ssh-ключи ещё не созданы;
Оборудование и аппаратные архитектуры
Обновлён KMS-модуль Radeon для видеокарт AMD. В том числе добавлена поддержка 32-разрядных ioctl, позволяющих запускать 32-разрядные приложения на 64-разрядных системах;
В драйвер drm/i915 для GPU Intel добавлена поддержка аппаратного контекста и возможность использования совместно с Mesa 9.2 и более новыми выпусками;
Заметно расширена поддержка архитектуры ARM, в том числе реализована и включена по умолчанию поддержка многопроцессорности (SMP), добавлена поддержка новых чипов, таких как Samsung Exynos 5250, Freescale i.MX6, Freescale i.MX53, Freescale Vybrid, а также платформ TI BEAGLEBONE и PANDABOARD;
Многочисленные обновления драйверов с поддержкой сетевых устройств и систем хранения, в том числе добавлен драйвер mrsas с поддержкой SAS-контроллеров LSI MegaRAID.
Приложения
Добавлена библиотека libucl (Unified Configuration Library) с функциями для разбора файлов конфигурации в формате JSON;
В утилите top появилась возможность фильтрации вывода по идентификатору или имени jail-окружения;
Компоненты clang/llvm обновлены до выпуска 3.4.1;
Пакетный менеджер pkg обновлён до версии 1.3.8;
По умолчанию newsyslog теперь учитывает не только newsyslog.conf но и включает конфигурационные файлы из директорий /etc/newsyslog.conf.d/ и /usr/local/etc/newsyslog.conf.d/;
Внесены оптимизации в библиотеку математических функций, добавлены новые реализации функций expl(), coshl(), sinhl(), tanhl(), erfl() и erfcl();
Обновление версий поставляемых в базовой системе сторонних приложений, в том числе: OpenSSH 6.6p1, утилита nc синхронизирована с OpenBSD 5.5, Sendmail 8.14.9, unbound 1.4.22, OpenPAM Ourouparia (20140912), OpenSSL 1.0.1j.