xref: /freebsd/RELNOTES (revision 4ba91e076ee84101112d8296785098ae31dac35e)
1Release notes for FreeBSD 15.0.
2
3This file describes new user-visible features, changes and updates relevant to
4users of binary FreeBSD releases.  Each entry should describe the change in no
5more than several sentences and should reference manual pages where an
6interested user can find more information.  Entries should wrap after 80
7columns.  Each entry should begin with one or more commit IDs on one line,
8specified as a comma separated list and/or range, followed by a colon and a
9newline.  Entries should be separated by a newline.
10
11Changes to this file should not be MFCed.
12
133068d706eabe:
14	Lua updated to 5.4.8, which is minor bug fixes from 5.4.7.
15
16b45a181a74c8:
17	Awk updates to August 04, 2025 verison, with minor bug fixes.
18
19dc5ba6b8b4f0:
20	The WITHOUT_GSSAPI src.conf(5) option has been removed.  The GSSAPI
21	libraries are now always built unless WITHOUT_KERBEROS is set.
22
23c43cad871720:
24	jemalloc 5.3.0 has landed. See contrib/jemalloc/ChangeLog
25	for the long list of changes.
26
27cce64f2e6851:
28	Add support for the NFSv4.2 Clone operation, which uses
29	block cloning to "copy on write" files on an NFS server.
30	This only works for exported ZFS file systems that have
31	block cloning enabled, at this time.
32
3337b2cb5ecb0f:
34	Add support to VOP_COPY_FILE_RANGE() for block cloning.
35	At this time, ZFS is the only local file system that supports
36	this and only if block cloning is enabled.  NFSv4.2 also supports it.
37	See pathconf(2) and copy_file_range(2) for more information.
38
392ec2ba7e232d, df58e8b1506f (openzfs 2957eabbe), f61844833ee8, b1b607bd200f,
40	ee95e4d02dbd:
41	Add Solaris style extended attributes (called named attributes
42	in NFSv4).  At this time, only ZFS when the ZFS property called
43	xattr=dir and NFSv4 support them.  The attributes are presented
44	in a directory as regular files.  See named_attribute(7) for
45	more information.
46
47ef2a572bf6:
48	Inline IPSEC offload infrastructure and driver support for mlx5(4)
49	Nvidia ConnectX-6+ network cards were added.
50
5168ba38dad3:
52	amd64: handling of the %fsbase/%gsbase registers and tls base
53	were reworked, making it more useful for apps that directly
54	manipulate CPU context.
55
5678aaab9f1cf:
57	rtld: added support for -z initfirst
58
59e36f069ecb4, c069ca085b:
60	Reliability of UFS on volumes with more than 2G of inodes is
61	significantly improved.  The underlying issue was the invalid
62	interpretation of the 32bit inode number as signed, which got
63	sign-extended into ino_t.
64
65d390633cf8c:
66	On modern amd64 machines (which have the LA57 CPU feature),
67	FreeBSD is able to utilize more than 4TB of RAM.
68
692bd157bc732a:
70	The readdir_r(3) function is deprecated and may be removed in future
71	releases.  Using it in a program will result in compile-time and
72	link-time warnings.
73
749ba51cce8bbd:
75	bsnmpd(1) no longer supports legacy UDP transport.  Users, that have
76	not updated their /etc/snmpd.config since 12.0-RELEASE or older will
77	need to merge in the new configuration.  In particular, the transport
78	definition shall be changed from begemotSnmpdPortStatus OID to
79	begemotSnmpdTransInetStatus.
80
811349a733cf28:
82	Add a driver supporting a new storage controller interface,
83	Universal Flash Storage Host Controller Interface, supporting
84	version 4.1 and earlier, via ufshci(4).
85
86f1f230439fa4:
87	FreeBSD now implements the inotify(2) family of system calls.
88
8950e733f19b37, 171f66b0c2ca:
90	These commits helped improve utilization of NFSv4.1/4.2
91	delegations.  The changes are only used when the NFSv4
92	mount uses the "nocto" mount option and requires an
93	up-to-date NFSv4.1/4.2 server with delegations enabled.
94	For example: For a FreeBSD kernel build with both src
95	and obj NFSv4 mounted, the total RPC count dropped from
96	5461286 to 945643, with a 20% drop in elapsed time.
97
98c3fc0db3bc50
99	The default value of the sysctl variable
100	net.inet.tcp.nolocaltimewait has changed from 1 to 0. This means
101	that FreeBSD does not skip the TIME_WAIT state anymore for
102	endpoints for which the remote address is local. The new sysctl
103	variable net.inet.tcp.msl_local can be used to control the time
104	these endpoints stay in the TIME_WAIT state. The sysctl variable
105	net.inet.tcp.nolocaltimewait is deprecated and intended to be
106	removed in FreeBSD 16.
107
108cd240957d7ba
109	Making a connection to INADDR_ANY (i.e., using INADDR_ANY as an alias
110	for localhost) is now disabled by default.  This functionality can be
111	re-enabled by setting the net.inet.ip.connect_inaddr_wild sysctl to 1.
112
113b61850c4e6f6
114	The bridge(4) sysctl net.link.bridge.member_ifaddrs now defaults to 0,
115	meaning that interfaces added to a bridge may not have IP addresses
116	assigned.  Refer to bridge(4) for more information.
117
11844e5a0150835, 9a37f1024ceb:
119	A new utility sndctl(8) has been added to concentrate the various
120	interfaces for viewing and manipulating audio device settings (sysctls,
121	/dev/sndstat), into a single utility with a similar control-driven
122	interface to that of mixer(8).
123
12493a94ce731a8:
125	ps(1)'s options '-a' and '-A', when combined with any other one
126	affecting the selection of processes except for '-X' and '-x', would
127	have no effect, in contradiction with the rule that one process is
128	listed as soon as any of the specified options selects it (inclusive
129	OR), which is both mandated by POSIX and arguably a natural expectation.
130	This bug has been fixed.
131
132	As a practical consequence, specifying '-a'/'-A' now causes all
133	processes to be listed regardless of other selection options (except for
134	'-X' and '-x', which still apply).  In particular, to list only
135	processes from specific jails, one must not use '-a' with '-J'.  Option
136	'-J', contrary to its apparent initial intent, never worked as a filter
137	in practice (except by accident with '-a' due to the bug), but instead
138	as any other selection options (e.g., '-U', '-p', '-G', etc.) subject to
139	the "inclusive OR" rule.
140
141995b690d1398:
142	ps(1)'s '-U' option has been changed to select processes by their real
143	user IDs instead of their effective one, in accordance with POSIX and
144	the use case of wanting to list processes launched by some user, which
145	is expected to be more frequent than listing processes having the rights
146	of some user.  This only affects the selection of processes whose real
147	and effective user IDs differ.	After this change, ps(1)'s '-U' flag
148	behaves differently then in other BSDs but identically to that of
149	Linux's procps and illumos.
150
1511aabbb25c9f9:
152	ps(1)'s default list of processes now comes from matching its effective
153	user ID instead of its real user ID with the effective user ID of all
154	processes, in accordance with POSIX.  As ps(1) itself is not installed
155	setuid, this only affects processes having different real and effective
156	user IDs that launch ps(1) processes.
157
158f0600c41e754-de701f9bdbe0, bc201841d139:
159	mac_do(4) is now considered production-ready and its functionality has
160	been considerably extended at the price of breaking credentials
161	transition rules' backwards compatibility.  All that could be specified
162	with old rules can also be with new rules.  Migrating old rules is just
163	a matter of adding "uid=" in front of the target part, substituting
164	commas (",") with semi-colons (";") and colons (":") with greater-than
165	signs (">").  Please consult the mac_do(4) manual page for the new rules
166	grammar.
167
16802d4eeabfd73:
169	hw.snd.maxautovchans has been retired. The commit introduced a
170	hw.snd.vchans_enable sysctl, which along with
171	dev.pcm.X.{play|rec}.vchans, from now on work as tunables to only
172	enable/disable vchans, as opposed to setting their number and/or
173	(de-)allocating vchans. Since these sysctls do not trigger any
174	(de-)allocations anymore, their effect is instantaneous, whereas before
175	we could have frozen the machine (when trying to allocate new vchans)
176	when setting dev.pcm.X.{play|rec}.vchans to a very large value.
177
1787e7f88001d7d:
179	The definition of pf's struct pfr_tstats and struct pfr_astats has
180	changed, breaking ABI compatibility for 32-bit powerpc (including
181	powerpcspe) and armv7. Users of these platforms should ensure kernel
182	and userspace are updated together.
183
1845dc99e9bb985, 08e638c089a, 4009a98fe80:
185	The net.inet.{tcp,udp,raw}.bind_all_fibs tunables have been added.
186	They modify socket behavior such that packets not originating from the
187	same FIB as the socket are ignored.  TCP and UDP sockets belonging to
188	different FIBs may also be bound to the same address.  The default
189	behavior is unmodified.
190
191f87bb5967670, e51036fbf3f8:
192	Support for vinum volumes has been removed.
193
1948ae6247aa966, cf0ede720391d, 205659c43d87bd, 1ccbdf561f417, 4db1b113b151:
195	The layout of NFS file handles for the tarfs, tmpfs, cd9660, and ext2fs
196	file systems has changed.  An NFS server that exports any of these file
197	systems will need its clients to unmount and remount the exports.
198
1991111a44301da:
200	Defer the January 19, 2038 date limit in UFS1 filesystems to
201	February 7, 2106. This affects only UFS1 format filesystems.
202	See the commit message for details.
203
20407cd69e272da:
205	Add a new -a command line option to mountd(8).
206	If this command line option is specified, when
207	a line in exports(5) has the -alldirs export option,
208	the directory must be a server file system mount point.
209
2100e8a36a2ab12:
211	Add a new NFS mount option called "mountport" that may be used
212	to specify the port# for the NFS server's Mount protocol.
213	This permits a NFSv3 mount to be done without running rpcbind(8).
214
215b2f7c53430c3:
216	Kernel TLS is now enabled by default in kernels including KTLS
217	support.  KTLS is included in GENERIC kernels for aarch64,
218	amd64, powerpc64, and powerpc64le.
219
220f57efe95cc25:
221	New mididump(1) utility which dumps MIDI 1.0 events in real time.
222
223ddfc6f84f242:
224	Update unicode to 16.0.0 and CLDR to 45.0.0.
225
226b22be3bbb2de:
227	Basic Cloudinit images no longer generate RSA host keys by default for
228	SSH.
229
230000000000000:
231	RSA host keys for SSH are deprecated and will no longer be generated
232	by default in FreeBSD 16.
233
2340aabcd75dbc2:
235	EC2 AMIs no longer generate RSA host keys by default for SSH.  RSA
236	host key generation can be re-enabled by setting sshd_rsa_enable="YES"
237	in /etc/rc.conf if it is necessary to support very old SSH clients.
238
239a1da7dc1cdad:
240	The SO_SPLICE socket option was added.  It allows TCP connections to
241	be spliced together, enabling proxy-like functionality without the
242	need to copy data in and out of user memory.
243
244fc12c191c087:
245	grep(1) no longer follows symbolic links by default for
246	recursive searches.  This matches the documented behavior in
247	the manual page.
248
249e962b37bf0ff:
250	When running bhyve(8) guests with a boot ROM, i.e., bhyveload(8) is not
251	used, bhyve now assumes that the boot ROM will enable PCI BAR decoding.
252	This is incompatible with some boot ROMs, particularly outdated builds
253	of edk2-bhyve.  To restore the old behavior, add
254	"pci.enable_bars='true'" to your bhyve configuration.
255
256	Note in particular that the uefi-edk2-bhyve package has been renamed
257	to edk2-bhyve.
258
25943caa2e805c2:
260	amd64 bhyve(8)'s "lpc.bootrom" and "lpc.bootvars" options are
261	deprecated.  Use the top-level "bootrom" and "bootvars" options
262	instead.
263
264822ca3276345:
265	byacc was updated to 20240109.
266
26721817992b331:
268	ncurses was updated to 6.5.
269
2701687d77197c0:
271	Filesystem manual pages have been moved to section four.
272	Please check ports you are maintaining for crossreferences.
273
2748aac90f18aef:
275	new MAC/do policy and mdo(1) utility which enables a user to
276	become another user without the requirement of setuid root.
277
2787398d1ece5cf:
279	hw.snd.version is removed.
280
281a15f7c96a276,66b5296f1b29:
282	NVMe over Fabrics controller.  The nvmft(4) kernel module adds
283	a new frontend to the CAM target layer which exports ctl(4)
284	LUNs as NVMe namespaces to remote hosts.  The ctld(8) daemon
285	now supports NVMe controllers in addition to iSCSI targets and
286	is responsible for accepting incoming connection requests and
287	handing off connected queue pairs to nvmft(4).
288
289a1eda74167b5,1058c12197ab:
290	NVMe over Fabrics host.  New commands added to nvmecontrol(8)
291	to establish connections to remote controllers.  Once
292	connections are established they are handed off to the nvmf(4)
293	kernel module which creates nvmeX devices and exports remote
294	namespaces as nda(4) disks.
295
29625723d66369f:
297	As a side-effect of retiring the unit.* code in sound(4), the
298	hw.snd.maxunit loader(8) tunable is also retired.
299
300eeb04a736cb9:
301	date(1) now supports nanoseconds. For example:
302	`date -Ins` prints "2024-04-22T12:20:28,763742224+02:00" and
303	`date +%N` prints "415050400".
304
3056d5ce2bb6344:
306	The default value of the nfs_reserved_port_only rc.conf(5) setting has
307	changed.  The FreeBSD NFS server now requires the source port of
308	requests to be in the privileged port range (i.e., <= 1023), which
309	generally requires the client to have elevated privileges on their local
310	system.  The previous behavior can be restored by setting
311	nfs_reserved_port_only=NO in rc.conf.
312
313aea973501b19:
314	ktrace(2) will now record detailed information about capability mode
315	violations. The kdump(1) utility has been updated to display such
316	information.
317
318f32a6403d346:
319	One True Awk updated to 2nd Edition. See https://awk.dev for details
320	on the additions. Unicode and CSVs (Comma Separated Values) are now
321	supported.
322
323fe86d923f83f:
324	usbconfig(8) now reads the descriptions of the usb vendor and products
325	from usb.ids when available, similarly to what pciconf(8) does.
326
3274347ef60501f:
328	The powerd(8) utility is now enabled in /etc/rc.conf by default on
329	images for the arm64 Raspberry Pi's (arm64-aarch64-RPI img files).
330	This prevents the CPU clock from running slow all the time.
331
3320b49e504a32d:
333	rc.d/jail now supports the legacy variable jail_${jailname}_zfs_dataset
334	to allow unmaintained jail managers like ezjail to make use of this
335	feature (simply rename jail_${jailname}_zfs_datasets in the ezjail
336	config to jail_${jailname}_zfs_dataset.
337
338e0dfe185cbca:
339	jail(8) now support zfs.dataset to add a list of ZFS datasets to a
340        jail.
341
34261174ad88e33:
343	newsyslog(8) now supports specifying a global compression method directly
344	at the beginning of the newsyslog.conf file, which will make newsyslog(8)
345	to behave like the corresponding option was passed to the newly added
346	'-c' option. For example:
347
348	<compress> none
349
350906748d208d3:
351	newsyslog(8) now accepts a new option, '-c' which overrides all historical
352	compression flags by treating their meaning as "treat the file as compressible"
353	rather than "compress the file with that specific method."
354
355	The following choices are available:
356	 * none: Do not compress, regardless of flag.
357	 * legacy: Historical behavior (J=bzip2, X=xz, Y=zstd, Z=gzip).
358	 * bzip2, xz, zstd, gzip: apply the specified compression method.
359
360	We plan to change the default to 'none' in FreeBSD 15.0.
361
3621a878807006c:
363	This commit added some statistics collection to the NFS-over-TLS
364	code in the NFS server so that sysadmins can moditor usage.
365	The statistics are available via the kern.rpc.tls.* sysctls.
366
3677c5146da1286:
368	Mountd has been modified to use strunvis(3) to decode directory
369	names in exports(5) file(s).  This allows special characters,
370	such as blanks, to be embedded in the directory name(s).
371	"vis -M" may be used to encode such directory name(s).
372
373c5359e2af5ab:
374	bhyve(8) has a new network backend, "slirp", which makes use of the
375	libslirp package to provide a userspace network stack.  This backend
376	makes it possible to access the guest network from the host without
377	requiring any extra network configuration on the host.
378
379bb830e346bd5:
380	Set the IUTF8 flag by default in tty(4).
381
382	128f63cedc14 and 9e589b093857 added proper UTF-8 backspacing handling
383	in the tty(4) driver, which is enabled by setting the new IUTF8 flag
384	through stty(1). Since the default locale is UTF-8, enable IUTF8 by
385	default.
386
387ff01d71e48d4:
388	dialog(1) has been replaced by bsddialog(1)
389
39041582f28ddf7:
391	FreeBSD 15.0 will not include support for 32-bit platforms.
392	However, 64-bit systems will still be able to run older 32-bit
393	binaries.
394
395	Support for executing 32-bit binaries on 64-bit platforms via
396	COMPAT_FREEBSD32 will remain supported for at least the
397	stable/15 and stable/16 branches.
398
399	Support for compiling individual 32-bit applications via
400	`cc -m32` will also be supported for at least the stable/15
401	branch which includes suitable headers in /usr/include and
402	libraries in /usr/lib32.
403
404	Support for 32-bit platforms in ports for 15.0 and later
405	releases is also deprecated, and these future releases may not
406	include binary packages for 32-bit platforms or support for
407	building 32-bit applications from ports.
408
409	stable/14 and earlier branches will retain existing 32-bit
410	kernel and world support.  Ports will retain existing support
411	for building ports and packages for 32-bit systems on stable/14
412	and earlier branches as long as those branches are supported
413	by the ports system.  However, all 32-bit platforms are Tier-2
414	or Tier-3 and support for individual ports should be expected
415	to degrade as upstreams deprecate 32-bit platforms.
416
417	With the current support schedule, stable/14 will be EOLed 5
418	years after the release of 14.0.  The EOL of stable/14 would
419	mark the end of support for 32-bit platforms including source
420	releases, pre-built packages, and support for building
421	applications from ports.  Given an estimated release date of
422	October 2023 for 14.0, support for 32-bit platforms would end
423	in October 2028.
424
425	The project may choose to alter this approach when 15.0 is
426	released by extending some level of 32-bit support for one or
427	more platforms in 15.0 or later.  Users should use the
428	stable/14 branch to migrate off of 32-bit platforms.
429