FreeBSD 15.0 Preview: What to Expect
FreeBSD 15.0 is the next major release. Development has been ongoing in the CURRENT branch (HEAD) since well before 14.0 shipped, and the feature set is now solidifying. This post covers the planned changes, what has already landed in CURRENT, the expected timeline, and how you can test it today.
This is not speculation. Everything discussed here is either already committed to HEAD or actively under review with strong consensus. Where timelines are uncertain, that is noted.
Expected Timeline
The FreeBSD release engineering process follows a predictable pattern:
- Branch creation (stable/15): Expected mid-2025
- BETA1: Expected late 2025
- RC1: Expected Q1 2026
- 15.0-RELEASE: Expected Q1-Q2 2026
These dates can slip. FreeBSD releases when the code is ready, not to meet marketing deadlines. That said, the current pace of development suggests the branch will happen roughly on schedule.
Major Kernel Changes
64-bit Inodes by Default
FreeBSD 15 will enable 64-bit inode numbers by default on UFS. This was optional in 14.x and required a specific newfs flag. The change allows UFS filesystems to support more than 2^32 files. ZFS has always used 64-bit inodes.
This change can break poorly written software that truncates inode numbers to 32 bits. The transition has been gradual -- 14.x already supported it optionally -- so most ports are already compatible.
KTLS Improvements
Kernel TLS (KTLS) offload continues to improve. FreeBSD 15 will ship with TLS 1.3 kernel offload support for both send and receive paths. Combined with NIC hardware that supports TLS offload (Intel E810, Mellanox ConnectX-6 Dx), this means TLS termination can happen entirely in the kernel or even in hardware, bypassing userland overhead.
sh# Check KTLS status on a running system (CURRENT or 15.x) sysctl kern.ipc.tls
Improved Arm64 Support
FreeBSD 15 targets Arm64 as a Tier 1 platform with the same level of support as amd64. This means:
- Full regression testing on Arm64 hardware
- Binary updates via
freebsd-updatefor aarch64 - Consistent driver support for common Arm64 server platforms (Ampere Altra, AWS Graviton)
The Arm64 improvements extend to the desktop as well. Pinebook Pro, Raspberry Pi 4/5, and Apple Silicon (via Asahi Linux kernel work) all see continued improvement.
RISC-V Promotion
RISC-V moves from Tier 3 to Tier 2 support. This means release images will be built for RISC-V and basic support is expected to work, but it will not receive the same level of testing as amd64 or aarch64.
Network Stack Modernization
The network stack continues to shed its ancient lock hierarchy. The "epoch-based reclamation" approach for routing table lookups that started in 13.x is being extended to more subsystems, reducing lock contention in the forwarding path.
The if_bridge(4) implementation is being reworked for better VNET compatibility and performance. Jailed bridge configurations that were previously unreliable will work correctly.
sh# Network epoch stats (available on CURRENT) sysctl net.epoch
Removal of 32-bit Platform Support
FreeBSD 15 is expected to drop support for i386 (32-bit x86) as a kernel platform. 32-bit compatibility for running 32-bit binaries on amd64 (COMPAT_FREEBSD32) will remain. This has been discussed for years and aligns with the reality that no one is deploying new 32-bit x86 FreeBSD systems.
armv6 support is also being removed. armv7 remains for now but is expected to follow in a future release.
Userland Changes
Base System Compiler
LLVM/Clang will update to version 19.x or newer. The base system compiler continues to track upstream LLVM closely. This brings:
- Better code generation for modern CPUs
- Improved sanitizer support (AddressSanitizer, UndefinedBehaviorSanitizer)
- Better C23 and C++23 compliance
sh# On CURRENT, check the base compiler version cc --version
bhyve Enhancements
bhyve, FreeBSD's native hypervisor, receives significant attention in 15.0:
- Live migration: The live migration feature that has been in development for multiple release cycles is expected to be production-ready.
- VirtIO-GPU: Basic GPU passthrough for graphical VMs.
- Improved Windows support: Better UEFI compatibility and TPM 2.0 emulation for Windows 11 guests.
- Snapshots: Save and restore VM state to disk.
sh# bhyve version on CURRENT bhyve --version 2>/dev/null || echo "Check /usr/sbin/bhyve"
OpenSSL 3.x Maturation
FreeBSD 14.x shipped with OpenSSL 3.0. FreeBSD 15 will ship with OpenSSL 3.2 or later, which includes performance improvements and the QUIC API that nginx and other web servers can use for HTTP/3 support.
Improved pkg Integration
The pkg package manager will see tighter integration with the base system. Plans include:
- Ability to manage base system components as packages (
FreeBSD-kernel,FreeBSD-runtime, etc.) - Better interaction between
freebsd-updateandpkg - Improved dependency tracking across base and ports
Service Management
While FreeBSD is not adopting systemd, the rc.d system is getting quality-of-life improvements:
- Better dependency ordering with
REQUIRE/BEFOREdirectives - Improved
servicecommand output for status checks - Structured logging from service scripts
ZFS Changes
FreeBSD 15 will ship with OpenZFS 2.3.x (version TBD based on upstream release timing). Expected improvements:
Block Cloning (Mature)
Block cloning was introduced in OpenZFS 2.2 and had rough edges. By 2.3, it will be production-stable. Block cloning allows cp --reflink style copies that share underlying blocks, similar to BTRFS.
sh# Block cloning is enabled by default on new pools with feature@block_cloning zpool get feature@block_cloning tank
RAIDZ Expansion
RAIDZ expansion allows adding a single disk to an existing RAIDZ vdev, re-striping the data across all disks. This was one of the most requested ZFS features for years. It landed in OpenZFS 2.3 and will be available in FreeBSD 15.
sh# Expand an existing raidz1 vdev (on systems with RAIDZ expansion support) zpool attach tank raidz1-0 /dev/da4
Fast Dedup
The deduplication rewrite that replaces the notoriously memory-hungry legacy dedup with a "fast dedup" implementation using a more efficient on-disk dedup table. This makes ZFS dedup practical for many more workloads.
Direct I/O
Direct I/O support for ZFS allows applications to bypass the ARC (Adaptive Replacement Cache) for specific I/O patterns. This is useful for databases that manage their own caching.
Deprecated and Removed Features
Removed in 15.0
- i386 kernel: 32-bit x86 kernel will not be built. COMPAT_FREEBSD32 remains on amd64.
- armv6: Support for ARMv6 platforms (Raspberry Pi 1, Pi Zero) removed.
- ATF test framework: Migrated to a newer testing framework.
- Legacy NIS (YP) code: NIS client code remains but server components are removed from base. Available as a port.
- telnetd: Fully removed. Was disabled by default in 14.2.
Deprecated (Will Be Removed in 16.0)
- UFS version 1: UFS2 has been the default since FreeBSD 5.0. UFS1 support will be removed in a future release.
- IPX/SPX: The remaining IPX protocol code.
- Legacy SCSI drivers for ISA bus: Several drivers for hardware that has not been manufactured in decades.
Security Improvements
Capsicum Hardening
More base system utilities are being placed under Capsicum capability mode sandboxing. This limits the damage that a vulnerability in a utility can cause. Programs like gzip, bzip2, and other archive tools now enter capability mode after opening their input files.
Stack Smashing Protection
The default stack protection level is being increased. All base system binaries will be built with -fstack-protector-strong instead of the weaker -fstack-protector.
W^X Enforcement
Write XOR Execute memory protection enforcement is being tightened. Processes that attempt to have memory pages that are simultaneously writable and executable will generate warnings or errors depending on the sysctl configuration.
sh# Check W^X enforcement (on CURRENT) sysctl kern.elf64.allow_wx
Testing FreeBSD CURRENT
If you want to test these features now, you can run FreeBSD-CURRENT. This is the development branch -- expect bugs.
Option 1: VM Install
Download CURRENT snapshots:
sh# Snapshots are built regularly fetch https://download.freebsd.org/snapshots/amd64/amd64/ISO-IMAGES/15.0/FreeBSD-15.0-CURRENT-amd64-disc1.iso
Install in bhyve, VirtualBox, or any other hypervisor. Do not run CURRENT on production hardware.
Option 2: Build from Source
sh# Clone the source tree git clone https://git.FreeBSD.org/src.git /usr/src cd /usr/src git checkout main # Build the world and kernel make -j$(sysctl -n hw.ncpu) buildworld buildkernel # Install (do this on a test system, not production) make installkernel shutdown -r now # After reboot: make installworld mergemaster -Ui shutdown -r now
Option 3: Poudriere Jail
Test port builds against CURRENT without risking your host system:
sh# Create a CURRENT jail in Poudriere poudriere jail -c -j 15current -v 15.0-CURRENT -m git+https # Build a specific port against CURRENT poudriere bulk -j 15current -p default www/firefox
Reporting Bugs
If you find bugs in CURRENT:
sh# Gather system information uname -a sysctl kern.version dmesg > /tmp/dmesg.txt
File bugs at https://bugs.freebsd.org using the "Bugzilla" tracker. Include your dmesg output, steps to reproduce, and the exact CURRENT snapshot version.
Should You Wait for 15.0?
For production servers: No. Run 14.2-RELEASE now. Upgrade to 15.0 after the first point release (15.1) when the early adopter bugs are shaken out.
For development and testing: Run CURRENT in a VM or jail to prepare your software for 15.0.
For desktop users: If you need RAIDZ expansion or better Arm64 support, testing CURRENT in a non-critical setup is reasonable. Otherwise, stick with 14.2.
For port maintainers: Start testing your ports against CURRENT now. The branch is stable enough for build testing, and catching compatibility issues early is valuable.
FAQ
When will FreeBSD 15.0 be released?
The expected timeline is Q1-Q2 2026, but FreeBSD releases when the code is ready. Watch the freebsd-announce mailing list for official release engineering announcements.
Will FreeBSD 15 drop 32-bit support?
The i386 kernel will not be built. However, 32-bit application compatibility (COMPAT_FREEBSD32) will remain on amd64 systems. You can still run 32-bit FreeBSD binaries on a 64-bit kernel.
Can I upgrade directly from 14.x to 15.0?
Yes. freebsd-update will support direct upgrades from 14.x to 15.0 once the release is available. As always, create a ZFS boot environment before upgrading.
Is RAIDZ expansion safe to use?
RAIDZ expansion in OpenZFS 2.3 has undergone extensive testing but is still a new feature. If you rely on it for production data, wait for at least one point release after FreeBSD 15.0 ships to let any edge cases surface. Always maintain backups regardless.
Will FreeBSD 15 support Apple Silicon natively?
FreeBSD on Apple Silicon (M1/M2/M3) is progressing through the Asahi Linux project's hardware documentation efforts. Basic support may be available in 15.0, but full support (GPU acceleration, Thunderbolt, etc.) will take longer. For now, running FreeBSD in a VM on Apple Silicon is the practical choice.
How do I track what is going into FreeBSD 15?
Follow the svn-src-head (now src-main) mailing list and the FreeBSD wiki release engineering pages. The commit log for the main branch shows everything going into CURRENT:
shgit -C /usr/src log --oneline -50
Will my existing jails work on FreeBSD 15?
Jails running 14.x userland will work on a 15.0 kernel via COMPAT_FREEBSD14. You should upgrade jail userland to 15.x eventually, but the transition can be gradual.