This section describes the most user-visible new or changed features in FreeBSD since 9.0-RELEASE. In general, changes described here are unique to the 10-CURRENT branch unless specifically marked as MERGED features.
Typical release note items document recent security advisories issued after 9.0-RELEASE, new drivers or hardware support, new commands or options, major bug fixes, or contributed software upgrades. They may also list changes to major ports/packages or release engineering practices. Clearly the release notes cannot list every single change made to FreeBSD between releases; this document focuses primarily on security advisories, user-visible changes, and major architectural improvements.
A new cpuset(2) API has been added for thread to CPU binding and CPU resource grouping and assignment. The cpuset(1) userland utility has been added to allow manipulation of processor sets.
The ddb(4) kernel debugger now has an output capture
facility. Input and output from ddb(4) can now be captured
to a memory buffer for later inspection using sysctl(8) or
a textdump. The new capture command controls
this feature.
The ddb(4) debugger now supports a simple scripting facility, which supports a set of named scripts consisting of a set of ddb(4) commands. These commands can be managed from within ddb(4) or with the use of the new ddb(8) utility. More details can be found in the ddb(4) manual page.
The kernel now supports a new textdump format of kernel dumps. A textdump provides higher-level information via mechanically generated/extracted debugging output, rather than a simple memory dump. This facility can be used to generate brief kernel bug reports that are rich in debugging information, but are not dependent on kernel symbol tables or precisely synchronized source code. More information can be found in the textdump(4) manual page.
Kernel support for M:N threading has been removed. While the KSE (Kernel Scheduled Entities) project was quite successful in bringing threading to FreeBSD, the M:N approach taken by the KSE library was never developed to its full potential. Backwards compatibility for applications using KSE threading will be provided via libmap.conf(5) for dynamically linked binaries. The FreeBSD Project greatly appreciates the work of Julian Elischer, Daniel Eischen, and David Xu on KSE support.
The FreeBSD kernel now exports information about certain kernel
features via the kern.features sysctl tree.
The feature_present(3) library call provides a convenient
interface for user applications to test the presence of
features.
The FreeBSD kernel now has support for large memory page mappings (“superpages”).
The ULE
scheduler is now the default process scheduler
in GENERIC kernels.
The BTX kernel used by the boot loader has been changed to invoke BIOS routines from real mode. This change makes it possible to boot FreeBSD from USB devices.
A new gptboot boot loader has
been added to support booting from a GPT labeled disk. A
new boot command has been added to
gpt(8), which makes a GPT disk bootable by writing the
required bits of the boot loader, creating a new boot
partition if required.
The cmx(4) driver, a driver for Omnikey CardMan 4040 PCMCIA smartcard readers, has been added.
The syscons(4) driver now supports Colemak keyboard layout.
The uslcom(4) driver, a driver for Silicon Laboratories CP2101/CP2102-based USB serial adapters, has been imported from OpenBSD.
The ale(4) driver has been added to provide support for Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet controllers.
The em(4) driver has been split into two drivers with some common parts. The em(4) driver will continue to support adapters up to the 82575, as well as new client/desktop adapters. A new igb(4) driver will support new server adapters.
The jme(4) driver has been added to provide support for PCIe network adapters based on JMicron JMC250 Gigabit Ethernet and JMC260 Fast Ethernet controllers.
The malo(4) driver has been added to provide support for Marvell Libertas 88W8335 based PCI network adapters.
The firmware for the mxge(4) driver has been updated from 1.4.25 to 1.4.29.
The sf(4) driver has been overhauled to improve its performance and to add support for checksum offloading. It should also work on all architectures.
The re(4) driver has been overhauled to fix a number of issues. This driver now has Wake On LAN (WOL) support.
The vr(4) driver has been overhauled to fix a number of outstanding issues. It also now works on all architectures.
The wpi(4) driver has been updated to include a number of stability fixes.
The bpf(4) packet filter and capture facility now
supports a zero-copy mode of operation, in which buffers are
loaned from a user process to the kernel. This feature can
be enabled by setting
the net.bpf.zerocopy_enable sysctl
variable to 1.
ISDN4BSD(I4B), netatm, and all
related subsystems have been removed due to lack of
multi-processor support.
A bug in TCP options padding, where the wrong padding bytes were used, has been fixed.
The IEEE 802.11s element identifiers have been updated to reflect the final version of the amendment. This update breaks compatibility with older mesh setups but is necessary as the previous IDs are used by another amendment leading to unexpected results when trying to associate with an accesspoint using the affected IDs.
The aac(4) driver now supports volumes larger than 2TB in size.
The ata(4) driver now supports a spindown command for
disks; after a configurable amount of time, if no requests
have been received for a disk, the disk will be spun down
until the next request. The atacontrol(8) utility now
supports a spindown command to configure
this feature.
The hptrr(4) driver has been updated to version 1.2 from Highpoint.
A problem with using mmap(2) on ZFS filesystems has been fixed.
A new kernel-mode NFS lock manager has been added, improving performance and behavior of NFS locking. A new clear_locks(8) command has been added to clear locks held on behalf of an NFS client.
The ZFS file system has been upgraded to version 28. Changes include Data Deduplication, Triple parity RAIDZ, and zfs diff.
The adduser(8) utility now supports
a -M option to set the mode of a new user's
home directory.
BSD-licensed versions of ar(1) and ranlib(1),
based on libarchive, have replaced the GNU
Binutils versions of these utilities.
BSD-licensed versions of bc(1) and dc(1) have replaced their GNU counterparts.
chflags(1) now supports a -v flag for
verbose output and a -f flag to ignore errors
with the same semantics as (for example)
chmod(1).
For compatibility with other implementations, cp(1) now
supports a -a flag, which is equivalent to
specifying the -RrP flags.
BSD-licensed version of cpio(1) based on
libarchive, has replaced the GNU cpio.
Note that the GNU cpio is still installed as
gcpio.
The env(1) program now supports -u
which will completely unset the given variable
namename by removing it from the environment,
instead of just setting it to a null value.
The fdopendir(3) library function has been added.
The fetch(3) library now support HTTP 1.1
If-Modified-Since behavior. The fetch(1) program now
supports -i
which will only download the specified HTTP URL if the content
is newer than filenamefilename.
find(1) has been enhanced by the addition of a number of primaries that were present in GNU find but not FreeBSD find(1).
kgdb(1) now supports a new add-kld
command to make it easier to debug crash dumps with kernel
modules.
The ls(1) program now supports a -D
option to specify a date format string to be used with the long
format (-l) output.
nc(1) now supports a -O switch to
disable the use of TCP options.
nc(1)'s -o switch has been deprecated.
It will be removed in a future release.
The ping6(8) utility now returns 2
when the packet transmission was successful but no responses
were received (this is the same behavior as ping(8)).
It returned a non-zero value before this change.
The procstat(1) utility has been added to display detailed information about processes.
The realpath(1) utility now supports
a -q flag to suppress warnings; it now also
accepts multiple paths on its command line.
sh(1) has many bug fixes, some new features, and will now refuse to parse some invalid scripts. Additionally, it now has filename completion and defaults to the "emacs" editing mode.
The split(1) utility now supports a -n
flag to split a file into a certain number of chunks.
The tar(1) utility now supports a -Z
flag to enable compress(1)-style
compression/decompression.
The tar(1) utility now supports a
--numeric-owner flag to ignore user/group names
on create and extract.
The tar(1) utility now supports an
-S flag to sparsify files on extraction.
The tar(1) utility now supports a -s
flag to substitute filenames based on the specified regular
expression.
The tcgetsid(3) library function has been added to return the process group ID for the session leader for the controlling terminal. It is defined in IEEE Std 1003.1-2001 (POSIX).
top(1) now supports a -P flag to
provide per-CPU usage statistics.
zdump(8) is now working properly on 64 bit architectures.
traceroute(8) now has the ability to print the AS
number for each hop with the new -a switch; a
new -A option allows selecting a particular
WHOIS server.
traceroute6(8) now supports a -U flag
to send probe packets with no upper-layer protocol, rather than
the usual UDP probe packets.
AMD has been updated from 6.0.10 to 6.1.5.
awk has been updated from 1 May 2007 release to the 23 October 2007 release.
bzip2 has been updated from 1.0.4 to 1.0.5.
CVS has been updated from 1.11.17 to a post-1.11.22 snapshot from 10 March 2008.
FILE has been updated from 4.23 to 5.03.
hostapd has been updated from 0.5.8 to 0.5.10.
IPFilter has been updated from 4.1.23 to 4.1.28.
less has been updated from v408 to v429.
ncurses has been updated from 5.6-20061217 to 5.6-20080503.
OpenSSH has been updated from 4.5p1 to 5.1p1.
OpenPAM has been updated from the Figwort release to the Hydrangea release.
sendmail has been updated from 8.14.1 to 8.14.7.
The timezone database has been updated from the tzdata2008h release to the tzdata2009m release.
The stdtime part of libc, zdump(8) and zic(8) have been updated from the tzcode2004a release to the tzcode2009h release. If you have upgraded from source or via the freebsd-update(8), then please run tzsetup(8) to install a new /etc/localtime.
WPA Supplicant has been updated from 0.5.8 to 0.5.10.
xz has been updated from snapshot as of 12 April 2010 to 5.0.0.
The pkg_create(1) utility now supports
-n. When this option is specified and a
package tarball exists, it will not be overwritten. This is
useful when multiple packages are saved with several consecutive
runs of pkg_create(1) with the -Rb
options.
The pkg_sign and pkg_check utilities for cryptographically signing FreeBSD packages have been removed. They were only useful for packages compressed using gzip(1); however bzip2(1) compression has been the norm for some time now.
The supported version of
the GNOME desktop environment
(x11/gnome2) has been
updated from 2.20.1 to 2.22.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.