Разработчики FreeBSD опубликовали отчёт о развитии проекта с июля по сентябрь 2020 года. Наиболее существенным достижением стала реализация возможности сборки базовой системы FreeBSD в окружениях на основе других операционных систем. Необходимость сборки в других операционных системах обусловлена желанием задействовать для тестирования FreeBSD инструментарии непрерывной интеграции, завязанные на Linux или macOS.
Работа по реализации кросс-сборки продолжалась с 2017 года и в сентябре был включён последний патч, необходимый для полноценной работы buildworld и buildkernel в других ОС. Сборка запускается при помощи специально подготовленной прослойки ./tools/build/make.py и может быть произведена в системах с установленным LLVM 10 или 11.
Среди других изменений:
Работа по реализации кросс-сборки продолжалась с 2017 года и в сентябре был включён последний патч, необходимый для полноценной работы buildworld и buildkernel в других ОС. Сборка запускается при помощи специально подготовленной прослойки ./tools/build/make.py и может быть произведена в системах с установленным LLVM 10 или 11.
Среди других изменений:
- На основе грантов от организации FreeBSD Foundation ведётся работа по улучшению поддержки WiFi, усовершенствованию фреймворка Linux KPI для совместимости с DRM API ядра Linux, расширению совместимости Linuxulator с приложениями, обновлению графических драйверов, добавлению сжатия Zstd в OpenZFS, расширению разделов RAID-Z на лету, улучшению поддержки отладчика LLDB. Сотрудники FreeBSD Foundation также работают над усовершенствованием компоновщика rtld (Run-Time Dynamic Linker) и загрузчика ELF, улучшением блокировок для UNIX domain socket, модернизацией сборочной инфраструктуры, расширением поддержки ARM64 и миграцией репозитория на Git.
- Завершена разработка скриптов и сборочных инструментов для миграции с Subversion на Git. Все известные проблемы в svn2git решены, в том числе проблемы с несогласованностью метаданных в истории изменений из Subversion. Опробован новый Git-репозиторий и запущена сборка снапшотов веток 12.2 и 13.0-CURRENT из Git. Окончательный переход на Git будет осуществлён при подготовке релиза FreeBSD 13.0. Разработку существующих стабильных веток на Git переводить пока не планируют. В конце октября планируют запустить тестовый Git-репозиторий для обкатки хуков и ознакомления разработчиков. Перевод на Git основных репозиториев src и doc ожидается в середине ноября, сроки по переносу репозиториев портов пока не определены.
- Коллекция портов FreeBSD преодолела рубеж в 40 тысяч портов, число незакрытых PR составляет 2525, из которых 595 PR ещё не разобраны. Обновлены версии Perl 5.32, PostgreSQL 12, PHP 7.4, GNOME 3.36, Qt5 5.15.0, Emacs to 27.1, KDE Frameworks 5.74.0 и pkg 1.15.8. Реализована поддержка LibreOffice 7.0.
- Обновлены компоненты графического стека. Mesa и связанные порты переведены на использование сборочной системы meson вместо autotools. Обновлены X.org Server 1.20.9, libdrm и libevdev. графические drm-драйверы синхронизированы с ядром Linux 5.4.62. В основные кодовые базы libdrm и libevdev приняты изменения для поддержки FreeBSD.
- Проведена работа по использованию udev/evdev и libinput для повышения совместимости с устройствами ввода, для которых теперь не требуются локальные настройки. Изменение будет предложено в выпуске FreeBSD 12.2, ожидаемом 27 октября.
- В инфраструктуре эмуляции окружения Linux (Linuxulator) началась работа по решению проблем с функционированием конкретных Linux-приложений (например, ведётся разбор причин неработоспособности Chromium, Firefox, DB2, Oracle, EAGLE, Memcached, Nginx, Steam, signal-desktop, VLC, 1password). За отчётный период объявляемая эмулятором версия ядра Linux повышена до 3.10.0 (как в RHEL 7), налажена работа вызова gettynam в chroot, улучшена поддержка memfd, добавлены системный вызов splice и ioctl BLKPBSZGET, реализована поддержка kcov. Добавлен новый sysctl compat.linux.use_emul_path. Переделана обработка ошибок. До версии 1.0.123 обновлён порт sysutils/debootstrap для создания изолированных окружений с Debian и Ubuntu. Изменения будут включены в состав выпуска 12.2.
- Файлы DTS (Device Tree Sources) синхронизированы с ядром Linux 5.8 в ветке HEAD и с ядром 5.6 в ветке 12-STABLE.
- Продолжается работа по реализации возможности работы NFS поверх шифрованного канала связи на базе TLS 1.3, вместо использования Kerberos (режим sec=krb5p), который ограничивается шифрованием только RPC-сообщений и реализуется только программно. Новая реализация использует предоставляемый ядром стек TLS, позволяющий задействовать средства аппаратного ускорения. Код NFS поверх TLS готов для тестирования, но поддержка TLS пока ограничена версией 1.2.
- Ведётся работа по реализации подсистемы XDP (eXpress Data Path), позволяющей запускать еBPF-программы на уровне сетевого драйвера с возможностью прямого доступа к DMA-буферу пакетов.
- В IPSec добавлена поддержка ESN (Extended Sequence Number).
- Ведётся работа по поддержке SoC NXP LS1046A на базе ARMv8 Cortex-A72.
- Развивается драйвер ure для гигабитных ethernet-адаптеров RealTek RTL8153 с интерфейсом USB 3.0.
- Во FreeBSD-CURRENT добавлена экспериментальная поддержка little-endian архитектуры PowerPC64 (PowerPC64LE) для систем POWER8 и POWER9.
- В беспроводном стеке улучшена поддержка 802.11n и 802.11ac. Развивается драйвер athp для чипов Atheros 802.11ac, основанный на коде Linux-драйвера ath10k. В прослойке LinuxKPI обеспечена начальная поддержка беспроводных драйверов.
- Завершена работа по интеграции алгоритма сжатия ZSTD в OpenZFS. Изменения уже переданы в репозиторий OpenZFS и войдут в состав выпуска OpenZFS 2.0.
- Продолжается работа над CheriBSD, ответвления от FreeBSD для исследовательской процессорной архитектуры CHERI (Capability Hardware Enhanced RISC Instructions). Уже почти готова адаптация для процессора ARM Morello, который будет поддерживать систему управления доступом к памяти CHERI, основанную на модели защиты проекта Capsicum. Чип Morello планируют выпустить в 2021 году. Продолжается развитие CheriBSD для эталонного прототипа CHERI на базе архитектуры MIPS64 и порта для архитектуры RISC-V.