После полутора лет разработки официально доступен релиз FreeBSD 10.4, который сформирован для архитектур amd64, i386, ia64, powerpc, powerpc64, sparc64 и armv6. Дополнительно подготовлены образы для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2, Google Compute Engine и Hashicorp/Atlas Vagrant.

Основные новшества:

  • Обеспечена полная поддержка памяти eMMC (впаиваемая в платы flash-память с MMC-контроллером), включая разделы eMMC, операции TRIM и режимы высокоскоростной передачи DDR52 (до 80 MB/s) , HS200 (до 200 MB/s) и HS400 (до 400 MB/s), которые присутствует в контроллерах, поставляемых в чипсетах Intel Apollo Lake, Bay Trail и Braswell. В драйвер mmcsd также добавлен ioctl-интерфейс, совместимый с Linux, что позволят использовать во FreeBSD уже существующие утилиты, такие как GNU mmc-utilssys (в портах utils/mmc-utils), для разбивки разделов eMMC, запроса прогноза времени жизни накопителя, получения информации о скором истечении ресурса Flash-памяти и вывода базовой информации из SD-карт;
  • В утилиту fsck_ffs добавлена поддержка поиска альтернативного суперблока, в случае использования дисковых меток GPT (disk label);
  • Объявлены устаревшими утилиты rlogin, rsh, rcp, ruptime и rwho, которые будут удалены из состава FreeBSD 12.0-RELEASE (но сохранятся в портах net/bsdrcmds). Указанные утилиты, позволяющие удалённо выполнять команды и копировать файлы без входа в систему, давно вытеснены SSH. Также помечены устаревшими отладчики gdb и kgdb, вместо которых следует использовать порт devel/gdb;
  • В NFS-клиент добавлена поддержка NFSv4.1/pNFS в режиме DS;
  • В ipfw/dummynet интегрирована поддержка Dummynet AQM, независимой реализации алгоритмов CoDel и FQ-CoDel (Сontrolled Delay – управляемая задержка), позволяющих существенно поднять производительность работы в беспроводных сетях;
  • В сетевой стек добавлена поддержка повторной передачи GARP (Gratuitous ARP). Для задания максимального числа повторных передач предложена переменная net.link.ether.inet.garp_rexmit_count;
  • В утилиту трассировки системных вызовов truss добавлен флаг “-H”, при указании которого в лог сбрасываются данные об идентификаторе потока, из которого было обращение к системному вызову;
  • Добавлена утилита zfsbootcfg для настройки загрузочных опций zfsboot;
  • Добавлена утилита cxgbetool, предоставляющая интерфейс для отладки и изменения параметров устройств cxgbe;
  • В утилите ifconfig реализована возможность просмотра MAC-адреса, зашитого в сетевой карте (в случае, если MAC переопределён пользователем);
  • В cron добавлена поддержка обработки сценариев запуска, сохранённых в каталогах /etc/cron.d и /usr/local/etc/cron.d;
  • В утилите syslogd появилась поддержка ключевого слова “include”, через которое можно определить директорию с файлами конфигурации, помимо базового syslog.conf (по умолчанию теперь дополнительно подключаются /etc/syslog.d и /usr/local/etc/syslog.d);
  • В утилиту newsyslog добавлена возможность вывода журнала через syslogd в формате, совместимом с RFC5424 (добавлен флаг “T” в newsyslog.conf);
  • В инсталляторе bsdinstall обеспечена проверка применения для новых разделов выравнивания по границе 4096 байт. Размер создаваемого по умолчанию раздела EFI увеличен с 800KB до 200MB;
  • В функции stdio обеспечена корректная обработка отложенного режима уничтожения потока (deferred cancel), позволяющая исключить возможные блокировки в многопоточных приложениях, использующих функции funopen, fropen и fwopen;
  • Тип max_align_t теперь определён для приложений, использующих стандарт C11;
  • В ptrace добавлена поддержка событий vfork, а также создания и уничтожения нитей;
  • В coredump включены данные об идентификаторе процесса (PID) и аргументах командной строки;
  • Генерация coredump пользовательскими процессами теперь может инициировать вызов обработчиков событий (через devd), таких как создание читаемого отчёта о крахе;
  • Добавлены sysctl kern.features.linux и kern.features.linux64, позволяющие определить включение в ядре компонентов для совместимости с 32- и 64-разрядными исполняемыми файлами Linux;
  • В драйвере aesni прекращено совместное использование одного контекста FPU между несколькими сеансами в нескольких потоках, что позволило избавиться от проблем, возникающих при использовании aesni для ускорения ipsec;
  • В драйвер em добавлена поддержка вариантов Ethernet-контроллеров Intel i219, используемых в процессорах на базе микроархитектуры Kaby Lake;
  • Обеспечена возможность включения режима WOL (Wake On LAN) для драйвера igb, а также в драйвере em для чипов Intel i217, i218 и i219;
  • В драйверы cxgbev и cxgbe добавлена поддержка виртуальных функций (VF, Virtual Function), предоставляемых адаптерами Chelsio T4, T5 и T6. В cxgbe добавлена поддержка адаптеров Chelsio T6, поддерживающих скорости 10, 25, 40 и 100 Gbps;
  • В драйвер alc добавлена поддержка гигабитных Ethernet-карт Atheros Killer E2400 и E2500
  • В драйвер qlnxe добавлена поддержка адаптеров Cavium Qlogic 45000;
  • В драйвере qlxgbe решены проблемы, связанные с TSO и блокировками, внесены оптимизации производительности и вывод статистики об MAC, RX и TX через sysctl. Прошивка, поставляемая с драйвером qlxgbe, обновлена до версии 5.4.66;
  • В драйвер mpr добавлена поддержка трёх-режимных (SAS/SATA/PCIe) адаптеров Broadcom;
  • В драйвер arcmsr добавлена поддержка SATA-контроллеров ARC-1884;
  • В драйвер mlx5ib добавлена поддержка адаптеров Mellanox ConnectX-4;
  • Обновлены версии сторонних компонентов, в том числе
    OpenSSH 7.3p1, GNOME 3.18, X.Org Server 1.18.4, amd 6.2, xz 5.2.3,
    zlib 1.2.11, ntpd 4.2.8p10, tcsh 6.20.0, libarchive 3.3.2,
    bmake 20170720, pci_vendors 2017.07.27. Пакетный менеджер pkg обновлён до версии 1.10.1.