Przygotowano pierwszą wersję alfa FreeBSD 15.0. Instalacyjne paczki zostały utworzone dla architektur amd64, powerpc64le, aarch64 i riscv64. Wydanie zaplanowano na 2 grudnia. Aktualizacja do gałęzi 15.0-ALPHA1 z poprzednich wydań za pomocą narzędzia freebsd-update nie została jeszcze wdrożona.
Od wersji FreeBSD 15 czas wsparcia dla dużych gałęzi po utworzeniu pierwszej wersji (15.0) został skrócony z 5 do 4 lat, a nowe duże gałęzie będą tworzone co dwa lata. Wydania pośrednie (15.1, 15.2, 15.3) będą opracowywane w ramach ustalonego cyklu rozwoju, zakładającego publikację nowych wersji w jednej gałęzi mniej więcej co 6 miesięcy, a nie raz w roku, jak było dotychczas. Biorąc pod uwagę równoczesne wsparcie dwóch różnych dużych gałęzi, nowe wydanie pośrednie będzie publikowane co 3 miesiące (15.4, 16.1, 15.5, 16.2 itd.), z wyjątkiem przygotowania pierwszych wydań nowych dużych gałęzi, przed którymi nastąpi 6-miesięczna przerwa w wydaniach (na przykład, wydanie 15.3 zostanie utworzone w czerwcu 2027 roku, 16.0 w grudniu 2027, 15.4 — w marcu 2028, 16.1 — w czerwcu 2028).
W oficjalnym ogłoszeniu dotyczącego wersji alfa FreeBSD 15 znajduje się link do notatki dotyczącej wydania (kopii) z niepoprawnym wykazem zmian. Wspomniana lista jest bezsensowna, ponieważ zawiera zmiany, które nie są specyficzne dla gałęzi FreeBSD 15, a zmiany w gałęzi 14.x w porównaniu do wydania 14.0, to znaczy znajdują się w niej stare dane przeniesione z wcześniej opublikowanych notatek dotyczących wydań 14.1, 14.2 i 14.3.
Niektóre zmiany w gałęzi FreeBSD 15, zaznaczone w Git:
- Zaniechano tworzenia obrazów instalacyjnych i zestawów binarnych paczek dla architektur 32-bitowych. Możliwość budowania programów 32-bitowych i korzystania z trybu COMPAT_FREEBSD32 do uruchamiania 32-bitowych plików wykonywalnych w środowisku opartym na 64-bitowym jądrze będzie zachowana co najmniej do końca cyklu życia gałęzi FreeBSD 16.
- Usunięto menedżera logicznych woluminów gvinum, który był używany do programowego RAID. Rozwój Gvinum zatrzymał się około 15 lat temu, pomimo że w kodzie występuje szereg znanych problemów, które nikt nie podjął się naprawić. Zamiast gvinum zaleca się stosowanie gconcat, gmirror, gstripe, graid lub zfs.
- Planowane jest usunięcie sterownika agp (Accelerated Graphics Port), niezbędnego do działania wielu sterowników dla starszych kart graficznych.
- Stan sterowników DRM i915 oraz amdgpu został zsynchronizowany z jądrem Linux 6.9.
- Dodano wsparcie dla nazwanych atrybutów plików (rozszerzonych atrybutów w stylu Solaris), które planuje się wspierać jako alternatywny mechanizm zarządzania rozszerzonymi atrybutami dostępnymi dla ZFS i NFSv4. Różnice w porównaniu do tradycyjnych metod pracy z rozszerzonymi atrybutami w FreeBSD i Linuksie dotyczą przedstawienia atrybutów w specjalnym katalogu, niewidocznym w głównym przestrzeni nazw FS, i skojarzonym z plikiem. Operacje na atrybutach wykonuje się jak na zwykłych plikach, na przykład, aby określić listę atrybutów, można użyć funkcji readdir().
- Zaimplementowano wywołania systemowe z realizacją mechanizmu inotify do śledzenia zmian w systemach plików.
- Dodano narzędzie sndctl do zarządzania ustawieniami kart dźwiękowych.
- Dodano narzędzie mididump do zrzutu zdarzeń MIDI 1.0 w czasie rzeczywistym.
- Ogłoszono gotowy do użycia moduł mac_do, który pozwala na definiowanie polityk umożliwiających nieuprzywilejowanym użytkownikom zmianę danych uwierzytelniających procesów. Do uruchamiania poleceń jako inny użytkownik przygotowano narzędzie mdo, podobne do narzędzia su, ale nie wymagające uprawnień suid roota.
- Implementacja protokołu TLS po stronie jądra (KTLS) jest włączona domyślnie.
- Do hyperwizora bhyve dodano nowy backend sieciowy „slirp”, który wykorzystuje bibliotekę libslirp z realizacją stosu sieciowego w przestrzeni użytkownika. Backend „slirp” umożliwia dostęp do sieci systemu gościa z poziomu środowiska hosta bez konieczności dodatkowej konfiguracji sieci po stronie hosta.
- Zachowanie wywołań systemowych setgroups, getgroups oraz initgroups przy przetwarzaniu grup użytkowników zostało zbliżone do innych platform (różnica w implementacji w FreeBSD polegała na przechowywaniu efektywnego identyfikatora grupy procesów w zerowym elemencie tablicy ze listą grup).
- Implementacja Kerberos w podstawowej wersji FreeBSD została zastąpiona Heimdal Kerberos przez MIT Kerberos. Aby przywrócić Heimdal Kerberos podczas kompilacji, można użyć flagi WITHOUT_MITKRB5. W FreeBSD 16 wsparcie dla kompilacji Heimdal Kerberos zostanie usunięte.
- W NFS dodano wsparcie dla operacji CLONE, określonej w specyfikacji NFSv4.2, która umożliwia szybkie kopiowanie plików poprzez klonowanie bloków na serwerze. Tryb ten działa tylko przy eksporcie przez NFS partycji ZFS.
- Zwiększona niezawodność dla partycji z systemem plików UFS, zawierających ponad 2 000 000 000 inode.
- Na systemach amd64 dodano możliwość korzystania z więcej niż 4TB RAM.
- Ogłoszono przestarzałą funkcję readdir_r.
- W serwerze SNMP bsnmpd zaprzestano wsparcia dla transportu UDP.
- Dodano sterownik ufshci do obsługi kontrolerów systemów magazynowania z interfejsem UFSHCI (Universal Flash Storage Host Controller Interface).
- Domyślnie wyłączono i uznano za przestarzałe ustawienie net.inet.tcp.nolocaltimewait, tzn. przywrócono domyślne tworzenie wpisów TIME_WAIT dla połączeń TCP przerwanych po stronie lokalnej. Aby skonfigurować czas trwania połączenia w stanie TIME_WAIT, dodano nowy sysctl net.inet.tcp.msl_local.
- Domyślnie wyłączono wsparcie dla tworzenia połączeń sieciowych do localhost, wskazując INADDR_ANY. Aby przywrócić wsparcie, można ustawić sysctl net.inet.ip.connect_inaddr_wild na 1.
- Domyślnie ustawienie sysctl net.link.bridge.member_ifaddrs wynosi 0, co oznacza, że można dodawać interfejsy do mostów sieciowych bez. adresów IP.
- W implementacji systemu plików UFS1 rozwiązano problem roku 2038 (można używać dat do roku 2106).
- Zaprzestano generowania kluczy hosta RSA dla SSH i EC2 AMI.
- Dodano opcję gniazd sieciowych SO_SPLICE do łączenia połączeń TCP (podobnie jak proxy, działające bez kopiowania danych do przestrzeni użytkownika).
- W narzędziu grep domyślnie wyłączono przeszukiwanie symbolicznych linków podczas rekurencyjnego wyszukiwania.
- Dodano moduł jądra nvmf dla wsparcia kontrolerów NVMe over Fabric oraz narzędzie nvmecontrol do podłączenia do zewnętrznego kontrolera NVMe over Fabric.
- Do narzędzia date dodano wsparcie dla wyświetlania czasu z dokładnością do nanosekund, na przykład „date -Ins” wyświetli „2024-04-22T12:20:28,763742224+02:00”.
- W jail dodano wsparcie dla opcji zfs.dataset, aby dodać do izolowanego środowiska jail partycję, migawkę lub klon ZFS.
- W tty domyślnie ustawiono flagę IUTF8, przy której prawidłowo działa usuwanie znaków UTF-8 po naciśnięciu Backspace.
- Narzędzie dialog zastąpiono bsddialog.
- Zaktualizowano wersje Lua 5.4.8, jemalloc 5.3.0, Awk 04082025, unicode 16.0.0, CLDR 45.0.0, byacc 20240109, ncurses 6.5.
Źródło: opennet.ru
