aboutsummaryrefslogtreecommitdiff
path: root/website/content/en/releases/13.0R/relnotes.adoc
blob: 4fcd23237815922ca1fd495abdcb38bb742ff671 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
---
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]

[[userland-contrib]]
=== Contributed Software

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

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.

Besides the VirtIO changes made for bhyve, there are numerous changes to the {{< manpage "virtio" "4">}} subsystems to make it compatible with the VirtIO V1 spec, which means that FreeBSD can
now run on the link:https://wiki.qemu.org/images/4/4e/Q35.pdf[Q35 chipset].

[[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.