diff --git a/website/content/en/releases/13.0R/relnotes.adoc b/website/content/en/releases/13.0R/relnotes.adoc index 3e235f6bd2..fc9f40d388 100644 --- a/website/content/en/releases/13.0R/relnotes.adoc +++ b/website/content/en/releases/13.0R/relnotes.adoc @@ -1,342 +1,319 @@ --- title: "FreeBSD 13.0-RELEASE Release Notes" sidenav: download --- = FreeBSD {releaseCurrent} Release Notes :doctype: article :toc: macro :toclevels: 1 :icons: font :releaseCurrent: "13.0-RELEASE" :releaseBranch: "13-STABLE" :releasePrev: 12.2-RELEASE :releaseNext: 13.1-RELEASE :releaseType: "release" include::shared/en/urls.adoc[] == Abstract [.abstract-title] The release notes for FreeBSD {releaseCurrent} contain a summary of the changes made to the FreeBSD base system on the {releaseBranch} development line. This document lists applicable security advisories that were issued since the last release, as well as significant changes to the FreeBSD kernel and userland. Some brief remarks on upgrading are also presented. [[intro]] == Introduction This document contains the release notes for FreeBSD {releaseCurrent}. It describes recently added, changed, or deleted features of FreeBSD. It also provides some notes on upgrading from previous versions of FreeBSD. The {releaseType} distribution to which these release notes apply represents the latest point along the {releaseBranch} development branch since {releaseBranch} was created. Information regarding pre-built, binary {releaseType} distributions along this branch can be found at https://www.FreeBSD.org/releases/[https://www.FreeBSD.org/releases/]. The {releaseType} distribution to which these release notes apply represents a point along the {releaseBranch} development branch between {releasePrev} and the future {releaseNext}. Information regarding pre-built, binary {releaseType} distributions along this branch can be found at https://www.FreeBSD.org/releases/[https://www.FreeBSD.org/releases/]. This distribution of FreeBSD {releaseCurrent} is a {releaseType} distribution. It can be found at https://www.FreeBSD.org/releases/[https://www.FreeBSD.org/releases/] or any of its mirrors. More information on obtaining this (or other) {releaseType} distributions of FreeBSD can be found in the link:{handbook}/mirrors[Obtaining FreeBSD appendix] to the link:{handbook}/[FreeBSD Handbook]. All users are encouraged to consult the release errata before installing FreeBSD. The errata document is updated with "late-breaking" information discovered late in the release cycle or after the release. Typically, it contains information on known bugs, security advisories, and corrections to documentation. An up-to-date copy of the errata for FreeBSD {releaseCurrent} can be found on the FreeBSD Web site. This document describes the most user-visible new or changed features in FreeBSD since {releasePrev}. In general, changes described here are unique to the {releaseBranch} branch unless specifically marked as MERGED features. Typical release note items document recent security advisories issued after {releasePrev}, 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. [[upgrade]] == Upgrading from Previous Releases of FreeBSD Binary upgrades between RELEASE versions (and snapshots of the various security branches) are supported using the man:freebsd-update[8] utility. The binary upgrade procedure will update unmodified userland utilities, as well as unmodified GENERIC kernels distributed as a part of an official FreeBSD release. The man:freebsd-update[8] utility requires that the host being upgraded have Internet connectivity. Source-based upgrades (those based on recompiling the FreeBSD base system from source code) from previous versions are supported, according to the instructions in [.filename]#/usr/src/UPDATING#. [IMPORTANT] ==== Upgrading FreeBSD should only be attempted after backing up _all_ data and configuration files. ==== [[security-errata]] == Security and Errata This section lists the various Security Advisories and Errata Notices since {releasePrev}. [[security]] === Security Advisories [.informaltable] [cols="1,1,1", frame="none", options="header"] |=== | Advisory | Date | Topic |No advisories. | | |=== [[errata]] === Errata Notices [.informaltable] [cols="1,1,1", frame="none", options="header"] |=== | Errata | Date | Topic |No notices. | | |=== // Sample release notes entry. //The man:fsck_msdosfs[8] utility has been updated to include a variety of enhancements, including reducing the memory footprint, a new flag, `-M`, which disables the use of man:mmap[2], and others. gitref:9708ba9f29[repository=src] [[userland]] == Userland This section covers changes and additions to userland applications, contributed software, and system utilities. [[userland-config]] === Userland Configuration Changes [[userland-programs]] === Userland Application Changes +The {{< manpage "calendar" "1" >}} utility got back support for nested C pre-processor conditionals and gains support for the C++ comment syntax in addition to the C syntax. gitref:19b5c307548[repository=src] + +The {{< manpage "calendar" "1" >}} utility has been modified to consistently print dates according to the locale of the invoking user, not the possibly varying locales of included files. gitref:f1560bd080a[repository=src] + +The {{< manpage "calendar" "1" >}} utility has been fixed to use the correct paths for included files if invoked with the -a option. gitref:19b5c307548[repository=src] + +The {{< manpage "calendar" "1" >}} utility does no longer install data files other than calendar.freebsd. +The data files are now provided by the deskutils/calendar-data port. gitref:d20d6550187[repository=src] + The {{< manpage "daemon" "8" >}} utility now supports the `-H` flag, which causes it to catch SIGHUP and re-open the syslog file received, so log rotation from {{< manpage "newsyslog" "8">}} works properly. gitref:4cd407ec933[repository=src] The {{< manpage "daemon" "8" >}} utility no longer blocks SIGTERM during the restart delay. gitref:09a3675d961[repository=src] The {{< manpage "diskinfo" "8" >}} utility now reports the physical device name GEOM attribute when available. gitref:b5961be1ab7[repository=src] The {{< manpage "freebsd-update" "8" >}} utility now displays progress for the "Fetching files..." stage. gitref:d6e1e31a0e6[repository=src] The {{< manpage "freebsd-update" "8" >}} utility now supports the `-p` flag, which ensures password db changes are included in [.filename]#/etc/passwd# via {{< manpage "pwd_mkdb" "8">}}. gitref:9b6591109e8[repository=src] {{< sponsored "The FreeBSD Foundation" >}} The {{< manpage "freebsd-update" "8" >}} utility now supports the `updatesready` and `showconfig` arguments to check for updates and check the configuration respectively. gitref:8cfda118cbd[repository=src] The {{< manpage "freebsd-update" "8" >}} utility includes support for the `PAGER` environment variable, which has now been documented. gitref:32f4592764d[repository=src] The {{< manpage "gstat" "8" >}} utility now documents the use of interactive keyboard commands to increase and decrease update interval as well as regular expression filters. gitref:cfaa2958dc4[repository=src] The manual page for the {{< manpage "inetd" "8" >}} utility now includes an example of how to use netcat as a HTTP proxy. gitref:a58fc861516[repository=src] The {{< manpage "inetd" "8" >}} utility now includes comments for all examples. gitref:26a4a61a285[repository=src] -==== calendar: Restore calendar file condition parsing - -The calendar program used to invoke the traditional C pre-processor to process include files and conditional sections of the data files. -This had to be changed when the traditional C pre-processor was removed from FreeBSD, and a simple pre-processor was implemented within the calendar program itself. - -The calendar program in FreeBSD-13 restores the condition and comment processing to the level provided by the C pre-processor and offers the following features: - -- Support `#undef` to cancel a prior `#define` -- `#ifdef`, `#ifndef`, `#else`, and `#endif` are supported and can be nested -- `#include` is now processed using the calendar owner's home directory (not the invoking user's home directory, fixes `calendar -a`) -- Support for C and C++ style comments - -Dates are now always displayed according to the locale of the invoking user, not the (optional) locales specified in the calendar files. -This prevents printing mixed date formats depending on the locales specified in each of the data files. - -The calendar data files that used to be distributed with earlier version of FreeBSD have been moved to the package:deskutils/calendar-data[] port respectively the calendar-data package, with the exception of the FreeBSD committer data file, which has been kept. - [[userland-contrib]] === Contributed Software -==== contrib/bc: New implementation of the bc and dc programs - -This implementation of the `bc` and `dc` programs offers a number of advantages over the previous versions in the FreeBSD base system: - -- They do not depend on external large number functions (i.e. no dependency on OpenSSL or any other large number library). -- They implements all features found in GNU bc/dc (with the exception of the forking of sub-processes, which the author of this version considers as a security issue). -- They are significantly faster than the current code in base (more than 2 orders of magnitude in some of my tests, e.g. for 12345^100000). -- They should be fully compatible with all features and the behavior of the current implementations in FreeBSD. -- They support POSIX message catalogs and come with localized messages in Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze, and Russian. -- They offer very detailed manual pages that provide far more information than the current ones. - -The previous implementation is still available in FreeBSD-13 and can be selected instead of the new one by the build option `WITHOUT_GH_BC`. +The {{< manpage "bc" "1" >}} and {{< manpage "dc" "1" >}} utilities have been replaced by the version developed by Gavin D. Howard. +The new versions do not depend on an external large number library, offer GNU bc extensions, are much faster than and fix POSIX compliance issues of the programs they replace. +They support POSIX message catalogs and come with localized messages in Chinese, Dutch, English, French, German, Japanese, Polish, Portugueze, and Russian. +The previous implementation is still available in FreeBSD-13 and can be selected instead of the new one by the build option `WITHOUT_GH_BC`. gitref:c41fef90a7d[repository=src] [[userland-deprecated-programs]] === Deprecated Applications [[userland-libraries]] === Runtime Libraries and API -==== getlocalbase() function - -A function has been added to libutil to provide applications with a standard way to determine the path prefix for files installed by ports and packages. - -This function will return the value of the environment variable `LOCALBASE` if it has been defined. -Else the value of the {{< manpage "sysctl" "8" >}} variable `user.localbase` is returned, which has a default value of `__PATH_LOCALBASE` ([.filename]#/usr/local#, unless changed in [.filename]#paths.h#). - -Shell scripts can directly use the environment variable `LOCALBASE` or `sysctl user.localbase` for this purpose. +The {{< manpage "getlocalbase" "3" >}} function has been added to libutil to retrieve the LOCALBASE path in a standard way. gitref:30d21d27953[repository=src] [[kernel]] == Kernel This section covers changes to kernel configurations, system tuning, and system control parameters that are not otherwise categorized. [[kernel-general]] === General Kernel Changes [[drivers]] == Devices and Drivers This section covers changes and additions to devices and device drivers since {releasePrev}. [[drivers-device]] === Device Drivers [[storage]] == Storage This section covers changes and additions to file systems and other storage subsystems, both local and networked. For {{< manpage "iscsi" "4" >}} and {{< manpage "ctld" "8" >}}, support for specifying network QoS in the form of DiffServ Codepoints (DSCP) and Ethernet Priority Code Point (PCP) was added. gitref:ddf1072aac49[repository=src] {{< sponsored "NetApp" >}} The {{< manpage "ctld" "8" >}} utility now supports the `-f` flag, which tests the configuration file validity. gitref:7fcbecd004f[repository=src] [[storage-general]] === General Storage [[boot]] == Boot Loader Changes This section covers the boot loader, boot menu, and other boot-related changes. The {{< manpage "efibootmgr" "8" >}} utility now supports the `-b` flag, which lets users specify by bootnum as an index. gitref:a2581e80212[repository=src] {{< sponsored "Netflix" >}} The {{< manpage "efibootmgr" "8" >}} utility now supports the `-E` flag, which lets users query which EFI System Partition was used to boot the system. gitref:1cdb8eb8fe1[repository=src] The {{< manpage "efibootmgr" "8" >}} utility now supports the `-f` and `-F` flags, which lets users tell the system to boot to the UEFI user interface or not. gitref:83c4237258d[repository=src] {{< sponsored "Ampere Computing, Inc." >}} [[boot-loader]] === Boot Loader Changes [[network]] == Networking This section describes changes that affect networking in FreeBSD. For {{< manpage "tcp" "4">}}, Proportional Rate Reduction, as described by RFC6937, to improve SACK loss recovery during burst loss and ACK thinning scenarios, was implemented and is enabled by default. A new {{< manpage "sysctl" "8" >}} has been added, `net.inet.tcp.do_prr`, which when set to `0` will restore the prior behavior. It is expected that PRR generally helps improve loss recovery performance and prevent numerous preventable RTO stalls. This surpasses the prior behavior, but a strictly packet conserving variant can be enabled. When misconfigured token bucket traffic policer can cause persistent loss even during loss recovery, activating the conservative PRR variant may prevent some retransmission timeouts (RTO) and associated session stalls for a few milliseconds while behaving less optimal in the general case. For this, a new {{< manpage "sysctl" "8">}} was added, `net.inet.tcp.do_prr_conservative`. Setting this variable to `1` will enable strictly packet conserving behavior (at most 1 segment for each ACK received), while the normal variant may send up to 2 segments per received ACK - helping in cases of ACK thinning or significant burst loss events. gitref:0e1d7c25c5ab[repository=src] {{< sponsored "NetApp" >}} The {{< manpage "cc_cubic" "4">}} has been improved to address various corner cases and align more closely with the standard in RFC8312. gitref:40f9078ff9d9[repository=src] {{< sponsored "NetApp" >}} The {{< manpage "ping" "8" >}} and {{< manpage "ping6" "8" >}} utilities both support setting network QoS, with IP DSCP gitref:6034024daddb[repository=src] and Ethernet PCP gitref:81a6f4c7ae69[repository=src] {{< sponsored "NetApp" >}} [[network-general]] === General Network [[hardware]] == Hardware Support This section covers general hardware support for physical machines, hypervisors, and virtualization environments, as well as hardware changes and updates that do not otherwise fit in other sections of this document. [[hardware-virtualization]] === Virtualization Support The {{< manpage "bhyve" "8">}} utility has been updated to support COM3 and COM4 serial ports. gitref:eed1cc6cdfa[repository=src] The {{< manpage "bhyve" "8">}} utility has been updated to remove bvmconsole and bvmdebug now that UART support is in. gitref:c4df8cbfde5[repository=src] The {{< manpage "bhyve" "8">}} utility now supports VNC version 3.3, has increased framebuffer poll frequency and doesn't send updates if there are no framebuffer updates. gitref:2bb4be0f865[repository=src] The {{< manpage "bhyve" "8">}} utility now suspends I/O on ahci-cd devices during a snapshot. gitref:1b9c78611d9[repository=src] The {{< manpage "bhyve" "8">}} utility now permits suspend/resume of a XHCI device model that has not been attached to by a driver in a guest OS. gitref:57b0a3aacad[repository=src] The {{< manpage "bhyve" "8">}} utility now honors the disabled setting for MSI-X interrupts for passthrough devices. gitref:1925586e03b[repository=src] {{< sponsored "Chelsio Communications" >}} The {{< manpage "bhyve" "8">}} utility now reports version 13.0 in the SMBIOS table. gitref:a2fe464c81d[repository=src] The {{< manpage "bhyve" "8">}} utility now has increased the allowed size for 64bit BAR allocation below 4G from 32 to 128 MB. gitref:670b364b76d[repository=src] {{< sponsored "The FreeBSD Foundation" >}} The {{< manpage "bhyve" "8">}} utility now avoids allocating BARs above the end of supported physical addresses. gitref:9922872ba29[repository=src] {{< sponsored "The FreeBSD Foundation" >}} The {{< manpage "bhyve" "8">}} utility now no longer prints non-printable characters in the smbios.chassis.maker and smbios.system.maker OIDs. gitref:c4fd0cc9ee2[repository=src] {{< sponsored "Netflix" >}} The {{< manpage "bhyve" "8">}} utility now supports TRIM via the VirtIO block device. gitref:22769bbe30b[repository=src] {{< sponsored "Klara Inc." >}} The {{< manpage "bhyve" "8">}} utility now supports TRIM alignment requirements through VirtIO. gitref:cc3568c1d06[repository=src] {{< sponsored "vStack.com" >}} The {{< manpage "bhyve" "8">}} utility now supports virtio-9p (aka VirtFS) filesystem sharing. gitref:100353cfbf8[repository=src] {{< sponsored "Conclusive Engineering (development), vStack.com (funding)" >}} The {{< manpage "bhyve" "8">}} utility now reports nominal health values for NVMe. gitref:c4a86c1fc0d[repository=src] The {{< manpage "bhyve" "8">}} utility now supports LA57 guest mode. gitref:f3eb12e4a6d[repository=src] {{< sponsored "The FreeBSD Foundation" >}} The {{< manpage "bhyve" "8">}} utility now supports setting additional AHCI controller parameters like serial number, firmware revision, model number and NMRR. gitref:9af3bcd7c97[repository=src] The {{< manpage "bhyve" "8">}} utility now advertises 64-bit physical-address capability. gitref:fb5f5a17ef0[repository=src] The {{< manpage "bhyve" "8">}} utility no longer sends ACPI RTC errors/warnings in some guests. gitref:6a7ff0600bb[repository=src] The {{< manpage "bhyve" "8">}} utility now supports NVMe Feature Interrupt Vector Config, Firmware Commit, Asyncronous Event Requests, SMART data I/O statistics, NVMe Format NVM commands, NVMe Namespace Identification Descriptor, the NVMe deallocate command and the NVMe Flush command in a series of commits. The {{< manpage "bhyve" "8">}} utility now allows for automatic destruction on power-off. gitref:0a1016f9e8a[repository=src] {{< sponsored "Mysterious Code Ltd." >}} The {{< manpage "bhyve" "8">}} utility now exposes kernel-emulated special devices like LAPIC, IOAPIC, and HPET devices to userspace. gitref:8a68ae80f67[repository=src] The {{< manpage "bhyve" "8">}} utility now supports a new bhyve network backend that allow connecting the VM to the {{< manpage "netgraph" "4">}} network. gitref:2cd7735d920[repository=src] {{< sponsored "vStack.com" >}} The {{< manpage "bhyve" "8">}} utility now has initial support for bhyve save and restore. gitref:483d953a86a[repository=src] {{< sponsored "University Politehnica of Bucharest, Matthew Grooms (student scholarships), iXsystems" >}} The {{< manpage "bhyve" "8">}} utility now supports the VM Generation Counter ACPI device. gitref:9cb339cc7b8[repository=src] The {{< manpage "bhyve" "8">}} utility has had multiple changes done to the VirtIO network device, like adjustable MTU, mergeable rx buffers, rx backpressure and enabling/disabling VirtIO network device in a series of commits. The {{< manpage "bhyve" "8">}} utility now supports the Hygon Dhyana x86 CPU. gitref:5a6d45d0150[repository=src] The {{< manpage "bhyve" "8">}} utility now supports software breakpoints in the debug server on Intel CPUs. gitref:cbd03a9df2c[repository=src] The {{< manpage "bhyve" "8">}} utility now PCI HDAudio device. gitref:7e3c7420615[repository=src] The {{< manpage "bhyve" "8">}} utility now supports the PCIe Integrated Endpoint capability. gitref:129f93c5a76[repository=src] The {{< manpage "bhyve" "8">}} utility is now SMBIOS table topology aware. gitref:3facfc75607[repository=src] The {{< manpage "bhyve" "8">}} utility now supports CTL device specification via the VirtIO SCSI device. gitref:49f8782283d[repository=src] {{< sponsored "iXsystems, Inc." >}} The {{< manpage "bhyve" "8">}} utility now supports PS/2 scancodes for NumLock, ScrollLock and numerical keypad keys. gitref:6f2d76643e6[repository=src] {{< sponsored "iXsystems Inc." >}} The {{< manpage "bhyve" "8">}} utility now supports the VNC server to listen on IPv6 for incoming connections. gitref:8883128b8e9[repository=src] In addition to all of these, bhyve received an amount of minor changes, which are too numerous to mention, and which fixes a number of outstanding issues. [[ports]] == Ports Collection and Package Infrastructure This section covers changes to the FreeBSD Ports Collection, package infrastructure, and package maintenance and installation tools. [[ports-packages]] === Packaging Changes [[future-releases]] == General Notes Regarding Future FreeBSD Releases [[future-releases-cputype]] === Default `CPUTYPE` Change Starting with FreeBSD-13.0, the default `CPUTYPE` for the i386 architecture will change from `486` to `686`. This means that, by default, binaries produced will require a 686-class CPU, including but not limited to binaries provided by the FreeBSD Release Engineering team. FreeBSD 13.0 will continue to support older CPUs, however users needing this functionality will need to build their own releases for official support. As the primary use for i486 and i586 CPUs is generally in the embedded market, the general end-user impact is expected to be minimal, as new hardware with these CPU types has long faded, and much of the deployed base of such systems is nearing retirement age, statistically. There were several factors taken into account for this change. For example, i486 does not have 64-bit atomics, and while they can be emulated in the kernel, they cannot be emulated in the userland. Additionally, the 32-bit amd64 libraries have been i686 since their inception. As the majority of 32-bit testing is done by developers using the lib32 libraries on 64-bit hardware with the `COMPAT_FREEBSD32` option in the kernel, this change ensures better coverage and user experience. This also aligns with what the majority of Linux(R) distributions have been doing for quite some time. This is expected to be the final bump of the default `CPUTYPE` in i386.