FreeBSD 10 has been in the works for a while. FreeBSD 9 became available on 12 January 2012 and now 20 months later, FreeBSD 10 is shaping up nicely, with two alpha releases available for testing.
According to the Release Schedule FreeBSD 10 will receive the RELEASE status in November, but since the developers aim for quality of product over speed of release, this may slip into Dec 2013 / Jan 2014.
There has been a lot of maturing technologies in FreeBSD 10, with many new features which make this release, I think, the most exciting one in years. A lot of development has gone into virtualisation support. Virtualisation with FreeBSD Jails has been available for a long time, but not so much “full virtualisation”.
Let’s have a look at the some of the most talked about, most requested and most interesting features that have found their way into or are planned for “10.0″, but may not make the deadline. (More details and links to feature commits can be found FreeBSD 10 Wiki page).
pkgng – pkgng is the new package management tool for FreeBSD
LLVM/Clang – FreeBSD 10.0 will deprecate the GPL-licensed GCC and switch to the BSD-licensed LLVM/Clang compiler (v3) by default. GCC is still in the source tree. It’s been switched off on platforms that LLVM supports fully (amd64, arm, armv6, i386), but can easily be built; just add WITH_GCC=YES to /etc/src.conf and ‘make -C/usr/src buildworld installworld’. (Thanks @DES for this clarification)
Unmapped VMIO buffers – The use of the unmapped buffers eliminate the need to perform TLB shootdown for mapping on the buffer creation and reuse, greatly reducing the amount of IPIs for shootdown on big-SMP machines and eliminating up to 25-30% of the system time on i/o intensive workloads
Libc++ – Libc++ has been integrated in FreeBSD 10. The libc++ library is focused upon C++11 support, is licensed under the MIT/UIUC license (rather than GPL) and will now be used instead of libstdc++
Variable symlinks – The support for variable symbolic links (varsym) supports automatic expansion of per-process, per-jail or system-wide variables in symbolic file links (may not make it in final release)
Tickless kernel – FreeBSD 10.0 now supports a truly tickless kernel, enhancing battery performance on laptops and general resource effectiveness in virtual machines
AMD Kernel Mode-Setting – AMD GPUs kernel mode setting supports the use of newer xf86-video-ati drivers and AMD GPUs
New iSCSI stack – The new iSCSI stack is kernel-mode and focused on reliability and interoperability
RDRAND – Intel’s “Bull Mountain” RDRAND CPU instruction set on Ivy Bridge and Haswell CPUs for random number generator access will be supported in FreeBSD 10
KMS – A new X.Org stack with initial KMS support. Kernel mode-setting support in FreeBSD is still not at the level of support found on Linux for Intel, Radeon, and Nouveau hardware, but making good progress.
UEFI boot-loader support (may not make it in final release)
Animated boot splash support
BIND replacement – Unbound and LNDS will replace BIND as the system’s DNS resolver. BIND will still be available from the ports.
PF firewall with SMP support. The PF firewall is now SMP-friendly. It supports fine-grain locking and better utilisation of CPUs on multi core machines. This means greater performance due to the multi-threading
NetMap – The NetMap framework for high-performance raw Ethernet packet access (paragraph updated – Thanks @Ed)
CARP – CARP support has been overhauled and rewritten from the ground up
Wifi improvements – Improved 802.11n WiFi/WLAN wireless networking stack with support for new features and new drivers (e.g. Atheros PCI/PCIe 802.11n WiFi adapter from Qualcomm ,SMP/concurrency races, 802.11n TX aggregation)
PCI hot-plug support (may not get included)
Apple Thunderbolt connectivity support (may not make it in final release)
USB Audio 2.0 – USB Audio support has been revamped, supporting new devices, higher bandwidth support and increased sampling frequency (may not make it in final release)
FreeBSD/arm – Greatly improved support for the ARMv6 and ARMv7 platforms, incl SMP, thread-local storage (TLS) and superpages. Support for new ARM SoCs like the Texas Instruments OMAP4 and MV78x60 included
Raspberry Pi support.
ZFS – FreeBSD 10.0 brings with it support for ZFS TRIM and it also supports LZ4 compression support which compresses much better (up to 50%) than the default LZJB compression. L2ARC compression support was also added, as well as NOP-write optimisation (ported from Illumos). All this will be great for using FreeBSD or FreeNAS as your NAS file server.
UFS live file-system resizing support. A UFS formatted filesystem can now be enlarged with growfs(8) when mounted in read-write mode. This should come in useful when adding extra storage to virtual machines without interrupting the service. Newly created UFS file systems will have faster fsck operation
FUSE – FreeBSD 10.0 brings in FUSE file-system support in user-space. FUSE file systems can now be accessed under FreeBSD without installing the “fusefs-kmod” kernel module from ports. This will make accessing these file systems (Linux) more stable.
bhyve – bhyve is the new native BSD Hypervisor and present in FreeBSD 10, developed from the ground up to offer a light-weight low-level HVM virtualization on FreeBSD. bhyve supports the latest AMD and Intel virtualisation extensions, and is able to run the FreeBSD kernel fully virtualised. bhive also supports VirtIO for para-virtualization
Virtio – “virtio” is the name for the para-virtualisation interface developed for the Linux KVMVirtio drivers are developed alongside byhve. Any hypervisor supporting this interface should run without problems (Qemu/KVM, VirtualBox and BHyVe). The BSD-licensed implementation of the virtio kernel drivers support PCI, memory balloon, network IO, block and SCSI interfaces.
Xen – FreeBSD 10 comes with Xen DomU x86_64 support, Xen i386 PV support, plus many other Xen related items (USB PV drivers, SCSI pass-through, PowerPC/ARM/MIPS support, PV SMP support). Before you ask: No, there’s no Xen Dom0 support, yet
VPS – Virtual Private Systems for FreeBSD is an extension of the VIMAGE concept to the rest of the kernel (OS-level virtualisation, similar to jails), allowing live migration of VPSs from one host to another. This project is still in SVN and may not make it in final release)
All in all this is an impressive list of new features. This makes the release of FreeBSD definitely something to look forward to.
Which of the above or other features are you eagerly waiting for?