Matt 3
[ikiwiki.git] / release58 / index.mdwn
1 # DragonFly BSD 5.8
2
3 * Version 5.8.0 released xx February 2020
4
5
6 DragonFly version 5.8 brings ....
7
8 The details of all commits between the 5.6 and 5.8 branches are available in the associated commit messages for [5.8.0rc1](http://lists.dragonflybsd.org/pipermail/commits/2020-February/720529.html) and [5.8.0]().
9  
10 ## Big-ticket items
11
12 * 'dsynth' written and added to base, making it more convenient for users to build their own binary repos for ports.
13
14 * Many ports these days seem to assume a greater degree of signal safety for libc function, particularly for malloc().  We have implemented a low-overhead signal masking feature that now allows us to make malloc*() and other related functions signal-safe.
15
16 * A ton of bug fixes, stability work, and usability work has gone into this release.  Many niggling little annoyances, such as chrome stuttering when system memory is low, have been fixed.
17
18 * DRM (GPU) support continues to improve slowly but steadily.
19
20 ## Details
21
22 ### Checksums
23
24     MD5 (dfly-x86_64-5.8.0_REL.img) = 
25     MD5 (dfly-x86_64-5.8.0_REL.iso) = 
26     MD5 (dfly-x86_64-5.8.0_REL.img.bz2) = 
27     MD5 (dfly-x86_64-5.8.0_REL.iso.bz2) = 
28
29 ### Upgrading
30
31 If you have an existing 5.x system and are running a generic kernel, the normal upgrade process, described below, will work.  
32
33 Change your local `/usr/src` to 5.8:
34
35     cd /usr/src
36     git fetch origin
37     git branch DragonFly_RELEASE_5_8 origin/DragonFly_RELEASE_5_8
38     git checkout DragonFly_RELEASE_5_8
39     git pull
40
41 And then rebuild: (in `/usr/src`)
42
43     make buildworld
44     make buildkernel
45     make installkernel
46     make installworld
47     make upgrade
48
49     (reboot your system)
50
51     make initrd 
52
53 `make initrd` is optional for systems with unencrypted disks, and has been possible for several releases; it's mentioned here for completeness. Look at the [initrd(7)](https://leaf.dragonflybsd.org/cgi/web-man?command=initrd&section=ANY) man page for details on what it does.
54
55 Don't forget to upgrade your existing packages.  5.8 packages have already been built and are immediately available.
56
57     pkg update
58     pkg upgrade
59
60 ## All other changes since prior release
61
62 ### Security Issues
63
64 * Fix two minor kernel stack disclosures and a few minor memory leaks.
65
66 * Fix a buffer overflow in libfetch (CVS-2020-7450)
67
68 * Fix CVE-2019-18218.
69
70 * Fix two environment variable vulnerabilities in the telnet client.
71
72 ### Kernel
73
74 * Scaling adjustments to improve performance on high-core-count machines.  VM page lookup shortcuts, reduced contention when opening special devices like /dev/lpmap, reduced contention for open(... O_RDWR) calls, recoded namecache (mp, ncp) mount point lookup cache.
75
76 * Significantly reduce SMP contention in low-memory situation.
77
78 * Significantly improve page selection in the pageout scan.  SMP work over the last few years marginalized the page selection algorithm, causing it to often select pages which were actually active.  These changes significantly reduce the selection of such pages in favor of inactive pages.  The result is the elimination of stuttering in applications like Chrome when system memory is tight.
79
80 * Do not shortcut VM faults of INACTIVE pages, require the long-path to ensure that the pages are moved to the ACTIVE queue first.  This prevents premature pageout of heavily cached VM pages such as pages from highly-shared libraries.
81
82 * Improve pageout daemon pipe-lining by fixing some of the hysteresis code.  Also improve the early-termination checks for the pageout daemon to stop paging more quickly when a large amount of memory is suddenly freed up.
83
84 * Fixed a rare wait*() deadlock.
85
86 * The vm.fault_quick sysctl now supports a burst count, but the default is still 1.  We do not expect significant gains in performance until the APIs can be refactored all the way through to the low-level pmap code.
87
88 * Offset the stathz timer by 50% of the hz timer and change default frequency to (hz + 1).  This is intended to reduce sampling errors that were causing phantom 'interrupt' time accumulation in system statistics.
89
90 * Refactor the random number generator in the kernel and also as supplied to userland to use per-cpu state.  This gets rid of a significant source of SMP contention under heavy loads.  Adjust the RDRAND driver to collect entropy on all CPUs, as well as to chain some of the entropy between CPUs.  This ensures that no single CPU can accidentally become deficient. 
91
92 * Reduce excessive rdrand harvesting.  The rdrand harvesting rate was too high and causing high-core-count Zen CPUs to burn 2-3% of the system cpu at idle.  The harvest size has been reduced to compensate.  In addition, some of the entropy is chained between CPUs to ensure that entropy collection on one cpu is not only beneficial to that cpu.
93
94 * Fix a USB crash on quick plug/detach/plug/detach sequences.
95
96 * Add system call support for realpath(3), allowing the kernel to build the path for us instead of having to cycle tons of *stat() calls.
97
98 * Add system call support for getrandom(2).  We already had a sysctl-based mechanism and a device mechanism.
99
100 * Fix a bug in the (rare) lockmgr cancel path.
101
102 * Fix 'indefinite wait buffer' live-locks related to encrypted disks.  The encrypted I/O path had a low-memory deadlock that could prevent paging to encrypted-swap from happening, resulting in a locked up system.
103
104 * Reduce mpipe overhead, improving (primarily) encrypted I/O performance a bit.
105
106 * Fix a panic in the control messages processing for IPV6.
107
108 * Enable keyboard polling in shutdown -h to try to keep the keyboard operational at the 'press any key to reboot' message.
109
110 * Fix a dangling ref on filesystem fifo vnodes.  This could prevent umount from succeeding indefinitely.
111
112 * Merge a m_pulldown() bug fix (discussed with multiple BSDs).  See c24e3890e671.
113
114 * Enable busmaster operation on bridges (the BIOS might not).
115
116 * Make sure the %fs selector is properly loaded in the AP bootstrap.  Otherwise the selector may be invalid on certain Zen 2 CPUs.
117
118 * Change the TCP keepalive options from milliseconds to seconds, making the units the same as linux, in order to improve ports compatibility.
119
120 * Fix a rare pmap placemarker timing race that could cause a process to get stuck in 'pvplw'.
121
122 * Implement SMAP/SMEP support.
123
124 * Fix vm.swap_size reporting and add a new sysctl, vm.swap_free.
125
126 * Fix a minor kernel memory leak related to the rt_msg_buffer() API.
127
128 * Check for deferred interrupts in more crit_exit*() paths, undoing some optimizations made in prior years.  The checks are necessary to avoid non-deterministic interrupt response times in certain cases.
129
130 * Jails are now allowed to mount nullfs and tmpfs filesystems.
131
132 * Get rid of udev_t.
133
134 * Add sysctl support for CTLTYPE_BIT32 and CTLTYPE_BIT64, allowing sysctl to directly control the same flags field with separate sysctl elements.
135
136 * Add /dev/lpmap, a per-thread shared user/kernel page.  This page allows userland to implement temporary signal blocking on a per-thread basis without having to make any system calls.
137
138 * Add support for pthread_get_name_np() via a new system call, lwp_getname().  Reimplement lwp_setname() via the new /dev/lpmap feature (i.e. make it work without needing a system call).  Also, setproctitle() now uses upmap->proc_title[].
139
140 * Catch infinite parser recursions in broken ACPI.
141
142 * Add support for SIOCSIFINFO_IN6.
143
144 ### Filesystems
145
146 * NULLFS - Improve mount/umount performance slightly.
147
148 * TMPFS - Improve by not reserving an entire 16KB buffer cache buffer for files <= 8KB in size.  Small files now eat 4KB, 8KB, or 12KB of physical memory before returning to multiples of 16KB.
149
150 * TMPFS - Reduce low-memory thrashing.  Normally TMPFS cycles pages through the VM page cache only and avoids flushing them to backing store (swap).  In low-memory conditions, TMPFS now cycles dirtied pages through the buffer cache and bypasses the inactive queue upon completion to avoid interfering with memory pressure caused by processes.
151
152 * TMPFS - Enable write-clustering, improving paging performance when under memory pressure.  Prior to this fix, physical I/O was limited to 16KB chunks.
153
154 * TMPFS - Make tmpfs_move_pages() more robust to close potential race conditions.
155
156 * HAMMER2 - Fix inode & chain limits in order to avoid kmalloc pool assertions on low-memory machines.
157
158 * HAMMER2 - Significantly improve the flush pipeline and dirty inode count hysteresis.  This fixes a long-standing issue where heavy filesystem activity was not making use of available I/O bandwidth due to a number of tsleep() stalls in the flusher loop.  This also improves frontend-operation vs backend-flush concurrency.
159
160 * HAMMER2 - Fix a bug where a small file less than or equal to 512 bytes that is extended above 512 bytes can sometimes lose data in the first 512 bytes (replaced with 0x00 bytes).
161
162 * HAMMER2 - Fix an indefinite stall that could occur when I/O errors are encountered.
163
164 * MSDOSFS - Many fixes and improvements, some taken from FreeBSD.
165
166 * DEVFS - Fixed a missing lock that could result in a panic during heavy duplicate mount/umount activity.
167
168 * All filesystems now default to microseconds precision instead of seconds precision.  The use of nanoseconds is problematic due to utimes()'s archaic API.
169
170 * NFS - Fix a rare NFS deadlock related to mmap()'s I/O.
171
172 ### Networking
173
174 * Add support for IPV4 /31 prefixes (RFC 3021).
175
176 * Fix bug in IF_TAP's SIOCSIFMTU.
177
178 * PF - Fix a number of edge cases, but these fixes have not dealt with all reported PF issues.
179
180 ### Graphics
181
182 * Update generic, ttm, and radeon code to Linux 4.9.  i915 remains on linux 4.7.10 though with some linux 4.19 changes.
183
184 * Fix some DMAP issues with the way linux expects pmap_change_attr() to work.
185
186 ### Driver updates
187
188 * SOUND/HDA - use driver-specific taskqueue instead of per-cpu taskqueue.
189
190 * PSM - Fix memory corruption and panic, add Elantech IC type 15 support (thinkpad L480 laptops).
191
192 * AHCI - Add a quirk for the MCP73 AHCI controller.
193
194 * AHCI - Add a TPS balancing mode for storage devices, enabled by default.  This feature brings write tps down to match read tps when both are pending.  Normally both read and write I/Os get a few private tags, but because write I/O is heavily buffered by the device even a single tag can destroy read performance.
195
196 * AHCI - Enforce a 10-second poll of the chipset when idle to try to catch any potential lost interrupts.  This is an attempt to work around a 'lost' timeout issue that we sometimes see.
197
198 * u4b/uaudio - Fix NULL pointer indirection panic.
199
200 * IWM - Full sync from FreeBSD, adding iwm-9000 and iwm-9260 support.
201
202 * SIO - Refactor some of the code.
203
204 * AMDSBWD and INTPM - Updated for AMD watchdog, power management on newer chips.
205
206 ### Userland
207
208 * Binutils234 added, and 225 removed.  2.27 is still the default for now.
209
210 * pctrack (%rip sampler) - Improved symbol table translation.
211
212 * Sync math.h, sincos(), and other math support from OpenBSD.
213
214 * Synt <sys/ttydefaults.h> from FreeBSD to improve ports compatibility.
215
216 * Synchronize improvements made to fsck_msdosfs from FreeBSD.
217
218 * Check if the context is invalid in setcontext() and swapcontext() to throw errors earlier in situations where too-small a stack size has been specified.
219
220 * fish - bug fixes.
221
222 * Fix 'ps' and 'fstat' when used on kernel cores.
223
224 * vmstat now pulls 'ncpus' from the kernel core image, when used with a kernel core.  Also make the verbose (-v) option work with (-m), dumping all memory pools whether they are empty or not.
225
226 * Adopt a more linux-friendly basename() and dirname() to improve ports compatibility.
227
228 * Fix bug in fparseln() (taken from NetBSD).
229
230 * libc/getaddrinfo() - Accept numeric servname for AF_INET / AF_INET6.  Take from FreeBSD.
231
232 * Update zoneinfo to tzdata2019c.
233
234 * Fix an issue when rotating /var/log/wtmpx.
235
236 * iostat - fix column count bug.
237
238 * libdevstat - Fix a bug in DS_SELECT_REMOVE.
239
240 * libc - Add sigblockall() and sigunblockall() (DragonFly native API), a fast way to mask signals for a short period of time without having to make any system calls.
241
242 * libc - Make signal safe (primarily for malloc() and friends).  Numerous ports now assume more expansive signal safety for various libc functions.
243
244 * libc - Make strtok() thread-safe.
245
246 * libc - Add TABDLY, TAB0, and TAB3 to improve dports support.
247
248 * Remove mrouted and related utilities from the tree.  Newer, better versions can be found in dports and ours was getting crufy.
249
250 * Import dhcpcd-8.1.3.
251
252 * libkvm - Fix mask generation when parsing minidumps.  This fixes many of the corrupted dump issues reported.
253
254 * leave - Allow up to 99 in the minutes field in + mode.  Just like microwaves do.
255
256 * Phantasia - Fix monsters file permissions.
257
258 * du - Add an option (-t) to return results based on the file size instead of st_blkcnt.
259
260 * libpthreads - Fix numerous issues.
261
262 * Calendar - Multiple improvements, mostly taken from NetBSD.
263
264 ### Boot, Image
265
266 * rcorder-visualize.sh imported from FreeBSD
267
268 * Sync ACPI with Intel's version 20200214
269
270 * Unbreak the EFI build when WORLD_LDVER is overridden.
271
272 * The installer now chooses a more sane default for the /build partition.
273
274 * EFI - Sync our TianoCore EDK II headers to edk2-stable201911.
275
276 * Refactor malloc_type in the kernel, which caused an excessive amount of static data in the image.  This reduces the image size by 6MB.
277
278 * Warn when duplicate physical address ranges for free memory are passed in from the BIOS, instead of crashing.
279
280 ### Various tools have been upgraded in the base system:
281
282 * The build system is slowly being adapted to allow bootstrap utilities and tools to be compiled on a wide range of operating systems as part of a project to supply a 'build.sh' script to be able to build DragonFlyBSD on other OSs.  This work is not yet complete.
283
284 * The build system now has a 'build-all' and 'install-all' target to conveniently do a full world + kernel build and install in one or two steps as desired.
285
286 * Multiple cleanups to kern.pre.mk and kern.post.mk.
287
288 * No longer try to generate embedded newlines in strings, instead use POSIX string concatenation.
289
290 * The nrelease build now supports 'binpkgs' to allow the use of binary packages, and has received many other fixes and improvements.
291
292 ### Compiler status
293
294
295
296 ### Package updates
297
298 * A full set of new binary packages has been built for 5.8, available through the pkg tool.