First Alpha for FreeBSD 10 Released

by Ostatic Staff - Sep. 17, 2013

Glen Barber from the FreeBSD team announced the availability of the first alpha download of FreeBSD 10 on their mailing list. FreeBSD 10 appears to be a significant upgrade from 9, with a long list of improvements and new features. However, as is standard with FreeBSD, the most interesting features are under the hood.

FreeBSD 10 now uses the clang front end for the LLVM compiler by default, and no longer ships with GCC in the base image. The clang project has grown quickly in the past few years, thanks in large part to Apple including it as the default compiler in Xcode, the development environment used to build iOS and OS X applications. The FreeBSD "what's new" page simply states that "GCC is no longer a part of the default base system on architectures where CLANG is used instead. CLANG is used on i386 and AMD64." The clang project claims that clang has "fast compiles and low memory use", and sports GCC compatibility.

This release also includes bhyve, the BSD Hypervisor. Bhyve is a "legacy-free Hypervisor" for FreeBSD that supports modern hardware features. This relatively new project only supports running FreeBSD guests on a FreeBSD host, which makes me wonder under which use cases would running a virtual machine under bhyve make more sense than running an application or environment in a Jail. Regardless of the performance improvements of the hypervisor layer over previous generations, it still seems like they would get better overall application throughput using jails on bare hardware than any layer of virtualization.

FreeBSD's implementation of ZFS receives several performance improvements in FreeBSD 10. ZFS will now support TRIM, which should extend the lifespan of Solid-State Drives. According to Wikipedia, "A Trim command (commonly typeset as TRIM) allows an operating system to inform a solid-state drive (SSD) which blocks of data are no longer considered in use and can be wiped internally." ZFS will also now support a faster compression algorithm, LZ4, which "improves ZFS compression/decompression performance by up to 50%/80% compared to the default LZJB". Combining TRIM support with faster compression should make SSDs formatted with ZFS very attractive as internal disks for workstations, especially when used in conjunction with zio nop-write, which reduces the amount of I/O by avoiding writing data that the filesystem can determine already exists by comparing checksums.

Finally, FreeBSD will support the Raspberry Pi platform, providing anyone an affordable Unix server to learn on.

The full list of improvements is available on the FreeBSD wiki. Being a very low-level project, it is no surprise that most of the improvements center around making the system faster and supporting larger and more powerful hardware. Or, in the case of the Raspberry Pi, much, much smaller hardware. This is still a very early release though, and not much should be expected out of it. Many things will be broken or simply not work at all in this release. The developers leave us with this warning:

NOTE TO PEOPLE WHO THINK THAT FreeBSD 10.x IS SLOW: FreeBSD 10.x has many debugging features turned on, in both the kernel and userland. These features attempt to detect incorrect use of system primitives, and encourage loud failure through extra sanity checking and fail stop semantics. They also substantially impact system performance. If you want to do performance measurement, benchmarking, and optimization, you'll want to turn them off. This includes various WITNESS- related kernel options, INVARIANTS, malloc debugging flags in userland, and various verbose features in the kernel. Many developers choose to disable these features on build machines to maximize performance. (To completely disable malloc debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)

Download, explore, but do so with an open mind and reasonable expectations.