xref: /freebsd/UPDATING (revision da759cfa320d5076b075d15ff3f00ab3ba5634fd)
1 Updating Information for FreeBSD current users.
2
3This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4See end of file for further details.  For commonly done items, please see the
5COMMON ITEMS: section later in the file.  These instructions assume that you
6basically know what you are doing.  If not, then please consult the FreeBSD
7handbook:
8
9    https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
10
11Items affecting the ports and packages system can be found in
12/usr/ports/UPDATING.  Please read that file before running portupgrade.
13
14NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
15	FreeBSD 13.x has many debugging features turned on, in both the kernel
16	and userland.  These features attempt to detect incorrect use of
17	system primitives, and encourage loud failure through extra sanity
18	checking and fail stop semantics.  They also substantially impact
19	system performance.  If you want to do performance measurement,
20	benchmarking, and optimization, you'll want to turn them off.  This
21	includes various WITNESS- related kernel options, INVARIANTS, malloc
22	debugging flags in userland, and various verbose features in the
23	kernel.  Many developers choose to disable these features on build
24	machines to maximize performance.  (To completely disable malloc
25	debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
26	disable the most expensive debugging functionality run
27	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
28
292020mmdd:
30	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
31	been upgraded to 10.0.0.  Please see the 20141231 entry below for
32	information about prerequisites and upgrading, if you are not already
33	using clang 3.5.0 or higher.
34
3520200301:
36	Removed brooktree driver (bktr.4) from the tree.
37
3820200229:
39	The WITH_GPL_DTC option has been removed.  The BSD-licenced device tree
40	compiler in usr.bin/dtc is used on all architectures which use dtc, and
41	the GPL dtc is available (if needed) from the sysutils/dtc port.
42
4320200229:
44	The WITHOUT_LLVM_LIBUNWIND option has been removed.  LLVM's libunwind
45	is used by all supported CPU architectures.
46
4720200229:
48	GCC 4.2.1 has been removed from the tree.  The WITH_GCC,
49	WITH_GCC_BOOTSTRAP, and WITH_GNUCXX options are no longer available.
50	Users who wish to build FreeBSD with GCC must use the external toolchain
51	ports or packages.
52
5320200220:
54	ncurses has been updated to a newer version (6.2-20200215). Given the ABI
55	has changed, users will have to rebuild all the ports that are linked to
56	ncurses.
57
5820200217:
59	The size of struct vnet and the magic cookie have changed.
60	Users need to recompile libkvm and all modules using VIMAGE
61	together with their new kernel.
62
6320200212:
64	Defining the long deprecated NO_CTF, NO_DEBUG_FILES, NO_INSTALLLIB,
65	NO_MAN, NO_PROFILE, and NO_WARNS variables is now an error.  Update
66	your Makefiles and scripts to define MK_<var>=no instead as required.
67
68	One exception to this is that program or library Makefiles should
69	define MAN to empty rather than setting MK_MAN=no.
70
7120200108:
72	Clang/LLVM is now the default compiler and LLD the default
73	linker for riscv64.
74
7520200107:
76	make universe no longer uses GCC 4.2.1 on any architectures.
77	Architectures not supported by in-tree Clang/LLVM require an
78	external toolchain package.
79
8020200104:
81	GCC 4.2.1 is now not built by default, as part of the GCC 4.2.1
82	retirement plan.  Specifically, the GCC, GCC_BOOTSTRAP, and GNUCXX
83	options default to off for all supported CPU architectures.  As a
84	short-term transition aid they may be enabled via WITH_* options.
85	GCC 4.2.1 is expected to be removed from the tree on 2020-03-31.
86
8720200102:
88	Support for armv5 has been disconnected and is being removed. The
89	machine combination MACHINE=arm MACHINE_ARCH=arm is no longer valid.
90	You must now use a MACHINE_ARCH of armv6 or armv7. The default
91	MACHINE_ARCH for MACHINE=arm is now armv7.
92
9320191226:
94	Clang/LLVM is now the default compiler for all powerpc architectures.
95	LLD is now the default linker for powerpc64.  The change for powerpc64
96	also includes a change to the ELFv2 ABI, incompatible with the existing
97	ABI.
98
9920191226:
100	Kernel-loadable random(4) modules are no longer unloadable.
101
10220191222:
103	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
104	been upgraded to 9.0.1.  Please see the 20141231 entry below for
105	information about prerequisites and upgrading, if you are not already
106	using clang 3.5.0 or higher.
107
10820191212:
109	r355677 has modified the internal interface used between the
110	NFS modules in the kernel. As such, they must all be upgraded
111	simultaneously. I will do a version bump for this.
112
11320191205:
114	The root certificates of the Mozilla CA Certificate Store have been
115	imported into the base system and can be managed with the certctl(8)
116	utility.  If you have installed the security/ca_root_nss port or package
117	with the ETCSYMLINK option (the default), be advised that there may be
118	differences between those included in the port and those included in
119	base due to differences in nss branch used as well as general update
120	frequency.  Note also that certctl(8) cannot manage certs in the
121	format used by the security/ca_root_nss port.
122
12320191120:
124	The amd(8) automount daemon has been disabled by default, and will be
125	removed in the future.  As of FreeBSD 10.1 the autofs(5) is available
126	for automounting.
127
12820191107:
129	The nctgpio and wbwd drivers have been moved to the superio bus.
130	If you have one of these drivers in a kernel configuration, then
131	you should add device superio to it.  If you use one of these drivers
132	as a module and you compile a custom set of modules, then you should
133	add superio to the set.
134
13520191021:
136	KPIs for network drivers to access interface addresses have changed.
137	Users need to recompile NIC driver modules together with kernel.
138
13920191021:
140	The net.link.tap.user_open sysctl no longer prevents user opening of
141	already created /dev/tapNN devices.  Access is still controlled by
142	node permissions, just like tun devices.  The net.link.tap.user_open
143	sysctl is now used only to allow users to perform devfs cloning of
144	tap devices, and the subsequent open may not succeed if the user is not
145	in the appropriate group.  This sysctl may be deprecated/removed
146	completely in the future.
147
14820191009:
149	mips, powerpc, and sparc64 are no longer built as part of
150	universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If
151	not defined, mips, powerpc, and sparc64 builds will look for
152	the xtoolchain binaries and if installed use them for universe
153	builds. As llvm 9.0 becomes vetted for these architectures, they
154	will be removed from the list.
155
15620191009:
157	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
158	been upgraded to 9.0.0.  Please see the 20141231 entry below for
159	information about prerequisites and upgrading, if you are not already
160	using clang 3.5.0 or higher.
161
16220191003:
163	The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from
164	GENERIC.  They are available as modules and can be loaded by adding
165	to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES",
166	hptnr_load="YES", or hptrr_load="YES", respectively.
167
16820190913:
169	ntpd no longer by default locks its pages in memory, allowing them
170	to be paged out by the kernel. Use rlimit memlock to restore
171	historic BSD behaviour. For example, add "rlimit memlock 32"
172	to ntp.conf to lock up to 32 MB of ntpd address space in memory.
173
17420190823:
175	Several of ping6's options have been renamed for better consistency
176	with ping.  If you use any of -ARWXaghmrtwx, you must update your
177	scripts.  See ping6(8) for details.
178
17920190727:
180	The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls
181	and the "-o sync_unmount" and "-o init_backgrounded" mount options have
182	been removed from mount_fusefs(8).  You can safely remove them from
183	your scripts, because they had no effect.
184
185	The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize,
186	vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable,
187	vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate
188	sysctls have been removed.  If you felt the need to set any of them to
189	a non-default value, please tell asomers@FreeBSD.org why.
190
19120190713:
192	Default permissions on the /var/account/acct file (and copies of it
193	rotated by periodic daily scripts) are changed from 0644 to 0640
194	because the file contains sensitive information that should not be
195	world-readable.  If the /var/account directory must be created by
196	rc.d/accounting, the mode used is now 0750.  Admins who use the
197	accounting feature are encouraged to change the mode of an existing
198	/var/account directory to 0750 or 0700.
199
20020190620:
201	Entropy collection and the /dev/random device are no longer optional
202	components.  The "device random" option has been removed.
203	Implementations of distilling algorithms can still be made loadable
204	with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko).
205
20620190612:
207	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
208	been upgraded to 8.0.1.  Please see the 20141231 entry below for
209	information about prerequisites and upgrading, if you are not already
210	using clang 3.5.0 or higher.
211
21220190608:
213	A fix was applied to i386 kernel modules to avoid panics with
214	dpcpu or vnet.  Users need to recompile i386 kernel modules
215	having pcpu or vnet sections or they will refuse to load.
216
21720190513:
218	User-wired pages now have their own counter,
219	vm.stats.vm.v_user_wire_count.  The vm.max_wired sysctl was renamed
220	to vm.max_user_wired and changed from an unsigned int to an unsigned
221	long.  bhyve VMs wired with the -S are now subject to the user
222	wiring limit; the vm.max_user_wired sysctl may need to be tuned to
223	avoid running into the limit.
224
22520190507:
226	The IPSEC option has been removed from GENERIC.  Users requiring
227	ipsec(4) must now load the ipsec(4) kernel module.
228
22920190507:
230	The tap(4) driver has been folded into tun(4), and the module has been
231	renamed to tuntap.  You should update any kld_list="if_tap" or
232	kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or
233	if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap
234	module instead, and "device tap" or "device tun" entries in kernel
235	config files to select the tuntap device instead.
236
23720190418:
238	The following knobs have been added related to tradeoffs between
239	safe use of the random device and availability in the absence of
240	entropy:
241
242	kern.random.initial_seeding.bypass_before_seeding: tunable; set
243	non-zero to bypass the random device prior to seeding, or zero to
244	block random requests until the random device is initially seeded.
245	For now, set to 1 (unsafe) by default to restore pre-r346250 boot
246	availability properties.
247
248	kern.random.initial_seeding.read_random_bypassed_before_seeding:
249	read-only diagnostic sysctl that is set when bypass is enabled and
250	read_random(9) is bypassed, to enable programmatic handling of this
251	initial condition, if desired.
252
253	kern.random.initial_seeding.arc4random_bypassed_before_seeding:
254	Similar to the above, but for for arc4random(9) initial seeding.
255
256	kern.random.initial_seeding.disable_bypass_warnings: tunable; set
257	non-zero to disable warnings in dmesg when the same conditions are
258	met as for the diagnostic sysctls above.  Defaults to zero, i.e.,
259	produce warnings in dmesg when the conditions are met.
260
26120190416:
262	The loadable random module KPI has changed; the random_infra_init()
263	routine now requires a 3rd function pointer for a bool (*)(void)
264	method that returns true if the random device is seeded (and
265	therefore unblocked).
266
26720190404:
268	r345895 reverts r320698. This implies that an nfsuserd(8) daemon
269	built from head sources between r320757 (July 6, 2017) and
270	r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock"
271	is added to the command line.
272	nfsuserd daemons built from head sources that are post-r338192 are
273	not affected and should continue to work.
274
27520190320:
276	The fuse(4) module has been renamed to fusefs(4) for consistency with
277	other filesystems.  You should update any kld_load="fuse" entries in
278	/etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and
279	"options FUSE" entries in kernel config files.
280
28120190304:
282	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
283	8.0.0.  Please see the 20141231 entry below for information about
284	prerequisites and upgrading, if you are not already using clang 3.5.0
285	or higher.
286
28720190226:
288	geom_uzip(4) depends on the new module xz.  If geom_uzip is statically
289	compiled into your custom kernel, add 'device xz' statement to the
290	kernel config.
291
29220190219:
293	drm and drm2 have been removed from the tree. Please see
294	https://wiki.freebsd.org/Graphics for the latest information on
295	migrating to the drm ports.
296
29720190131:
298	Iflib is no longer unconditionally compiled into the kernel.  Drivers
299	using iflib and statically compiled into the kernel, now require
300	the 'device iflib' config option.  For the same drivers loaded as
301	modules on kernels not having 'device iflib', the iflib.ko module
302	is loaded automatically.
303
30420190125:
305	The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration
306	options no longer exist since r343219 and r343427 respectively;
307	nothing uses them, so they should be just removed from custom
308	kernel config files.
309
31020181230:
311	r342635 changes the way efibootmgr(8) works by requiring users to add
312	the -b (bootnum) parameter for commands where the bootnum was previously
313	specified with each option. For example 'efibootmgr -B 0001' is now
314	'efibootmgr -B -b 0001'.
315
31620181220:
317	r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport
318	in the same as it is applied to NFSv2 and 3.  This implies that NFSv4
319	servers that have vfs.nfsd.nfs_privport set will only allow mounts
320	from clients using a reserved port#. Since both the FreeBSD and Linux
321	NFSv4 clients use reserved port#s by default, this should not affect
322	most NFSv4 mounts.
323
32420181219:
325	The XLP config has been removed. We can't support 64-bit atomics in this
326	kernel because it is running in 32-bit mode. XLP users must transition
327	to running a 64-bit kernel (XLP64 or XLPN32).
328
329	The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is
330	the preferred emulator today and we don't need two different ones.
331
332	The old sibyte / swarm / Broadcom BCM1250 support has been
333	removed from the mips port.
334
33520181211:
336	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
337	7.0.1.  Please see the 20141231 entry below for information about
338	prerequisites and upgrading, if you are not already using clang 3.5.0
339	or higher.
340
34120181211:
342	Remove the timed and netdate programs from the base tree.  Setting
343	the time with these daemons has been obsolete for over a decade.
344
34520181126:
346	On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld
347	linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as
348	it produces broken binaries when ifuncs are in use.  Users needing
349	GNU ld should install the binutils port or package.
350
35120181123:
352	The BSD crtbegin and crtend code has been enabled by default. It has
353	had extensive testing on amd64, arm64, and i386. It can be disabled
354	by building a world with -DWITHOUT_BSD_CRTBEGIN.
355
35620181115:
357	The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue)
358	has been converted to a port (misc/ctm) and will be removed from
359	FreeBSD-13.  It is available as a package (ctm) for all supported
360	FreeBSD versions.
361
36220181110:
363	The default newsyslog.conf(5) file has been changed to only include
364	files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if
365	the filenames end in '.conf' and do not begin with a '.'.
366
367	You should check the configuration files in these two directories match
368	this naming convention. You can verify which configuration files are
369	being included using the command:
370		$ newsyslog -Nrv
371
37220181015:
373	Ports for the DRM modules have been simplified. Now, amd64 users should
374	just install the drm-kmod port. All others should install
375	drm-legacy-kmod.
376
377	Graphics hardware that's newer than about 2010 usually works with
378	drm-kmod.  For hardware older than 2013, however, some users will need
379	to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older
380	than 2008 usually only works in drm-legacy-kmod. The graphics team can
381	only commit to hardware made since 2013 due to the complexity of the
382	market and difficulty to test all the older cards effectively. If you
383	have hardware supported by drm-kmod, you are strongly encouraged to use
384	that as you will get better support.
385
386	Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined
387	elsewhere, the drm and drm2 modules will be eliminated from the src base
388	soon (with a limited exception for arm). Please update to the package
389	asap and report any issues to x11@freebsd.org.
390
391	Generally, anybody using the drm*-kmod packages should add
392	WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty
393	cross-threading surprises, especially with automatic driver
394	loading from X11 startup. These will become the defaults in 13-current
395	shortly.
396
39720181012:
398	The ixlv(4) driver has been renamed to iavf(4).  As a consequence,
399	custom kernel and module loading configuration files must be updated
400	accordingly.  Moreover, interfaces previous presented as ixlvN to the
401	system are now exposed as iavfN and network configuration files must
402	be adjusted as necessary.
403
40420181009:
405	OpenSSL has been updated to version 1.1.1.  This update included
406	additional various API changes throughout the base system.  It is
407	important to rebuild third-party software after upgrading.  The value
408	of __FreeBSD_version has been bumped accordingly.
409
41020181006:
411	The legacy DRM modules and drivers have now been added to the loader's
412	module blacklist, in favor of loading them with kld_list in rc.conf(5).
413	The module blacklist may be overridden with the loader.conf(5)
414	'module_blacklist' variable, but loading them via rc.conf(5) is strongly
415	encouraged.
416
41720181002:
418	The cam(4) based nda(4) driver will be used over nvd(4) by default on
419	powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or
420	loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing
421	driver.  Make sure to edit /boot/etc/kboot.conf and fstab to use the
422	nda device name.
423
42420180913:
425	Reproducible build mode is now on by default, in preparation for
426	FreeBSD 12.0.  This eliminates build metadata such as the user,
427	host, and time from the kernel (and uname), unless the working tree
428	corresponds to a modified checkout from a version control system.
429	The previous behavior can be obtained by setting the /etc/src.conf
430	knob WITHOUT_REPRODUCIBLE_BUILD.
431
43220180826:
433	The Yarrow CSPRNG has been removed from the kernel as it has not been
434	supported by its designers since at least 2003. Fortuna has been the
435	default since FreeBSD-11.
436
43720180822:
438	devctl freeze/thaw have gone into the tree, the rc scripts have been
439	updated to use them and devmatch has been changed.  You should update
440	kernel, userland and rc scripts all at the same time.
441
44220180818:
443	The default interpreter has been switched from 4th to Lua.
444	LOADER_DEFAULT_INTERP, documented in build(7), will override the default
445	interpreter.  If you have custom FORTH code you will need to set
446	LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in
447	src.conf for the build.  This will create default hard links between
448	loader and loader_4th instead of loader and loader_lua, the new default.
449	If you are using UEFI it will create the proper hard link to loader.efi.
450
451	bhyve uses userboot.so. It remains 4th-only until some issues are solved
452	regarding coexisting with multiple versions of FreeBSD are resolved.
453
45420180815:
455	ls(1) now respects the COLORTERM environment variable used in other
456	systems and software to indicate that a colored terminal is both
457	supported and desired.  If ls(1) is suddenly emitting colors, they may
458	be disabled again by either removing the unwanted COLORTERM from your
459	environment, or using `ls --color=never`.  The ls(1) specific CLICOLOR
460	may not be observed in a future release.
461
46220180808:
463	The default pager for most commands has been changed to "less".  To
464	restore the old behavior, set PAGER="more" and MANPAGER="more -s" in
465	your environment.
466
46720180731:
468	The jedec_ts(4) driver has been removed. A superset of its functionality
469	is available in the jedec_dimm(4) driver, and the manpage for that
470	driver includes migration instructions. If you have "device jedec_ts"
471	in your kernel configuration file, it must be removed.
472
47320180730:
474	amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default.
475	This should have no effect if the kernel is booted via BIOS/legacy boot.
476	EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system
477	has a buggy firmware that prevents a successful boot due to use of
478	runtime services.
479
48020180727:
481	Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale
482	support has been removed from the tree. These ports were
483	obsolete and/or known to be broken for many years.
484
48520180723:
486	loader.efi has been augmented to participate more fully in the
487	UEFI boot manager protocol. loader.efi will now look at the
488	BootXXXX environment variable to determine if a specific kernel
489	or root partition was specified. XXXX is derived from BootCurrent.
490	efibootmgr(8) manages these standard UEFI variables.
491
49220180720:
493	zfsloader's functionality has now been folded into loader.
494	zfsloader is no longer necessary once you've updated your
495	boot blocks. For a transition period, we will install a
496	hardlink for zfsloader to loader to allow a smooth transition
497	until the boot blocks can be updated (hard link because old
498	zfs boot blocks don't understand symlinks).
499
50020180719:
501	ARM64 now have efifb support, if you want to have serial console
502	on your arm64 board when an screen is connected and the bootloader
503	setup a frame buffer for us to use, just add :
504	boot_serial=YES
505	boot_multicons=YES
506	in /boot/loader.conf
507	For Raspberry Pi 3 (RPI) users, this is needed even if you don't have
508	an screen connected as the firmware will setup a frame buffer are that
509	u-boot will expose as an EFI frame buffer.
510
51120180719:
512	New uid:gid added, ntpd:ntpd (123:123).  Be sure to run mergemaster
513	or take steps to update /etc/passwd before doing installworld on
514	existing systems.  Do not skip the "mergemaster -Fp" step before
515	installworld, as described in the update procedures near the bottom
516	of this document.  Also, rc.d/ntpd now starts ntpd(8) as user ntpd
517	if the new mac_ntpd(4) policy is available, unless ntpd_flags or
518	the ntp config file contain options that change file/dir locations.
519	When such options (e.g., "statsdir" or "crypto") are used, ntpd can
520	still be run as non-root by setting ntpd_user=ntpd in rc.conf, after
521	taking steps to ensure that all required files/dirs are accessible
522	by the ntpd user.
523
52420180717:
525	Big endian arm support has been removed.
526
52720180711:
528	The static environment setup in kernel configs is no longer mutually
529	exclusive with the loader(8) environment by default.  In order to
530	restore the previous default behavior of disabling the loader(8)
531	environment if a static environment is present, you must specify
532	loader_env.disabled=1 in the static environment.
533
53420180705:
535	The ABI of syscalls used by management tools like sockstat and
536	netstat has been broken to allow 32-bit binaries to work on
537	64-bit kernels without modification.  These programs will need
538	to match the kernel in order to function.  External programs may
539	require minor modifications to accommodate a change of type in
540	structures from pointers to 64-bit virtual addresses.
541
54220180702:
543	On i386 and amd64 atomics are now inlined. Out of tree modules using
544	atomics will need to be rebuilt.
545
54620180701:
547	The '%I' format in the kern.corefile sysctl limits the number of
548	core files that a process can generate to the number stored in the
549	debug.ncores sysctl. The '%I' format is replaced by the single digit
550	index. Previously, if all indexes were taken the kernel would overwrite
551	only a core file with the highest index in a filename.
552	Currently the system will create a new core file if there is a free
553	index or if all slots are taken it will overwrite the oldest one.
554
55520180630:
556	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
557	6.0.1.  Please see the 20141231 entry below for information about
558	prerequisites and upgrading, if you are not already using clang 3.5.0
559	or higher.
560
56120180628:
562	r335753 introduced a new quoting method. However, etc/devd/devmatch.conf
563	needed to be changed to work with it. This change was made with r335763
564	and requires a mergemaster / etcupdate / etc to update the installed
565	file.
566
56720180612:
568	r334930 changed the interface between the NFS modules, so they all
569	need to be rebuilt.  r335018 did a __FreeBSD_version bump for this.
570
57120180530:
572	As of r334391 lld is the default amd64 system linker; it is installed
573	as /usr/bin/ld.  Kernel build workarounds (see 20180510 entry) are no
574	longer necessary.
575
57620180530:
577	The kernel / userland interface for devinfo changed, so you'll
578	need a new kernel and userland as a pair for it to work (rebuilding
579	lib/libdevinfo is all that's required). devinfo and devmatch will
580	not work, but everything else will when there's a mismatch.
581
58220180523:
583	The on-disk format for hwpmc callchain records has changed to include
584	threadid corresponding to a given record. This changes the field offsets
585	and thus requires that libpmcstat be rebuilt before using a kernel
586	later than r334108.
587
58820180517:
589	The vxge(4) driver has been removed.  This driver was introduced into
590	HEAD one week before the Exar left the Ethernet market and is not
591	known to be used.  If you have device vxge in your kernel config file
592	it must be removed.
593
59420180510:
595	The amd64 kernel now requires a ld that supports ifunc to produce a
596	working kernel, either lld or a newer binutils. lld is built by default
597	on amd64, and the 'buildkernel' target uses it automatically. However,
598	it is not the default linker, so building the kernel the traditional
599	way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for
600	binutils port/package). lld will soon be default, and this requirement
601	will go away.
602
603	NOTE: As of r334391 lld is the default system linker on amd64, and no
604	workaround is necessary.
605
60620180508:
607	The nxge(4) driver has been removed.  This driver was for PCI-X 10g
608	cards made by s2io/Neterion.  The company was acquired by Exar and
609	no longer sells or supports Ethernet products.  If you have device
610	nxge in your kernel config file it must be removed.
611
61220180504:
613	The tz database (tzdb) has been updated to 2018e.  This version more
614	correctly models time stamps in time zones with negative DST such as
615	Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and
616	Africa/Windhoek (1994/2017).  This does not affect the UT offsets, only
617	time zone abbreviations and the tm_isdst flag.
618
61920180502:
620	The ixgb(4) driver has been removed.  This driver was for an early and
621	uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel
622	quickly shifted to the long lived ixgbe family.  If you have device
623	ixgb in your kernel config file it must be removed.
624
62520180501:
626	The lmc(4) driver has been removed.  This was a WAN interface
627	card that was already reportedly rare in 2003, and had an ambiguous
628	license.  If you have device lmc in your kernel config file it must
629	be removed.
630
63120180413:
632	Support for Arcnet networks has been removed.  If you have device
633	arcnet or device cm in your kernel config file they must be
634	removed.
635
63620180411:
637	Support for FDDI networks has been removed.  If you have device
638	fddi or device fpa in your kernel config file they must be
639	removed.
640
64120180406:
642	In addition to supporting RFC 3164 formatted messages, the
643	syslogd(8) service is now capable of parsing RFC 5424 formatted
644	log messages. The main benefit of using RFC 5424 is that clients
645	may now send log messages with timestamps containing year numbers,
646	microseconds and time zone offsets.
647
648	Similarly, the syslog(3) C library function has been altered to
649	send RFC 5424 formatted messages to the local system logging
650	daemon. On systems using syslogd(8), this change should have no
651	negative impact, as long as syslogd(8) and the C library are
652	updated at the same time. On systems using a different system
653	logging daemon, it may be necessary to make configuration
654	adjustments, depending on the software used.
655
656	When using syslog-ng, add the 'syslog-protocol' flag to local
657	input sources to enable parsing of RFC 5424 formatted messages:
658
659		source src {
660			unix-dgram("/var/run/log" flags(syslog-protocol));
661		}
662
663	When using rsyslog, disable the 'SysSock.UseSpecialParser' option
664	of the 'imuxsock' module to let messages be processed by the
665	regular RFC 3164/5424 parsing pipeline:
666
667		module(load="imuxsock" SysSock.UseSpecialParser="off")
668
669	Do note that these changes only affect communication between local
670	applications and syslogd(8). The format that syslogd(8) uses to
671	store messages on disk or forward messages to other systems
672	remains unchanged. syslogd(8) still uses RFC 3164 for these
673	purposes. Options to customize this behaviour will be added in the
674	future. Utilities that process log files stored in /var/log are
675	thus expected to continue to function as before.
676
677	__FreeBSD_version has been incremented to 1200061 to denote this
678	change.
679
68020180328:
681	Support for token ring networks has been removed. If you
682	have "device token" in your kernel config you should remove
683	it. No device drivers supported token ring.
684
68520180323:
686	makefs was modified to be able to tag ISO9660 El Torito boot catalog
687	entries as EFI instead of overloading the i386 tag as done previously.
688	The amd64 mkisoimages.sh script used to build amd64 ISO images for
689	release was updated to use this. This may mean that makefs must be
690	updated before "make cdrom" can be run in the release directory. This
691	should be as simple as:
692
693		$ cd $SRCDIR/usr.sbin/makefs
694		$ make depend all install
695
69620180212:
697	FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for
698	now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf.
699	Co-existence for the transition period will come shortly. Booting is a
700	complex environment and test coverage for Lua-enabled loaders has been
701	thin, so it would be prudent to assume it might not work and make
702	provisions for backup boot methods.
703
70420180211:
705	devmatch functionality has been turned on in devd. It will automatically
706	load drivers for unattached devices. This may cause unexpected drivers
707	to be loaded. Please report any problems to current@ and
708	imp@freebsd.org.
709
71020180114:
711	Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
712	6.0.0.  Please see the 20141231 entry below for information about
713	prerequisites and upgrading, if you are not already using clang 3.5.0
714	or higher.
715
71620180110:
717	LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker.
718	This means it is used to link the kernel and userland libraries and
719	executables, but is not yet installed as /usr/bin/ld by default.
720
721	To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set
722	WITHOUT_LLD_BOOTSTRAP=yes
723
72420180110:
725	On i386, pmtimer has been removed. Its functionality has been folded
726	into apm. It was a no-op on ACPI in current for a while now (but was
727	still needed on i386 in FreeBSD 11 and earlier). Users may need to
728	remove it from kernel config files.
729
73020180104:
731	The use of RSS hash from the network card aka flowid has been
732	disabled by default for lagg(4) as it's currently incompatible with
733	the lacp and loadbalance protocols.
734
735	This can be re-enabled by setting the following in loader.conf:
736	net.link.lagg.default_use_flowid="1"
737
73820180102:
739	The SW_WATCHDOG option is no longer necessary to enable the
740	hardclock-based software watchdog if no hardware watchdog is
741	configured. As before, SW_WATCHDOG will cause the software
742	watchdog to be enabled even if a hardware watchdog is configured.
743
74420171215:
745	r326887 fixes the issue described in the 20171214 UPDATING entry.
746	r326888 flips the switch back to building GELI support always.
747
74820171214:
749	r362593 broke ZFS + GELI support for reasons unknown. However,
750	it also broke ZFS support generally, so GELI has been turned off
751	by default as the lesser evil in r326857. If you boot off ZFS and/or
752	GELI, it might not be a good time to update.
753
75420171125:
755	PowerPC users must update loader(8) by rebuilding world before
756	installing a new kernel, as the protocol connecting them has
757	changed. Without the update, loader metadata will not be passed
758	successfully to the kernel and users will have to enter their
759	root partition at the kernel mountroot prompt to continue booting.
760	Newer versions of loader can boot old kernels without issue.
761
76220171110:
763	The LOADER_FIREWIRE_SUPPORT build variable as been renamed to
764	WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed
765	to WITH/OUT_LOADER_GELI.
766
76720171106:
768	The naive and non-compliant support of posix_fallocate(2) in ZFS
769	has been removed as of r325320.  The system call now returns EINVAL
770	when used on a ZFS file.  Although the new behavior complies with the
771	standard, some consumers are not prepared to cope with it.
772	One known victim is lld prior to r325420.
773
77420171102:
775	Building in a FreeBSD src checkout will automatically create object
776	directories now rather than store files in the current directory if
777	'make obj' was not ran.  Calling 'make obj' is no longer necessary.
778	This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in
779	/etc/src-env.conf (not /etc/src.conf), or passing the option in the
780	environment.
781
78220171101:
783	The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native
784	builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified
785	/usr/obj/<srcdir>/<arch>.  This behavior can be changed to the old
786	format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf,
787	the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building.
788	The UNIFIED_OBJDIR option is a transitional feature that will be
789	removed for 12.0 release; please migrate to the new format for any
790	tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather
791	than hardcoding paths.
792
79320171028:
794	The native-xtools target no longer installs the files by default to the
795	OBJDIR.  Use the native-xtools-install target with a DESTDIR to install
796	to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin.
797
79820171021:
799	As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT
800	options are changing from controlling the build if defined / undefined
801	to controlling the build with explicit 'yes' or 'no' values. They will
802	shift to WITH/WITHOUT options to match other options in the system.
803
80420171010:
805	libstand has turned into a private library for sys/boot use only.
806	It is no longer supported as a public interface outside of sys/boot.
807
80820171005:
809	The arm port has split armv6 into armv6 and armv7. armv7 is now
810	a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system
811	and are running a kernel from before r324363, you will need to add
812	MACHINE_ARCH=armv7 to 'make buildworld' to do a native build.
813
81420171003:
815	When building multiple kernels using KERNCONF, non-existent KERNCONF
816	files will produce an error and buildkernel will fail. Previously
817	missing KERNCONF files silently failed giving no indication as to
818	why, only to subsequently discover during installkernel that the
819	desired kernel was never built in the first place.
820
82120170912:
822	The default serial number format for CTL LUNs has changed.  This will
823	affect users who use /dev/diskid/* device nodes, or whose FibreChannel
824	or iSCSI clients care about their LUNs' serial numbers.  Users who
825	require serial number stability should hardcode serial numbers in
826	/etc/ctl.conf .
827
82820170912:
829	For 32-bit arm compiled for hard-float support, soft-floating point
830	binaries now always get their shared libraries from
831	LD_SOFT_LIBRARY_PATH (in the past, this was only used if
832	/usr/libsoft also existed). Only users with a hard-float ld.so, but
833	soft-float everything else should be affected.
834
83520170826:
836	The geli password typed at boot is now hidden.  To restore the previous
837	behavior, see geli(8) for configuration options.
838
83920170825:
840	Move PMTUD blackhole counters to TCPSTATS and remove them from bare
841	sysctl values.  Minor nit, but requires a rebuild of both world/kernel
842	to complete.
843
84420170814:
845	"make check" behavior (made in ^/head@r295380) has been changed to
846	execute from a limited sandbox, as opposed to executing from
847	${TESTSDIR}.
848
849	Behavioral changes:
850	- The "beforecheck" and "aftercheck" targets are now specified.
851	- ${CHECKDIR} (added in commit noted above) has been removed.
852	- Legacy behavior can be enabled by setting
853	  WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment.
854
855	If the limited sandbox mode is enabled, "make check" will execute
856	"make distribution", then install, execute the tests, and clean up the
857	sandbox if successful.
858
859	The "make distribution" and "make install" targets are typically run as
860	root to set appropriate permissions and ownership at installation time.
861	The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the
862	environment if executing "make check" with limited sandbox mode using
863	an unprivileged user.
864
86520170808:
866	Since the switch to GPT disk labels, fsck for UFS/FFS has been
867	unable to automatically find alternate superblocks. As of r322297,
868	the information needed to find alternate superblocks has been
869	moved to the end of the area reserved for the boot block.
870	Filesystems created with a newfs of this vintage or later
871	will create the recovery information. If you have a filesystem
872	created prior to this change and wish to have a recovery block
873	created for your filesystem, you can do so by running fsck in
874	foreground mode (i.e., do not use the -p or -y options). As it
875	starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS''
876	to which you should answer yes.
877
87820170728:
879	As of r321665, an NFSv4 server configuration that services
880	Kerberos mounts or clients that do not support the uid/gid in
881	owner/owner_group string capability, must explicitly enable
882	the nfsuserd daemon by adding nfsuserd_enable="YES" to the
883	machine's /etc/rc.conf file.
884
88520170722:
886	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0.
887	Please see the 20141231 entry below for information about prerequisites
888	and upgrading, if you are not already using clang 3.5.0 or higher.
889
89020170701:
891	WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the
892	r-commands (rlogin, rsh, etc.) to be built with the base system.
893
89420170625:
895	The FreeBSD/powerpc platform now uses a 64-bit type for time_t.  This is
896	a very major ABI incompatible change, so users of FreeBSD/powerpc must
897	be careful when performing source upgrades.  It is best to run
898	'make installworld' from an alternate root system, either a live
899	CD/memory stick, or a temporary root partition.  Additionally, all ports
900	must be recompiled.  powerpc64 is largely unaffected, except in the case
901	of 32-bit compatibility.  All 32-bit binaries will be affected.
902
90320170623:
904	Forward compatibility for the "ino64" project have been committed. This
905	will allow most new binaries to run on older kernels in a limited
906	fashion.  This prevents many of the common foot-shooting actions in the
907	upgrade as well as the limited ability to roll back the kernel across
908	the ino64 upgrade. Complicated use cases may not work properly, though
909	enough simpler ones work to allow recovery in most situations.
910
91120170620:
912	Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC
913	if you require the GPL compiler.
914
91520170618:
916	The internal ABI used for communication between the NFS kernel modules
917	was changed by r320085, so __FreeBSD_version was bumped to
918	ensure all the NFS related modules are updated together.
919
92020170617:
921	The ABI of struct event was changed by extending the data
922	member to 64bit and adding ext fields.  For upgrade, same
923	precautions as for the entry 20170523 "ino64" must be
924	followed.
925
92620170531:
927	The GNU roff toolchain has been removed from base. To render manpages
928	which are not supported by mandoc(1), man(1) can fallback on GNU roff
929	from ports (and recommends to install it).
930	To render roff(7) documents, consider using GNU roff from ports or the
931	heirloom doctools roff toolchain from ports via pkg install groff or
932	via pkg install heirloom-doctools.
933
93420170524:
935	The ath(4) and ath_hal(4) modules now build piecemeal to allow for
936	smaller runtime footprint builds.  This is useful for embedded systems
937	which only require one chipset support.
938
939	If you load it as a module, make sure this is in /boot/loader.conf:
940
941	if_ath_load="YES"
942
943	This will load the HAL, all chip/RF backends and if_ath_pci.
944	If you have if_ath_pci in /boot/loader.conf, ensure it is after
945	if_ath or it will not load any HAL chipset support.
946
947	If you want to selectively load things (eg on ye cheape ARM/MIPS
948	platforms where RAM is at a premium) you should:
949
950	* load ath_hal
951	* load the chip modules in question
952	* load ath_rate, ath_dfs
953	* load ath_main
954	* load if_ath_pci and/or if_ath_ahb depending upon your particular
955	  bus bind type - this is where probe/attach is done.
956
957	For further comments/feedback, poke adrian@ .
958
95920170523:
960	The "ino64" 64-bit inode project has been committed, which extends
961	a number of types to 64 bits.  Upgrading in place requires care and
962	adherence to the documented upgrade procedure.
963
964	If using a custom kernel configuration ensure that the
965	COMPAT_FREEBSD11 option is included (as during the upgrade the
966	system will be running the ino64 kernel with the existing world).
967
968	For the safest in-place upgrade begin by removing previous build
969	artifacts via "rm -rf /usr/obj/*".  Then, carefully follow the full
970	procedure documented below under the heading "To rebuild everything and
971	install it on the current system."  Specifically, a reboot is required
972	after installing the new kernel before installing world. While an
973	installworld normally works by accident from multiuser after rebooting
974	the proper kernel, there are many cases where this will fail across this
975	upgrade and installworld from single user is required.
976
97720170424:
978	The NATM framework including the en(4), fatm(4), hatm(4), and
979	patm(4) devices has been removed.  Consumers should plan a
980	migration before the end-of-life date for FreeBSD 11.
981
98220170420:
983	GNU diff has been replaced by a BSD licensed diff. Some features of GNU
984	diff has not been implemented, if those are needed a newer version of
985	GNU diff is available via the diffutils package under the gdiff name.
986
98720170413:
988	As of r316810 for ipfilter, keep frags is no longer assumed when
989	keep state is specified in a rule. r316810 aligns ipfilter with
990	documentation in man pages separating keep frags from keep state.
991	This allows keep state to be specified without forcing keep frags
992	and allows keep frags to be specified independently of keep state.
993	To maintain previous behaviour, also specify keep frags with
994	keep state (as documented in ipf.conf.5).
995
99620170407:
997	arm64 builds now use the base system LLD 4.0.0 linker by default,
998	instead of requiring that the aarch64-binutils port or package be
999	installed. To continue using aarch64-binutils, set
1000	CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin .
1001
100220170405:
1003	The UDP optimization in entry 20160818 that added the sysctl
1004	net.inet.udp.require_l2_bcast has been reverted.  L2 broadcast
1005	packets will no longer be treated as L3 broadcast packets.
1006
100720170331:
1008	Binds and sends to the loopback addresses, IPv6 and IPv4, will now
1009	use any explicitly assigned loopback address available in the jail
1010	instead of using the first assigned address of the jail.
1011
101220170329:
1013	The ctl.ko module no longer implements the iSCSI target frontend:
1014	cfiscsi.ko does instead.
1015
1016	If building cfiscsi.ko as a kernel module, the module can be loaded
1017	via one of the following methods:
1018	- `cfiscsi_load="YES"` in loader.conf(5).
1019	- Add `cfiscsi` to `$kld_list` in rc.conf(5).
1020	- ctladm(8)/ctld(8), when compiled with iSCSI support
1021	  (`WITH_ISCSI=yes` in src.conf(5))
1022
1023	Please see cfiscsi(4) for more details.
1024
102520170316:
1026	The mmcsd.ko module now additionally depends on geom_flashmap.ko.
1027	Also, mmc.ko and mmcsd.ko need to be a matching pair built from the
1028	same source (previously, the dependency of mmcsd.ko on mmc.ko was
1029	missing, but mmcsd.ko now will refuse to load if it is incompatible
1030	with mmc.ko).
1031
103220170315:
1033	The syntax of ipfw(8) named states was changed to avoid ambiguity.
1034	If you have used named states in the firewall rules, you need to modify
1035	them after installworld and before rebooting. Now named states must
1036	be prefixed with colon.
1037
103820170311:
1039	The old drm (sys/dev/drm/) drivers for i915 and radeon have been
1040	removed as the userland we provide cannot use them. The KMS version
1041	(sys/dev/drm2) supports the same hardware.
1042
104320170302:
1044	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0.
1045	Please see the 20141231 entry below for information about prerequisites
1046	and upgrading, if you are not already using clang 3.5.0 or higher.
1047
104820170221:
1049	The code that provides support for ZFS .zfs/ directory functionality
1050	has been reimplemented.  It's not possible now to create a snapshot
1051	by mkdir under .zfs/snapshot/.  That should be the only user visible
1052	change.
1053
105420170216:
1055	EISA bus support has been removed. The WITH_EISA option is no longer
1056	valid.
1057
105820170215:
1059	MCA bus support has been removed.
1060
106120170127:
1062	The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed
1063	WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC.
1064
106520170112:
1066	The EM_MULTIQUEUE kernel configuration option is deprecated now that
1067	the em(4) driver conforms to iflib specifications.
1068
106920170109:
1070	The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
1071	IFLIB.  If you have a custom kernel configuration that excludes em(4)
1072	but you use igb(4), you need to re-add em(4) to your custom
1073	configuration.
1074
107520161217:
1076	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1.
1077	Please see the 20141231 entry below for information about prerequisites
1078	and upgrading, if you are not already using clang 3.5.0 or higher.
1079
108020161124:
1081	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0.
1082	Please see the 20141231 entry below for information about prerequisites
1083	and upgrading, if you are not already using clang 3.5.0 or higher.
1084
108520161119:
1086	The layout of the pmap structure has changed for powerpc to put the pmap
1087	statistics at the front for all CPU variations.  libkvm(3) and all tools
1088	that link against it need to be recompiled.
1089
109020161030:
1091	isl(4) and cyapa(4) drivers now require a new driver,
1092	chromebook_platform(4), to work properly on Chromebook-class hardware.
1093	On other types of hardware the drivers may need to be configured using
1094	device hints.  Please see the corresponding manual pages for details.
1095
109620161017:
1097	The urtwn(4) driver was merged into rtwn(4) and now consists of
1098	rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific
1099	parts.
1100	Also, firmware for RTL8188CE was renamed due to possible name
1101	conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B))
1102
110320161015:
1104	GNU rcs has been removed from base.  It is available as packages:
1105	- rcs: Latest GPLv3 GNU rcs version.
1106	- rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was
1107	removed from base.
1108
110920161008:
1110	Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control
1111	modules now requires that the kernel configuration contain the
1112	TCP_HHOOK option. (This option is included in the GENERIC kernel.)
1113
111420161003:
1115	The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired.
1116	ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy.
1117
111820160924:
1119	Relocatable object files with the extension of .So have been renamed
1120	to use an extension of .pico instead.  The purpose of this change is
1121	to avoid a name clash with shared libraries on case-insensitive file
1122	systems.  On those file systems, foo.So is the same file as foo.so.
1123
112420160918:
1125	GNU rcs has been turned off by default.  It can (temporarily) be built
1126	again by adding WITH_RCS knob in src.conf.
1127	Otherwise, GNU rcs is available from packages:
1128	- rcs: Latest GPLv3 GNU rcs version.
1129	- rcs57: Copy of the latest version of GNU rcs (GPLv2) from base.
1130
113120160918:
1132	The backup_uses_rcs functionality has been removed from rc.subr.
1133
113420160908:
1135	The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into
1136	two separate components, QUEUE_MACRO_DEBUG_TRACE and
1137	QUEUE_MACRO_DEBUG_TRASH.  Define both for the original
1138	QUEUE_MACRO_DEBUG behavior.
1139
114020160824:
1141	r304787 changed some ioctl interfaces between the iSCSI userspace
1142	programs and the kernel.  ctladm, ctld, iscsictl, and iscsid must be
1143	rebuilt to work with new kernels.  __FreeBSD_version has been bumped
1144	to 1200005.
1145
114620160818:
1147	The UDP receive code has been updated to only treat incoming UDP
1148	packets that were addressed to an L2 broadcast address as L3
1149	broadcast packets.  It is not expected that this will affect any
1150	standards-conforming UDP application.  The new behaviour can be
1151	disabled by setting the sysctl net.inet.udp.require_l2_bcast to
1152	0.
1153
115420160818:
1155	Remove the openbsd_poll system call.
1156	__FreeBSD_version has been bumped because of this.
1157
115820160708:
1159	The stable/11 branch has been created from head@r302406.
1160
116120160622:
1162	The libc stub for the pipe(2) system call has been replaced with
1163	a wrapper that calls the pipe2(2) system call and the pipe(2)
1164	system call is now only implemented by the kernels that include
1165	"options COMPAT_FREEBSD10" in their config file (this is the
1166	default).  Users should ensure that this option is enabled in
1167	their kernel or upgrade userspace to r302092 before upgrading their
1168	kernel.
1169
117020160527:
1171	CAM will now strip leading spaces from SCSI disks' serial numbers.
1172	This will affect users who create UFS filesystems on SCSI disks using
1173	those disk's diskid device nodes.  For example, if /etc/fstab
1174	previously contained a line like
1175	"/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should
1176	change it to "/dev/diskid/DISK-ABCDEFG0123456".  Users of geom
1177	transforms like gmirror may also be affected.  ZFS users should
1178	generally be fine.
1179
118020160523:
1181	The bitstring(3) API has been updated with new functionality and
1182	improved performance.  But it is binary-incompatible with the old API.
1183	Objects built with the new headers may not be linked against objects
1184	built with the old headers.
1185
118620160520:
1187	The brk and sbrk functions have been removed from libc on arm64.
1188	Binutils from ports has been updated to not link to these
1189	functions and should be updated to the latest version before
1190	installing a new libc.
1191
119220160517:
1193	The armv6 port now defaults to hard float ABI. Limited support
1194	for running both hardfloat and soft float on the same system
1195	is available using the libraries installed with -DWITH_LIBSOFT.
1196	This has only been tested as an upgrade path for installworld
1197	and packages may fail or need manual intervention to run. New
1198	packages will be needed.
1199
1200	To update an existing self-hosted armv6hf system, you must add
1201	TARGET_ARCH=armv6 on the make command line for both the build
1202	and the install steps.
1203
120420160510:
1205	Kernel modules compiled outside of a kernel build now default to
1206	installing to /boot/modules instead of /boot/kernel.  Many kernel
1207	modules built this way (such as those in ports) already overrode
1208	KMODDIR explicitly to install into /boot/modules.  However,
1209	manually building and installing a module from /sys/modules will
1210	now install to /boot/modules instead of /boot/kernel.
1211
121220160414:
1213	The CAM I/O scheduler has been committed to the kernel. There should be
1214	no user visible impact. This does enable NCQ Trim on ada SSDs. While the
1215	list of known rogues that claim support for this but actually corrupt
1216	data is believed to be complete, be on the lookout for data
1217	corruption. The known rogue list is believed to be complete:
1218
1219		o Crucial MX100, M550 drives with MU01 firmware.
1220		o Micron M510 and M550 drives with MU01 firmware.
1221		o Micron M500 prior to MU07 firmware
1222		o Samsung 830, 840, and 850 all firmwares
1223		o FCCT M500 all firmwares
1224
1225	Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware
1226	with working NCQ TRIM. For Micron branded drives, see your sales rep for
1227	updated firmware. Black listed drives will work correctly because these
1228	drives work correctly so long as no NCQ TRIMs are sent to them. Given
1229	this list is the same as found in Linux, it's believed there are no
1230	other rogues in the market place. All other models from the above
1231	vendors work.
1232
1233	To be safe, if you are at all concerned, you can quirk each of your
1234	drives to prevent NCQ from being sent by setting:
1235		kern.cam.ada.X.quirks="0x2"
1236	in loader.conf. If the drive requires the 4k sector quirk, set the
1237	quirks entry to 0x3.
1238
123920160330:
1240	The FAST_DEPEND build option has been removed and its functionality is
1241	now the one true way.  The old mkdep(1) style of 'make depend' has
1242	been removed.  See 20160311 for further details.
1243
124420160317:
1245	Resource range types have grown from unsigned long to uintmax_t.  All
1246	drivers, and anything using libdevinfo, need to be recompiled.
1247
124820160311:
1249	WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree
1250	builds.  It no longer runs mkdep(1) during 'make depend', and the
1251	'make depend' stage can safely be skipped now as it is auto ran
1252	when building 'make all' and will generate all SRCS and DPSRCS before
1253	building anything else.  Dependencies are gathered at compile time with
1254	-MF flags kept in separate .depend files per object file.  Users should
1255	run 'make cleandepend' once if using -DNO_CLEAN to clean out older
1256	stale .depend files.
1257
125820160306:
1259	On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into
1260	kernel modules.  Therefore, if you load any kernel modules at boot time,
1261	please install the boot loaders after you install the kernel, but before
1262	rebooting, e.g.:
1263
1264	make buildworld
1265	make buildkernel KERNCONF=YOUR_KERNEL_HERE
1266	make installkernel KERNCONF=YOUR_KERNEL_HERE
1267	make -C sys/boot install
1268	<reboot in single user>
1269
1270	Then follow the usual steps, described in the General Notes section,
1271	below.
1272
127320160305:
1274	Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0.  Please
1275	see the 20141231 entry below for information about prerequisites and
1276	upgrading, if you are not already using clang 3.5.0 or higher.
1277
127820160301:
1279	The AIO subsystem is now a standard part of the kernel.  The
1280	VFS_AIO kernel option and aio.ko kernel module have been removed.
1281	Due to stability concerns, asynchronous I/O requests are only
1282	permitted on sockets and raw disks by default.  To enable
1283	asynchronous I/O requests on all file types, set the
1284	vfs.aio.enable_unsafe sysctl to a non-zero value.
1285
128620160226:
1287	The ELF object manipulation tool objcopy is now provided by the
1288	ELF Tool Chain project rather than by GNU binutils. It should be a
1289	drop-in replacement, with the addition of arm64 support. The
1290	(temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
1291	to obtain the GNU version if necessary.
1292
129320160129:
1294	Building ZFS pools on top of zvols is prohibited by default.  That
1295	feature has never worked safely; it's always been prone to deadlocks.
1296	Using a zvol as the backing store for a VM guest's virtual disk will
1297	still work, even if the guest is using ZFS.  Legacy behavior can be
1298	restored by setting vfs.zfs.vol.recursive=1.
1299
130020160119:
1301	The NONE and HPN patches has been removed from OpenSSH.  They are
1302	still available in the security/openssh-portable port.
1303
130420160113:
1305	With the addition of ypldap(8), a new _ypldap user is now required
1306	during installworld. "mergemaster -p" can be used to add the user
1307	prior to installworld, as documented in the handbook.
1308
130920151216:
1310	The tftp loader (pxeboot) now uses the option root-path directive. As a
1311	consequence it no longer looks for a pxeboot.4th file on the tftp
1312	server. Instead it uses the regular /boot infrastructure as with the
1313	other loaders.
1314
131520151211:
1316	The code to start recording plug and play data into the modules has
1317	been committed. While the old tools will properly build a new kernel,
1318	a number of warnings about "unknown metadata record 4" will be produced
1319	for an older kldxref. To avoid such warnings, make sure to rebuild
1320	the kernel toolchain (or world). Make sure that you have r292078 or
1321	later when trying to build 292077 or later before rebuilding.
1322
132320151207:
1324	Debug data files are now built by default with 'make buildworld' and
1325	installed with 'make installworld'. This facilitates debugging but
1326	requires more disk space both during the build and for the installed
1327	world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
1328	in src.conf(5).
1329
133020151130:
1331	r291527 changed the internal interface between the nfsd.ko and
1332	nfscommon.ko modules. As such, they must both be upgraded to-gether.
1333	__FreeBSD_version has been bumped because of this.
1334
133520151108:
1336	Add support for unicode collation strings leads to a change of
1337	order of files listed by ls(1) for example. To get back to the old
1338	behaviour, set LC_COLLATE environment variable to "C".
1339
1340	Databases administrators will need to reindex their databases given
1341	collation results will be different.
1342
1343	Due to a bug in install(1) it is recommended to remove the ancient
1344	locales before running make installworld.
1345
1346	rm -rf /usr/share/locale/*
1347
134820151030:
1349	The OpenSSL has been upgraded to 1.0.2d.  Any binaries requiring
1350	libcrypto.so.7 or libssl.so.7 must be recompiled.
1351
135220151020:
1353	Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
1354	Kernel modules isp_2400_multi and isp_2500_multi were removed and
1355	should be replaced with isp_2400 and isp_2500 modules respectively.
1356
135720151017:
1358	The build previously allowed using 'make -n' to not recurse into
1359	sub-directories while showing what commands would be executed, and
1360	'make -n -n' to recursively show commands.  Now 'make -n' will recurse
1361	and 'make -N' will not.
1362
136320151012:
1364	If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
1365	and etcupdate will now use this file. A custom sendmail.cf is now
1366	updated via this mechanism rather than via installworld.  If you had
1367	excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
1368	want to remove the exclusion or change it to "always install".
1369	/etc/mail/sendmail.cf is now managed the same way regardless of
1370	whether SENDMAIL_MC/SENDMAIL_CF is used.  If you are not using
1371	SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
1372
137320151011:
1374	Compatibility shims for legacy ATA device names have been removed.
1375	It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
1376	and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
1377	environment variables, /dev/ad* and /dev/ar* symbolic links.
1378
137920151006:
1380	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
1381	Please see the 20141231 entry below for information about prerequisites
1382	and upgrading, if you are not already using clang 3.5.0 or higher.
1383
138420150924:
1385	Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
1386	and renamed from .symbols to .debug. This reduces the size requirements
1387	on the boot partition or file system and provides consistency with
1388	userland debug files.
1389
1390	When using the supported kernel installation method the
1391	/usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
1392	as is done with /boot/kernel.
1393
1394	Developers wishing to maintain the historical behavior of installing
1395	debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
1396
139720150827:
1398	The wireless drivers had undergone changes that remove the 'parent
1399	interface' from the ifconfig -l output. The rc.d network scripts
1400	used to check presence of a parent interface in the list, so old
1401	scripts would fail to start wireless networking. Thus, etcupdate(3)
1402	or mergemaster(8) run is required after kernel update, to update your
1403	rc.d scripts in /etc.
1404
140520150827:
1406	pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
1407	These configurations are now automatically interpreted as
1408	'scrub fragment reassemble'.
1409
141020150817:
1411	Kernel-loadable modules for the random(4) device are back. To use
1412	them, the kernel must have
1413
1414	device	random
1415	options	RANDOM_LOADABLE
1416
1417	kldload(8) can then be used to load random_fortuna.ko
1418	or random_yarrow.ko. Please note that due to the indirect
1419	function calls that the loadable modules need to provide,
1420	the build-in variants will be slightly more efficient.
1421
1422	The random(4) kernel option RANDOM_DUMMY has been retired due to
1423	unpopularity. It was not all that useful anyway.
1424
142520150813:
1426	The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
1427	Control over building the ELF Tool Chain tools is now provided by
1428	the WITHOUT_TOOLCHAIN knob.
1429
143020150810:
1431	The polarity of Pulse Per Second (PPS) capture events with the
1432	uart(4) driver has been corrected.  Prior to this change the PPS
1433	"assert" event corresponded to the trailing edge of a positive PPS
1434	pulse and the "clear" event was the leading edge of the next pulse.
1435
1436	As the width of a PPS pulse in a typical GPS receiver is on the
1437	order of 1 millisecond, most users will not notice any significant
1438	difference with this change.
1439
1440	Anyone who has compensated for the historical polarity reversal by
1441	configuring a negative offset equal to the pulse width will need to
1442	remove that workaround.
1443
144420150809:
1445	The default group assigned to /dev/dri entries has been changed
1446	from 'wheel' to 'video' with the id of '44'. If you want to have
1447	access to the dri devices please add yourself to the video group
1448	with:
1449
1450	# pw groupmod video -m $USER
1451
145220150806:
1453	The menu.rc and loader.rc files will now be replaced during
1454	upgrades. Please migrate local changes to menu.rc.local and
1455	loader.rc.local instead.
1456
145720150805:
1458	GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
1459	strings and strip have been removed. The src.conf(5) knob
1460	WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
1461
146220150728:
1463	As ZFS requires more kernel stack pages than is the default on some
1464	architectures e.g. i386, it now warns if KSTACK_PAGES is less than
1465	ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
1466
1467	Please consider using 'options KSTACK_PAGES=X' where X is greater
1468	than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
1469
147020150706:
1471	sendmail has been updated to 8.15.2.  Starting with FreeBSD 11.0
1472	and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
1473	default, i.e., they will not contain "::".  For example, instead
1474	of ::1, it will be 0:0:0:0:0:0:0:1.  This permits a zero subnet
1475	to have a more specific match, such as different map entries for
1476	IPv6:0:0 vs IPv6:0.  This change requires that configuration
1477	data (including maps, files, classes, custom ruleset, etc.) must
1478	use the same format, so make certain such configuration data is
1479	upgrading.  As a very simple check search for patterns like
1480	'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'.  To return to the old
1481	behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
1482	the cf option UseCompressedIPv6Addresses.
1483
148420150630:
1485	The default kernel entropy-processing algorithm is now
1486	Fortuna, replacing Yarrow.
1487
1488	Assuming you have 'device random' in your kernel config
1489	file, the configurations allow a kernel option to override
1490	this default. You may choose *ONE* of:
1491
1492	options	RANDOM_YARROW	# Legacy /dev/random algorithm.
1493	options	RANDOM_DUMMY	# Blocking-only driver.
1494
1495	If you have neither, you get Fortuna.  For most people,
1496	read no further, Fortuna will give a /dev/random that works
1497	like it always used to, and the difference will be irrelevant.
1498
1499	If you remove 'device random', you get *NO* kernel-processed
1500	entropy at all. This may be acceptable to folks building
1501	embedded systems, but has complications. Carry on reading,
1502	and it is assumed you know what you need.
1503
1504	*PLEASE* read random(4) and random(9) if you are in the
1505	habit of tweaking kernel configs, and/or if you are a member
1506	of the embedded community, wanting specific and not-usual
1507	behaviour from your security subsystems.
1508
1509	NOTE!! If you use RANDOM_DUMMY and/or have no 'device
1510	random', you will NOT have a functioning /dev/random, and
1511	many cryptographic features will not work, including SSH.
1512	You may also find strange behaviour from the random(3) set
1513	of library functions, in particular sranddev(3), srandomdev(3)
1514	and arc4random(3). The reason for this is that the KERN_ARND
1515	sysctl only returns entropy if it thinks it has some to
1516	share, and with RANDOM_DUMMY or no 'device random' this
1517	will never happen.
1518
151920150623:
1520	An additional fix for the issue described in the 20150614 sendmail
1521	entry below has been committed in revision 284717.
1522
152320150616:
1524	FreeBSD's old make (fmake) has been removed from the system. It is
1525	available as the devel/fmake port or via pkg install fmake.
1526
152720150615:
1528	The fix for the issue described in the 20150614 sendmail entry
1529	below has been committed in revision 284436.  The work
1530	around described in that entry is no longer needed unless the
1531	default setting is overridden by a confDH_PARAMETERS configuration
1532	setting of '5' or pointing to a 512 bit DH parameter file.
1533
153420150614:
1535	ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
1536	atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
1537	and devel/kyua to version 0.20+ and adjust any calling code to work
1538	with Kyuafile and kyua.
1539
154020150614:
1541	The import of openssl to address the FreeBSD-SA-15:10.openssl
1542	security advisory includes a change which rejects handshakes
1543	with DH parameters below 768 bits.  sendmail releases prior
1544	to 8.15.2 (not yet released), defaulted to a 512 bit
1545	DH parameter setting for client connections.  To work around
1546	this interoperability, sendmail can be configured to use a
1547	2048 bit DH parameter by:
1548
1549	1. Edit /etc/mail/`hostname`.mc
1550	2. If a setting for confDH_PARAMETERS does not exist or
1551	   exists and is set to a string beginning with '5',
1552	   replace it with '2'.
1553	3. If a setting for confDH_PARAMETERS exists and is set to
1554	   a file path, create a new file with:
1555		openssl dhparam -out /path/to/file 2048
1556	4. Rebuild the .cf file:
1557		cd /etc/mail/; make; make install
1558	5. Restart sendmail:
1559		cd /etc/mail/; make restart
1560
1561	A sendmail patch is coming, at which time this file will be
1562	updated.
1563
156420150604:
1565	Generation of legacy formatted entries have been disabled by default
1566	in pwd_mkdb(8), as all base system consumers of the legacy formatted
1567	entries were converted to use the new format by default when the new,
1568	machine independent format have been added and supported since FreeBSD
1569	5.x.
1570
1571	Please see the pwd_mkdb(8) manual page for further details.
1572
157320150525:
1574	Clang and llvm have been upgraded to 3.6.1 release.  Please see the
1575	20141231 entry below for information about prerequisites and upgrading,
1576	if you are not already using 3.5.0 or higher.
1577
157820150521:
1579	TI platform code switched to using vendor DTS files and this update
1580	may break existing systems running on Beaglebone, Beaglebone Black,
1581	and Pandaboard:
1582
1583	- dtb files should be regenerated/reinstalled. Filenames are the
1584	  same but content is different now
1585	- GPIO addressing was changed, now each GPIO bank (32 pins per bank)
1586	  has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
1587	  addressing scheme is now pin 25 on /dev/gpioc3.
1588	- Pandaboard: /etc/ttys should be updated, serial console device is
1589	  now /dev/ttyu2, not /dev/ttyu0
1590
159120150501:
1592	soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
1593	If you need the GNU extension from groff soelim(1), install groff
1594	from package: pkg install groff, or via ports: textproc/groff.
1595
159620150423:
1597	chmod, chflags, chown and chgrp now affect symlinks in -R mode as
1598	defined in symlink(7); previously symlinks were silently ignored.
1599
160020150415:
1601	The const qualifier has been removed from iconv(3) to comply with
1602	POSIX.  The ports tree is aware of this from r384038 onwards.
1603
160420150416:
1605	Libraries specified by LIBADD in Makefiles must have a corresponding
1606	DPADD_<lib> variable to ensure correct dependencies.  This is now
1607	enforced in src.libnames.mk.
1608
160920150324:
1610	From legacy ata(4) driver was removed support for SATA controllers
1611	supported by more functional drivers ahci(4), siis(4) and mvs(4).
1612	Kernel modules ataahci and ataadaptec were removed completely,
1613	replaced by ahci and mvs modules respectively.
1614
161520150315:
1616	Clang, llvm and lldb have been upgraded to 3.6.0 release.  Please see
1617	the 20141231 entry below for information about prerequisites and
1618	upgrading, if you are not already using 3.5.0 or higher.
1619
162020150307:
1621	The 32-bit PowerPC kernel has been changed to a position-independent
1622	executable. This can only be booted with a version of loader(8)
1623	newer than January 31, 2015, so make sure to update both world and
1624	kernel before rebooting.
1625
162620150217:
1627	If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
1628	but before r278950, the RNG was not seeded properly.  Immediately
1629	upgrade the kernel to r278950 or later and regenerate any keys (e.g.
1630	ssh keys or openssl keys) that were generated w/ a kernel from that
1631	range.  This does not affect programs that directly used /dev/random
1632	or /dev/urandom.  All userland uses of arc4random(3) are affected.
1633
163420150210:
1635	The autofs(4) ABI was changed in order to restore binary compatibility
1636	with 10.1-RELEASE.  The automountd(8) daemon needs to be rebuilt to work
1637	with the new kernel.
1638
163920150131:
1640	The powerpc64 kernel has been changed to a position-independent
1641	executable. This can only be booted with a new version of loader(8),
1642	so make sure to update both world and kernel before rebooting.
1643
164420150118:
1645	Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
1646	only release, no new features have been added.  Please see the 20141231
1647	entry below for information about prerequisites and upgrading, if you
1648	are not already using 3.5.0.
1649
165020150107:
1651	ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
1652	taken from the ELF Tool Chain project rather than GNU binutils. They
1653	should be drop-in replacements, with the addition of arm64 support.
1654	The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
1655	binutils tools, if necessary. See 20150805 for updated information.
1656
165720150105:
1658	The default Unbound configuration now enables remote control
1659	using a local socket.  Users who have already enabled the
1660	local_unbound service should regenerate their configuration
1661	by running "service local_unbound setup" as root.
1662
166320150102:
1664	The GNU texinfo and GNU info pages have been removed.
1665	To be able to view GNU info pages please install texinfo from ports.
1666
166720141231:
1668	Clang, llvm and lldb have been upgraded to 3.5.0 release.
1669
1670	As of this release, a prerequisite for building clang, llvm and lldb is
1671	a C++11 capable compiler and C++11 standard library.  This means that to
1672	be able to successfully build the cross-tools stage of buildworld, with
1673	clang as the bootstrap compiler, your system compiler or cross compiler
1674	should either be clang 3.3 or later, or gcc 4.8 or later, and your
1675	system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
1676	later.
1677
1678	On any standard FreeBSD 10.x or 11.x installation, where clang and
1679	libc++ are on by default (that is, on x86 or arm), this should work out
1680	of the box.
1681
1682	On 9.x installations where clang is enabled by default, e.g. on x86 and
1683	powerpc, libc++ will not be enabled by default, so libc++ should be
1684	built (with clang) and installed first.  If both clang and libc++ are
1685	missing, build clang first, then use it to build libc++.
1686
1687	On 8.x and earlier installations, upgrade to 9.x first, and then follow
1688	the instructions for 9.x above.
1689
1690	Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
1691	default, and do not build clang.
1692
1693	Many embedded systems are resource constrained, and will not be able to
1694	build clang in a reasonable time, or in some cases at all.  In those
1695	cases, cross building bootable systems on amd64 is a workaround.
1696
1697	This new version of clang introduces a number of new warnings, of which
1698	the following are most likely to appear:
1699
1700	-Wabsolute-value
1701
1702	This warns in two cases, for both C and C++:
1703	* When the code is trying to take the absolute value of an unsigned
1704	  quantity, which is effectively a no-op, and almost never what was
1705	  intended.  The code should be fixed, if at all possible.  If you are
1706	  sure that the unsigned quantity can be safely cast to signed, without
1707	  loss of information or undefined behavior, you can add an explicit
1708	  cast, or disable the warning.
1709
1710	* When the code is trying to take an absolute value, but the called
1711	  abs() variant is for the wrong type, which can lead to truncation.
1712	  If you want to disable the warning instead of fixing the code, please
1713	  make sure that truncation will not occur, or it might lead to unwanted
1714	  side-effects.
1715
1716	-Wtautological-undefined-compare and
1717	-Wundefined-bool-conversion
1718
1719	These warn when C++ code is trying to compare 'this' against NULL, while
1720	'this' should never be NULL in well-defined C++ code.  However, there is
1721	some legacy (pre C++11) code out there, which actively abuses this
1722	feature, which was less strictly defined in previous C++ versions.
1723
1724	Squid and openjdk do this, for example.  The warning can be turned off
1725	for C++98 and earlier, but compiling the code in C++11 mode might result
1726	in unexpected behavior; for example, the parts of the program that are
1727	unreachable could be optimized away.
1728
172920141222:
1730	The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
1731	kernel sources have been removed. The .h files remain, since some
1732	utilities include them. This will need to be fixed later.
1733	If "mount -t oldnfs ..." is attempted, it will fail.
1734	If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
1735	the utilities will report errors.
1736
173720141121:
1738	The handling of LOCAL_LIB_DIRS has been altered to skip addition of
1739	directories to top level SUBDIR variable when their parent
1740	directory is included in LOCAL_DIRS.  Users with build systems with
1741	such hierarchies and without SUBDIR entries in the parent
1742	directory Makefiles should add them or add the directories to
1743	LOCAL_DIRS.
1744
174520141109:
1746	faith(4) and faithd(8) have been removed from the base system. Faith
1747	has been obsolete for a very long time.
1748
174920141104:
1750	vt(4), the new console driver, is enabled by default. It brings
1751	support for Unicode and double-width characters, as well as
1752	support for UEFI and integration with the KMS kernel video
1753	drivers.
1754
1755	You may need to update your console settings in /etc/rc.conf,
1756	most probably the keymap. During boot, /etc/rc.d/syscons will
1757	indicate what you need to do.
1758
1759	vt(4) still has issues and lacks some features compared to
1760	syscons(4). See the wiki for up-to-date information:
1761	  https://wiki.freebsd.org/Newcons
1762
1763	If you want to keep using syscons(4), you can do so by adding
1764	the following line to /boot/loader.conf:
1765	  kern.vty=sc
1766
176720141102:
1768	pjdfstest has been integrated into kyua as an opt-in test suite.
1769	Please see share/doc/pjdfstest/README for more details on how to
1770	execute it.
1771
177220141009:
1773	gperf has been removed from the base system for architectures
1774	that use clang. Ports that require gperf will obtain it from the
1775	devel/gperf port.
1776
177720140923:
1778	pjdfstest has been moved from tools/regression/pjdfstest to
1779	contrib/pjdfstest .
1780
178120140922:
1782	At svn r271982, The default linux compat kernel ABI has been adjusted
1783	to 2.6.18 in support of the linux-c6 compat ports infrastructure
1784	update.  If you wish to continue using the linux-f10 compat ports,
1785	add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
1786	encouraged to update their linux-compat packages to linux-c6 during
1787	their next update cycle.
1788
178920140729:
1790	The ofwfb driver, used to provide a graphics console on PowerPC when
1791	using vt(4), no longer allows mmap() of all physical memory. This
1792	will prevent Xorg on PowerPC with some ATI graphics cards from
1793	initializing properly unless x11-servers/xorg-server is updated to
1794	1.12.4_8 or newer.
1795
179620140723:
1797	The xdev targets have been converted to using TARGET and
1798	TARGET_ARCH instead of XDEV and XDEV_ARCH.
1799
180020140719:
1801	The default unbound configuration has been modified to address
1802	issues with reverse lookups on networks that use private
1803	address ranges.  If you use the local_unbound service, run
1804	"service local_unbound setup" as root to regenerate your
1805	configuration, then "service local_unbound reload" to load the
1806	new configuration.
1807
180820140709:
1809	The GNU texinfo and GNU info pages are not built and installed
1810	anymore, WITH_INFO knob has been added to allow to built and install
1811	them again.
1812	UPDATE: see 20150102 entry on texinfo's removal
1813
181420140708:
1815	The GNU readline library is now an INTERNALLIB - that is, it is
1816	statically linked into consumers (GDB and variants) in the base
1817	system, and the shared library is no longer installed.  The
1818	devel/readline port is available for third party software that
1819	requires readline.
1820
182120140702:
1822	The Itanium architecture (ia64) has been removed from the list of
1823	known architectures. This is the first step in the removal of the
1824	architecture.
1825
182620140701:
1827	Commit r268115 has added NFSv4.1 server support, merged from
1828	projects/nfsv4.1-server.  Since this includes changes to the
1829	internal interfaces between the NFS related modules, a full
1830	build of the kernel and modules will be necessary.
1831	__FreeBSD_version has been bumped.
1832
183320140629:
1834	The WITHOUT_VT_SUPPORT kernel config knob has been renamed
1835	WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
1836	which differs from the behaviour controlled by this knob.)
1837
183820140619:
1839	Maximal length of the serial number in CTL was increased from 16 to
1840	64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
1841	and ctld, need to be rebuilt to work with a new kernel.
1842
184320140606:
1844	The libatf-c and libatf-c++ major versions were downgraded to 0 and
1845	1 respectively to match the upstream numbers.  They were out of
1846	sync because, when they were originally added to FreeBSD, the
1847	upstream versions were not respected.  These libraries are private
1848	and not yet built by default, so renumbering them should be a
1849	non-issue.  However, unclean source trees will yield broken test
1850	programs once the operator executes "make delete-old-libs" after a
1851	"make installworld".
1852
1853	Additionally, the atf-sh binary was made private by moving it into
1854	/usr/libexec/.  Already-built shell test programs will keep the
1855	path to the old binary so they will break after "make delete-old"
1856	is run.
1857
1858	If you are using WITH_TESTS=yes (not the default), wipe the object
1859	tree and rebuild from scratch to prevent spurious test failures.
1860	This is only needed once: the misnumbered libraries and misplaced
1861	binaries have been added to OptionalObsoleteFiles.inc so they will
1862	be removed during a clean upgrade.
1863
186420140512:
1865	Clang and llvm have been upgraded to 3.4.1 release.
1866
186720140508:
1868	We bogusly installed src.opts.mk in /usr/share/mk. This file should
1869	be removed to avoid issues in the future (and has been added to
1870	ObsoleteFiles.inc).
1871
187220140505:
1873	/etc/src.conf now affects only builds of the FreeBSD src tree. In the
1874	past, it affected all builds that used the bsd.*.mk files. The old
1875	behavior was a bug, but people may have relied upon it. To get this
1876	behavior back, you can .include /etc/src.conf from /etc/make.conf
1877	(which is still global and isn't changed). This also changes the
1878	behavior of incremental builds inside the tree of individual
1879	directories. Set MAKESYSPATH to ".../share/mk" to do that.
1880	Although this has survived make universe and some upgrade scenarios,
1881	other upgrade scenarios may have broken. At least one form of
1882	temporary breakage was fixed with MAKESYSPATH settings for buildworld
1883	as well... In cases where MAKESYSPATH isn't working with this
1884	setting, you'll need to set it to the full path to your tree.
1885
1886	One side effect of all this cleaning up is that bsd.compiler.mk
1887	is no longer implicitly included by bsd.own.mk. If you wish to
1888	use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
1889	as well.
1890
189120140430:
1892	The lindev device has been removed since /dev/full has been made a
1893	standard device.  __FreeBSD_version has been bumped.
1894
189520140424:
1896	The knob WITHOUT_VI was added to the base system, which controls
1897	building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
1898	in order to reorder files share/termcap and didn't build ex(1) as a
1899	build tool, so building/installing with WITH_VI is highly advised for
1900	build hosts for older releases.
1901
1902	This issue has been fixed in stable/9 and stable/10 in r277022 and
1903	r276991, respectively.
1904
190520140418:
1906	The YES_HESIOD knob has been removed. It has been obsolete for
1907	a decade. Please move to using WITH_HESIOD instead or your builds
1908	will silently lack HESIOD.
1909
191020140405:
1911	The uart(4) driver has been changed with respect to its handling
1912	of the low-level console. Previously the uart(4) driver prevented
1913	any process from changing the baudrate or the CLOCAL and HUPCL
1914	control flags. By removing the restrictions, operators can make
1915	changes to the serial console port without having to reboot.
1916	However, when getty(8) is started on the serial device that is
1917	associated with the low-level console, a misconfigured terminal
1918	line in /etc/ttys will now have a real impact.
1919	Before upgrading the kernel, make sure that /etc/ttys has the
1920	serial console device configured as 3wire without baudrate to
1921	preserve the previous behaviour. E.g:
1922	    ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
1923
192420140306:
1925	Support for libwrap (TCP wrappers) in rpcbind was disabled by default
1926	to improve performance.  To re-enable it, if needed, run rpcbind
1927	with command line option -W.
1928
192920140226:
1930	Switched back to the GPL dtc compiler due to updates in the upstream
1931	dts files not being supported by the BSDL dtc compiler. You will need
1932	to rebuild your kernel toolchain to pick up the new compiler. Core dumps
1933	may result while building dtb files during a kernel build if you fail
1934	to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
1935
193620140216:
1937	Clang and llvm have been upgraded to 3.4 release.
1938
193920140216:
1940	The nve(4) driver has been removed.  Please use the nfe(4) driver
1941	for NVIDIA nForce MCP Ethernet adapters instead.
1942
194320140212:
1944	An ABI incompatibility crept into the libc++ 3.4 import in r261283.
1945	This could cause certain C++ applications using shared libraries built
1946	against the previous version of libc++ to crash.  The incompatibility
1947	has now been fixed, but any C++ applications or shared libraries built
1948	between r261283 and r261801 should be recompiled.
1949
195020140204:
1951	OpenSSH will now ignore errors caused by kernel lacking of Capsicum
1952	capability mode support.  Please note that enabling the feature in
1953	kernel is still highly recommended.
1954
195520140131:
1956	OpenSSH is now built with sandbox support, and will use sandbox as
1957	the default privilege separation method.  This requires Capsicum
1958	capability mode support in kernel.
1959
196020140128:
1961	The libelf and libdwarf libraries have been updated to newer
1962	versions from upstream. Shared library version numbers for
1963	these two libraries were bumped. Any ports or binaries
1964	requiring these two libraries should be recompiled.
1965	__FreeBSD_version is bumped to 1100006.
1966
196720140110:
1968	If a Makefile in a tests/ directory was auto-generating a Kyuafile
1969	instead of providing an explicit one, this would prevent such
1970	Makefile from providing its own Kyuafile in the future during
1971	NO_CLEAN builds.  This has been fixed in the Makefiles but manual
1972	intervention is needed to clean an objdir if you use NO_CLEAN:
1973	  # find /usr/obj -name Kyuafile | xargs rm -f
1974
197520131213:
1976	The behavior of gss_pseudo_random() for the krb5 mechanism
1977	has changed, for applications requesting a longer random string
1978	than produced by the underlying enctype's pseudo-random() function.
1979	In particular, the random string produced from a session key of
1980	enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
1981	be different at the 17th octet and later, after this change.
1982	The counter used in the PRF+ construction is now encoded as a
1983	big-endian integer in accordance with RFC 4402.
1984	__FreeBSD_version is bumped to 1100004.
1985
198620131108:
1987	The WITHOUT_ATF build knob has been removed and its functionality
1988	has been subsumed into the more generic WITHOUT_TESTS.  If you were
1989	using the former to disable the build of the ATF libraries, you
1990	should change your settings to use the latter.
1991
199220131025:
1993	The default version of mtree is nmtree which is obtained from
1994	NetBSD.  The output is generally the same, but may vary
1995	slightly.  If you found you need identical output adding
1996	"-F freebsd9" to the command line should do the trick.  For the
1997	time being, the old mtree is available as fmtree.
1998
199920131014:
2000	libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
2001	This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
2002	1.1.4_8 and verify bsdyml not linked in, before running "make
2003	delete-old-libs":
2004	  # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
2005	  or
2006	  # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
2007
200820131010:
2009	The stable/10 branch has been created in subversion from head
2010	revision r256279.
2011
2012COMMON ITEMS:
2013
2014	General Notes
2015	-------------
2016	Sometimes, obscure build problems are the result of environment
2017	poisoning.  This can happen because the make utility reads its
2018	environment when searching for values for global variables.  To run
2019	your build attempts in an "environmental clean room", prefix all make
2020	commands with 'env -i '.  See the env(1) manual page for more details.
2021	Occasionally a build failure will occur with "make -j" due to a race
2022	condition.  If this happens try building again without -j, and please
2023	report a bug if it happens consistently.
2024
2025	When upgrading from one major version to another it is generally best to
2026	upgrade to the latest code in the currently installed branch first, then
2027	do an upgrade to the new branch. This is the best-tested upgrade path,
2028	and has the highest probability of being successful.  Please try this
2029	approach if you encounter problems with a major version upgrade.  Since
2030	the stable 4.x branch point, one has generally been able to upgrade from
2031	anywhere in the most recent stable branch to head / current (or even the
2032	last couple of stable branches). See the top of this file when there's
2033	an exception.
2034
2035	The update process will emit an error on an attempt to perform a build
2036	or install from a FreeBSD version below the earliest supported version.
2037	When updating from an older version the update should be performed one
2038	major release at a time, including running `make delete-old` at each
2039	step.
2040
2041	When upgrading a live system, having a root shell around before
2042	installing anything can help undo problems. Not having a root shell
2043	around can lead to problems if pam has changed too much from your
2044	starting point to allow continued authentication after the upgrade.
2045
2046	This file should be read as a log of events. When a later event changes
2047	information of a prior event, the prior event should not be deleted.
2048	Instead, a pointer to the entry with the new information should be
2049	placed in the old entry. Readers of this file should also sanity check
2050	older entries before relying on them blindly. Authors of new entries
2051	should write them with this in mind.
2052
2053	ZFS notes
2054	---------
2055	When upgrading the boot ZFS pool to a new version, always follow
2056	these two steps:
2057
2058	1.) recompile and reinstall the ZFS boot loader and boot block
2059	(this is part of "make buildworld" and "make installworld")
2060
2061	2.) update the ZFS boot block on your boot drive
2062
2063	The following example updates the ZFS boot block on the first
2064	partition (freebsd-boot) of a GPT partitioned drive ada0:
2065	"gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
2066
2067	Non-boot pools do not need these updates.
2068
2069	To build a kernel
2070	-----------------
2071	If you are updating from a prior version of FreeBSD (even one just
2072	a few days old), you should follow this procedure.  It is the most
2073	failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
2074
2075	make kernel-toolchain
2076	make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
2077	make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
2078
2079	To test a kernel once
2080	---------------------
2081	If you just want to boot a kernel once (because you are not sure
2082	if it works, or if you want to boot a known bad kernel to provide
2083	debugging information) run
2084	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
2085	nextboot -k testkernel
2086
2087	To rebuild everything and install it on the current system.
2088	-----------------------------------------------------------
2089	# Note: sometimes if you are running current you gotta do more than
2090	# is listed here if you are upgrading from a really old current.
2091
2092	<make sure you have good level 0 dumps>
2093	make buildworld
2094	make buildkernel KERNCONF=YOUR_KERNEL_HERE
2095	make installkernel KERNCONF=YOUR_KERNEL_HERE
2096							[1]
2097	<reboot in single user>				[3]
2098	mergemaster -Fp					[5]
2099	make installworld
2100	mergemaster -Fi					[4]
2101	make delete-old					[6]
2102	<reboot>
2103
2104	To cross-install current onto a separate partition
2105	--------------------------------------------------
2106	# In this approach we use a separate partition to hold
2107	# current's root, 'usr', and 'var' directories.   A partition
2108	# holding "/", "/usr" and "/var" should be about 2GB in
2109	# size.
2110
2111	<make sure you have good level 0 dumps>
2112	<boot into -stable>
2113	make buildworld
2114	make buildkernel KERNCONF=YOUR_KERNEL_HERE
2115	<maybe newfs current's root partition>
2116	<mount current's root partition on directory ${CURRENT_ROOT}>
2117	make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
2118	make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
2119	make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
2120	cp /etc/fstab ${CURRENT_ROOT}/etc/fstab 		   # if newfs'd
2121	<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
2122	<reboot into current>
2123	<do a "native" rebuild/install as described in the previous section>
2124	<maybe install compatibility libraries from ports/misc/compat*>
2125	<reboot>
2126
2127
2128	To upgrade in-place from stable to current
2129	----------------------------------------------
2130	<make sure you have good level 0 dumps>
2131	make buildworld					[9]
2132	make buildkernel KERNCONF=YOUR_KERNEL_HERE	[8]
2133	make installkernel KERNCONF=YOUR_KERNEL_HERE
2134							[1]
2135	<reboot in single user>				[3]
2136	mergemaster -Fp					[5]
2137	make installworld
2138	mergemaster -Fi					[4]
2139	make delete-old					[6]
2140	<reboot>
2141
2142	Make sure that you've read the UPDATING file to understand the
2143	tweaks to various things you need.  At this point in the life
2144	cycle of current, things change often and you are on your own
2145	to cope.  The defaults can also change, so please read ALL of
2146	the UPDATING entries.
2147
2148	Also, if you are tracking -current, you must be subscribed to
2149	freebsd-current@freebsd.org.  Make sure that before you update
2150	your sources that you have read and understood all the recent
2151	messages there.  If in doubt, please track -stable which has
2152	much fewer pitfalls.
2153
2154	[1] If you have third party modules, such as vmware, you
2155	should disable them at this point so they don't crash your
2156	system on reboot.
2157
2158	[3] From the bootblocks, boot -s, and then do
2159		fsck -p
2160		mount -u /
2161		mount -a
2162		sh /etc/rc.d/zfs start	# mount zfs filesystem, if needed
2163		cd src			# full path to source
2164		adjkerntz -i		# if CMOS is wall time
2165	Also, when doing a major release upgrade, it is required that
2166	you boot into single user mode to do the installworld.
2167
2168	[4] Note: This step is non-optional.  Failure to do this step
2169	can result in a significant reduction in the functionality of the
2170	system.  Attempting to do it by hand is not recommended and those
2171	that pursue this avenue should read this file carefully, as well
2172	as the archives of freebsd-current and freebsd-hackers mailing lists
2173	for potential gotchas.  The -U option is also useful to consider.
2174	See mergemaster(8) for more information.
2175
2176	[5] Usually this step is a no-op.  However, from time to time
2177	you may need to do this if you get unknown user in the following
2178	step.  It never hurts to do it all the time.  You may need to
2179	install a new mergemaster (cd src/usr.sbin/mergemaster && make
2180	install) after the buildworld before this step if you last updated
2181	from current before 20130425 or from -stable before 20130430.
2182
2183	[6] This only deletes old files and directories. Old libraries
2184	can be deleted by "make delete-old-libs", but you have to make
2185	sure that no program is using those libraries anymore.
2186
2187	[8] The new kernel must be able to run existing binaries used by an
2188	installworld.  When upgrading across major versions, the new kernel's
2189	configuration must include the correct COMPAT_FREEBSD<n> option for
2190	existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries).  Failure
2191	to do so may leave you with a system that is hard to boot to recover. A
2192	GENERIC kernel will include suitable compatibility options to run
2193	binaries from older branches.  Note that the ability to run binaries
2194	from unsupported branches is not guaranteed.
2195
2196	Make sure that you merge any new devices from GENERIC since the
2197	last time you updated your kernel config file. Options also
2198	change over time, so you may need to adjust your custom kernels
2199	for these as well.
2200
2201	[9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the
2202	"?=" instead of the "=" assignment operator, so that buildworld can
2203	override the CPUTYPE if it needs to.
2204
2205	MAKEOBJDIRPREFIX must be defined in an environment variable, and
2206	not on the command line, or in /etc/make.conf.  buildworld will
2207	warn if it is improperly defined.
2208FORMAT:
2209
2210This file contains a list, in reverse chronological order, of major
2211breakages in tracking -current.  It is not guaranteed to be a complete
2212list of such breakages, and only contains entries since September 23, 2011.
2213If you need to see UPDATING entries from before that date, you will need
2214to fetch an UPDATING file from an older FreeBSD release.
2215
2216Copyright information:
2217
2218Copyright 1998-2009 M. Warner Losh <imp@FreeBSD.org>
2219
2220Redistribution, publication, translation and use, with or without
2221modification, in full or in part, in any form or format of this
2222document are permitted without further permission from the author.
2223
2224THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
2225IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
2226WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2227DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
2228INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2229(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2230SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2231HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2232STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
2233IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2234POSSIBILITY OF SUCH DAMAGE.
2235
2236Contact Warner Losh if you have any questions about your use of
2237this document.
2238
2239$FreeBSD$
2240