3 * Version 5.2.0 released xx April 2018
5 ** Release 5.2 is not yet out. This page is a work in progress. Please do not link to it until the actual release. **
7 DragonFly version 5.2 brings etc etc etc
9 The details of all commits between the 4.8 and 5.0 branches are available in the associated commit messages for [5.2.0rc]() and [5.2.0]().
17 * Implement state based "redirect", i.e. without using libalias.
19 ### Improved graphics support
21 * The drm/i915 kernel driver has been updated to support Intel Coffeelake GPUs
23 * Add 24-bit pixel format support to the EFI frame buffer code.
25 * Significantly improve fbio support for the "scfb" XOrg driver. This allows EFI frame buffers to be used by X in situations where we do not otherwise support the GPU.
27 ### Other user-affecting changes
37 If you have an existing 5.0.x system and are running a generic kernel, the normal upgrade process, described below, will work.
39 * Note that DSA OpenSSH keys were deprecated in the 4.6 to 4.8 release. If you are upgrading from a release older than 4.8 and use DSA OpenSSH keys, please update your private/public key pair or risk locking yourself out.
41 Change your local /usr/src to 5.2:
45 git branch DragonFly_RELEASE_5_2 origin/DragonFly_RELEASE_5_2
46 git checkout DragonFly_RELEASE_5_2
49 And then rebuild: (in /usr/src )
57 Don't forget to upgrade your existing packages. 5.2 packages have already been built and are immediately available.
61 ## All changes since DragonFly 5.0
65 * The kernel-based if_ppp nic has been replaced with user ppp, i.e. ppp(8) and tun(4). if_ppp has not been part of the base kernel config for a while. It has now been removed.
67 * faith(4), also not part of the base kernel config for a while, has also been removed. It has been determined that this IPV4<->IPV6 shim is no longer needed.
69 * tmpfs performance significantly improved when a large number of files are present.
71 * Fix a rare lockmgr() state transition, improving stability.
73 * Improve tsleep()/wakeup() queue collisions, significantly reducing spurious wakeup-related IPIs and improving performance.
75 * Fix GCC reordering issues with td_critcount that could lead to misordering and instability.
77 * Refuse to swapoff under certain conditions (presence of swapped tmpfs or vn pages), instead of panicing.
79 * cache-line separation for many things, reducing cache line collisions and improving performance on many-core systems.
81 * Essentially rewrite lockmgr(), significantly increasing shared lock performance and improving most other code paths.
83 * Refactor the buffer cache subsystem, removing B_MALLOC support entirely. Also remove repurposebuf() (This was a shim prior to KVABIO support that is no longer needed). Remove geteblk().
85 * Add KVABIO support to the buffer cache subsystem. This allows buffer cache buffers to avoid smp_invltlb() calls on its buffer mappings when the related filesystems and storage devices in the chain also support KVABIO. In particular, HAMMER2, the disk layer, and the NVME controller now support KVABIO. tmpfs also supports KVABIO.
87 * Remove vm_hold_load_pages() and vm_hold_free_pages(). The only remaining use case was in CAM and we can change CAM to use getpbuf_mem() instead.
89 * Refactor SMP collisions statistics somewhat.
91 * Improve mountlist_scan() performance by using a shared token whenever possible. Also fix a rare race, improving stability during periods of heavy mounting and unmounting (such as synth's use of tmpfs mounts).
93 * Refactor the pipe() code to significantly reduce IPIs and improve performance on many-cpu systems. Performance is improved 75-100% (almost double in some cases).
95 * Increase the ncmount_cache array, improving the hit ratio to almost 100%. We were hitting the slow path too often in synth runs. The slow path is really horrible.
97 * Simplify umtx_sleep() and umtx_wakeup() support to improve pthreads performance and reduce bottlenecks. Also rip-out vm_page_action() and vm_page_event() which this API used. The vm_page_action/event code was pretty unfriendly to SMP. Use a shared spinlock in places where it was exclusive before, significantly improving concurrent threaded umtx operations (pthreads again).
99 * Increase the pmap placemarks hash from 16 to 64 entries. This improves concurrent fault performance a bit for heavily threaded programs.
101 * Refactor uidinfo. Again improves SMP performance on many-cpus systems by removing a memory bottleneck. Hits can now function locklessly.
103 * Partition large anonymous mmap()s, improving concurrent VM fault operation for threaded programs. Note that the pmap itself is still a bottleneck.
105 * Add atomic_fcmpset_*() (suggested by mjg_), and use it all over the place to reduce unnecessary cache line ping-ponging during contended locking operations.
107 * Clean up ucred and plimit cache line locality, reducing unnecessary cache-line ping-ponging and improving performance.
109 * Refactor vm_page_busy() to add support for acquiring a soft-busy count without requiring ah ard-busy. This allows us to 'lock' a vm_page in a shared manner via the soft-busy for situations where we only intend to read from it, aka sendfile() and vop_helper_read_shortcut(). Improves read() performance through filesystems.
111 * Add a D_QUICK device flag which allows certain static devices such as /dev/urandom, /dev/zero, and /dev/null to handle open() and close() in a more SMP-friendly manner.
113 * Improve SMP performance for devfs VOPs. Ipmroves getattr(), read(), and readlink(). Mainly reduces contention during concurrent exec()s which almost always do the same bit of manipulation on specific devices, such as obtaining a random seed.
115 * Improve pmap hinting and performance.
117 * Refactor sysctl locking, significantly reducing SMP contention in heavily loaded environments. Also allow certain sysctl()s to execute completely unlocked.
119 * Fix ACPI confusion that could arise due to ACPI_SEMAPHORES_MAX_PENDING being too small. Redefine to a very large number.
121 * Adjust the proc structure a little so getppid() can run lockless.
123 * Implement exclusive priority for tokens under certain circumstances, improving performance when an exclusive token is needed on a heavily shared token.
125 * Add a second pageout daemon which only operates on anonymous pages. This reduces low memory deadlocks that can arise due to the pageout daemon getting stuck on a filesystem-backed vm_page.
127 * Rewrite sendfile() to fix panics and corruption and to improve performance. sendfile() now uses a UIO_NOCOPY/VMIO based VOP_READ() in the blind and loops to obtain file data instead of messing with individual pages. We retain the synchronous VOP_READ() operation we had before because there isn't much point asynchronizing it for a web server which is already very heavily threaded.
129 * Fix a cluster_awrite() race, improving stability.
131 * Fix bugs in the namecache cleaning code and refactor the code. This fixes a cpu live-lock situation that can arise when the namecache is dealing with a large number of hardlinked files.
133 * Fix boot and kernel issues when running with greater than 512GB of physical ram. There were numerous scaling issues, including a bad DMAP initialization loop. Tested to 1TB of ram. DragonFly can now theoretically support up to 32TB of physical ram.
135 * Significantly increase the amount of KVA (Kernel Virtual Memory) appropriated in order to properly scale to larger amounts of physical ram.
137 * Improve magazine recycling performance in objcache by increasing MAGAZINE_CAPACITY_MAX.
139 * Fix an overflow in the vm.max_proc_mmap() calculation which could cause unexpected mmap() failures.
141 * Remove tons of debugging statistics that are no longer needed. This also cleans up a ton of unnecessary cache-line ping-ponging that was occurring in the VFS subsystem.
143 * Fix bugs in vm_fault and vm_map related to concurrent faults in heavily threaded programs. Also fix a bug in vm_fault_page().
149 * Limit the number of accepted sockets that kevent() reports. This improves the performance for heavily optimized userland networking workloads. Specifically, nginx.
151 * Remove the power-of-2 cpu threads limitation for netisrs. Netisrs now run on all cpu threads, improving load balancing and performance.
153 * In if_vtnet, disable rx csum offload due to unuspported ipv6 rx csum offloading.
155 * In if_vtnet, clean up the IFCAP flags.
157 * Make non-prefix and directly reachable inet6 routes work properly.
159 * Properly zero out syncache_percpu, fixing a rare panic.
165 * Bring in vmx(4) (VMWare virtual network driver, aka vmxnet3)
167 * nvme driver now supports KVABIO for significantly higher performance and concurrency on many-core systems.
169 * Fix the capacity calculation in virtio_blk
171 * Upgrade arcmsr(4) to Areca's Revision 1.40.00.00, which adds support for ARC1203, ARC1216, ARC1226, and ARC1884.
173 * Fix mtime updates for deferred writes from shared R+W mmap()s. This bug could cause make and other programs to get confused, often triggered by ld.gold's use of shared R+W mmap().
179 * Removed many 'r' commands and daemons. rcp, rlogin, rlogind, rsh, and rshd have been removed. People that still need them can get them from the net/bsdrcmds port.
181 * Remove mailaddr(7).
183 * Kernel configuration cleanup, numerous options that have been NOPs for a long time have been removed outright.
185 * NOTE! Due to base compiler updates, upgrading to 5.1 and later versions now require at least a 4.4 (or later) system.
187 * Bring s_ceill() into libc from OpenBSD.
189 * Fix a few issues in libthread_xu that we believe were confusing certain heavily-threaded user applications, improving the stability of those applications.
191 * Refactor rtld locks as well as add an atfork() facility. Refactor many libthread_xu modules (pthreads). All this work improves the stability for fork/exec operations in heavily threaded environments (particularly chrome threads).
193 * Numerous pthreads fixes for chrome, thunderbird, and other heavily threaded programs. Also use the new atfork() facility in our malloc implementation to fix deadlocks which could sometimes arise when heavily threaded programs fork().
195 * Fix locale support for cal(1).
197 * Fix symbol conflicts between libcrypt and LIBRECRYPTO (buildworld issues).
199 * Add static PAM modules support.
201 ### Various tools have been upgraded in the base system:
203 * cpdup has a few new features to make .cpignore files more useful.
205 * cpdup is now able to rmdir chflagged directories (it already handles this properly for regular files).
207 * cpdup now ignores the UF_ARCHIVE file flag when deciding whether to copy a file.
209 * ls command has been enhanced with new options -S and -D, see manual page.
211 * Enhance nologin to log nologin attempts to syslog.
213 * Fix set-faults on crypt(3) failures.
215 * OpenSSH upgraded to 7.6p1.
217 * Update the pciconf(8) database to the Oct 12 2017 snapshot from pciids.sourceforge.net.
219 * Fix vmstat formatting to deal with large numbers and not run numbers into each other any more.
221 * Zoneinfo synchronized to tzdata2017c.
223 * Remove inherited helpers left over from the initial FreeBSD fork 10+ years ago. Also remove helpers for upgrading directly from pre-4.4, we no longer support upgrading directly from pre-4.4 (its basically impossible due to compiler differences).
225 * Really support a static toolchain.
227 * Jailbreak games from Dungeon Master. Games are no longer group-shared, improving security. Only allow users in the games group to write to the /var/games directory.
231 * Patch and cleanup a few games. battlestar(6), hack(6), rogue(6).
233 * Move-out non-games from /usr/games. Move strfile(8) and unstr(8) to /usr/bin.
235 * Move banner(6) into games/ where it belongs. Bring in OpenBSD's banner(1). Bring in OpenBSD's boggle(6), bring in OpenBSD's tetris(6).
237 * Add hostprog variant of tic and link against the wide version of ncurses.
239 * Update strfile() to big-endian and produce architecture-independent .dat files.
241 * Fix the ownership of several directories in /usr/share.
243 * Add a few more fortunes to fortune(6).
251 * Many, many bug fixes, improving stability.
253 * Numerous performance fixes, including KVABIO support which improves performance on many-core systems.
255 * Add support for hammer2 cleaning in the periodic cron, enabled by default.
257 * Work around a bug in LZ4_compress_limitedOutput(), the code could sometimes overrun the supplied buffer.
259 * Add hammer2 utilities to initrd for hammer2 crypto bootstrapping and rescue.
266 * We can now build over 29000 packages.
268 * Note that firefox does not currently build due to the rust language being out of date. We are working on that and also working on getting a more recent version of chrome into the tree.
272 * Note that DragonFly is a 64-bit-only operating system as of 4.6, and will not run on 32-bit hardware.