FreeBSD 15.0 is finally here! It is the first stable/15 release and it very clearly tells aging 32-bit hardware to stay in the past while the project focuses on modern servers, clouds, and reasonably current desktops.
For years, the project has been warning that 32-bit support was on borrowed time. With 15.0, that line is crossed: i386, armv6, and 32-bit powerpc are retired. Only armv7 survives as a Tier 2 holdout for 32-bit, while amd64 and aarch64 take center stage, with powerpc64, powerpc64le, and riscv64 still in the mix as 64-bit options. If you are still running FreeBSD on an ancient Pentium as a router, 15.0 is the point where you either stick with 14.x or finally accept that your “lab box” really is a doorstop.
The project is also embracing a more modern way of installing and managing the base system. 15.0 continues the packaged base story: the FreeBSD “base” system can be installed and managed with pkg, and there is now a FreeBSD-kmods repository specifically for kernel modules built against 15.0. That matters if you care about graphics drivers or out-of-tree modules that tend to break every time the kernel wiggles.
Cloud users get a lot of attention this cycle. FreeBSD 15.0 ships official cloud-init support, including config-drive handling, so images behave more like what Linux admins expect when they spin up OpenStack or VPS instances. The project is now publishing OCI-compatible container images, Oracle Cloud Infrastructure images, and a whole family of Amazon EC2 images, including “small” stripped-down builds and “builder” images that boot into RAM and let you customize a base install before turning it into an AMI. Boot times on EC2 are advertised as up to 76 percent faster than 14.0, especially on arm64 Graviton instances.
Networking and storage see the kind of deep plumbing changes that FreeBSD users usually care about. On the storage side, 15.0 adds NVMe over Fabrics over TCP on both the initiator and target side, so you can connect to remote NVMe controllers and export namespaces as NVMe targets backed by ctl(4) LUNs. ZFS pulls in OpenZFS 2.4.0-rc4, with support for block cloning that also powers the NFSv4.2 CLONE operation, letting an NFS client request copy-on-write “copies” of files when talking to a ZFS server with block cloning enabled. UFS gets more reliable handling of huge inode counts and pushes the old UFS1 timestamp limit out to 2106, which should keep your weird legacy partitions from falling off a cliff in 2038.
On the network stack, FreeBSD adds SO_SPLICE, originally from OpenBSD, so userland can splice two TCP sockets together and let the kernel forward traffic directly. The TCP stack’s TIME_WAIT behavior is adjusted for local connections, and there is new inline IPsec offload infrastructure that mlx5 can tap into on modern Nvidia ConnectX hardware. Kernel TLS is now enabled by default in GENERIC kernels on the main 64-bit platforms. pf gets the option to default to “drop” via a tunable and supports OpenBSD-style NAT syntax on pass and match rules, which will make rule sets a bit more familiar to admins who bounce between BSDs.
Desktop and laptop users are not ignored, although this is still FreeBSD, not a pop-culture Linux distro with a cartoon mascot on the wallpaper. Wireless support moves forward with updates to the rtw88 and rtw89 drivers, the iwlwifi driver, and a new iwx driver for Intel Wi-Fi 6 hardware, plus 802.11ac support across more chipsets. On the input side, usbhid is now the preferred USB HID stack and can handle compound devices, game controllers including Xbox 360 and PS4 pads, stylus tablets, special keyboard keys, and raw HID devices. GPU owners will be happy to hear that long-running hangs and gradual slowdowns with some AMD and newer Intel GPUs when using drm-kmod have been addressed, especially for Polaris, Vega, and certain Intel generations.
Audio gets cleaned up too. The old snd_clone framework is gone, device nodes are simpler, and audio now supports asynchronous detach, which means hot-plugging USB headsets or suspending and resuming with PulseAudio or similar setups should be less of an adventure. A new sndctl tool consolidates audio controls into a single interface, and virtual_oss is imported into base so you no longer rely on the port for basic use.
Under the hood, the toolchain looks very current. FreeBSD 15.0 ships LLVM 19.1.7, OpenSSL 3.5.4, OpenSSH 10.0p2, updated ncurses, tzdata 2025b, and refreshed libraries like jemalloc, libarchive, libpcap, libfido2, and more. The C library uses SIMD routines on amd64 for faster string and memory operations where possible, and math functions like tgammal, asinf, and acosf get better accuracy. For scripting, One True Awk is updated with UTF-8 and CSV support, which sounds small but will matter if you live in awk one-liners all day.
If you live in jails and care about security policy, 15.0 is a busy release. Jails can be managed through jail descriptors that avoid ID race conditions and can be tracked with new kqueue filters. mac_do is marked production ready and gains finer-grained control, including rules that tie credential transitions to specific user and group combinations. A new setcred system call lets you change all the relevant credentials in one shot while giving MAC modules full visibility into the before and after state. There is also a long list of security advisories baked into 15.0, including OpenSSH keystroke obfuscation issues, filesystem overflow fixes, xz and libarchive bugs, and OpenSSL vulnerabilities.
Of course, some things are heading to the graveyard. agp, the old floppy disk controller, FireWire, the le Ethernet driver, and the upgt USB Wi-Fi driver are all deprecated and scheduled for removal in FreeBSD 16. syscons is marked for retirement in favor of vt, and the shar utility has already left the base system in favor of a port. The project also deprecates DSA in OpenSSH and removes the obsolete publickey database that depended on DES. If you are somehow still using that, the year in the calendar is a bigger problem than this release.
Upgrading from a prior stable release is still handled by freebsd-update for most users, with the usual warning to back up your data before you start. There is some extra friction for people who ran pre-release 15.0 pkgbase images, thanks to late infrastructure changes. Those users need either to copy specific config and key files from a source tree after a certain date or force-install a bootstrap package and verify checksums. It is a bit ugly, but it is also the price of living on the bleeding edge of the STABLE and CURRENT branches.
So who should care about FreeBSD 15.0? If you run modern servers, want first-class ZFS, jails, and a current toolchain, and you are already on 64-bit hardware, this is the obvious next stop. If you depend on newer Wi-Fi chips, USB gamepads, or modern GPUs, the driver work alone is worth a look. And if you are a Linux kernel fan who has been meaning to poke at a different Unix in your homelab, 15.0 is a good excuse to spin up a VM or a cloud instance and see how far the project has quietly moved while everyone else was yelling about systemd.
Just do not try to install it on that old 32-bit box hiding in your closet. FreeBSD 15.0 has finally moved on.