(no commit message)
[ikiwiki.git] / release56 / index.mdwn
1 # DragonFly BSD 5.6
2
3 * Version 5.6.0 released xx June 2019
4
5 DragonFly version 5.6 brings etc etc etc.  This page is not finished.  *** Do not link to this page before release, please. ***
6
7 The details of all commits between the 5.4 and 5.6 branches are available in the associated commit messages for [5.6.0rc1](http://lists.dragonflybsd.org/pipermail/commits/2019-June/718996.html) and [5.6.0]().
8  
9 ## Big-ticket items
10
11 ### Improved VM.
12
13 * Reduce stalls in the kernel vm_page_alloc*() code (vm_page_list_find*()).
14 * Improve page allocation algorithm to avoid re-iterating the same queues as the search is widened.
15 * Add a vm_page_hash*() API that allows the kernel to do heuristical lockless lookups of VM pages.
16 * Change vm_hold() and vm_unhold() semantics to not require any spin-locks.
17 * Change vm_page_wakeup() to not require any spin-locks.
18 * Change wiring vm_page's no longer manipulates the queue the page is on, saving a lot of overhead.  Instead, the page will be removed from its queue only if the pageout demon encounters it.  This allows pages to enter and leave the buffer cache quickly.
19 * Refactor the handling of fictitious pages.
20 * Remove m->md.pv_list entirely.  VM pages in mappings no longer allocate pv_entry's, saving an enormous amount of memory when multiple processes utilize large shared memory maps (e.g. postgres database cache).
21 * Refactor vm_object shadowing, disconnecting the backing linkages from the vm_object itself and instead organizing the linkages in a new structure called vm_map_backing which hangs off the vm_map_entry.
22 * pmap operations now iterate vm_map_backing structures (rather than spin-locked page lists based on the vm_page and pv_entry's), and will test/match operations against the PTE found in the pmap at the requisite location.  This doubles VM fault performance on shared pages and reduces the locking overhead for fault and pmap operations.
23
24
25 ### DRM.
26
27 * Major udpates to the radeon and ttm (amd support code).  We have not quite gotten the amd support up to the more modern cards or ryzen APUs yet, however.
28 * Add DRM_IOCTL_GET_PCIINFO to improve mesa/libdrm support.
29 * Improve UEFI framebuffer support.
30 * Fix excessive wired memory build-ups.
31 * Fix Linux/DragonFly PAGE_MASK confusion in the DRM code.
32 * Fix idr_*() API bugs.
33
34 ### HAMMER2.
35
36 * The filesystem sync code has been rewritten to significantly improve performance.
37 * Add simple dependency tracking to prevent directory/file splits during create/rename/remove operations, for better consistency after a crash.
38 * Refactor the snapshot code to reduce flush latency and to ensure a consistent snapshot.
39 * Attempt to pipeline the flush code against the frontend, improving flush vs frontend write concurrency.
40 * Improve umount operation.
41 * Numerous bugs fixed that could lead to meta-data corruption.
42
43 ## Details
44
45 ### Checksums
46
47     MD5 (dfly-x86_64-5.6.0_REL.img) = 
48     MD5 (dfly-x86_64-5.6.0_REL.iso) = 
49     MD5 (dfly-x86_64-5.6.0_REL.img.bz2) = 
50     MD5 (dfly-x86_64-5.6.0_REL.iso.bz2) = 
51
52 ### Upgrading
53
54 If you have an existing 5.x system and are running a generic kernel, the normal upgrade process, described below, will work.  
55
56 Change your local `/usr/src` to 5.6:
57
58     cd /usr/src
59     git fetch origin
60     git branch DragonFly_RELEASE_5_6 origin/DragonFly_RELEASE_5_6
61     git checkout DragonFly_RELEASE_5_6
62     git pull
63
64 And then rebuild: (in `/usr/src`)
65
66     make buildworld
67     make buildkernel
68     make installkernel
69     make installworld
70     make upgrade
71
72     (reboot your system)
73
74     make initrd 
75
76 `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.
77
78 Don't forget to upgrade your existing packages.  5.6 packages have already been built and are immediately available.
79
80     pkg update
81     pkg upgrade
82
83 ## All other changes since DragonFly 5.4
84
85 ### Security Issues
86
87 ### Kernel
88
89 * Fix a probable callout race that could result in stuck processes.
90 * Increase number of kqueue timers from 4096 to 65536.  More apps use them.
91 * Adjust the blist code to allow more than 2TB of swap to be configured.
92 * Fix bugs related to the STOP signal that could block threads with locks held.
93 * Fix a race related to the STOP signal when operating on a multi-threaded program.
94 * Fix a rare vref() assertion.  This typically required extreme loads to reproduce.
95 * Synchronize ACPICA to Intel's version 20190215 (6.3).
96 * atkbdc - Still attach a PS2 controller even if the FADT says not to.
97 * All modules now use inlined atomics instead of static function calls.
98 * Update PCI ids for pciconf output.
99  Throw a global lock around udev dictionary ops.  Not having them could result in fairly rare corruption (devices aren't added or removing very often), particularly when using the 'vn' device.
100 * Major cleanup of TSC related code.
101 * Fix panic in mlock() and munlock().
102 * Implement the sbrk() system call and remove obsolete brk() support.
103 * Improve mmap() hinting above RLIMIT_DATA's current value, allowing languages to use it to map data below the 4GB mark if they desire (some languages implement 32-bit interpreters and need this).
104 * Change how SEM_VALUE_MAX is acquired by userland.
105 * Change the behavior of MADV_NOSYNC and MAP_NOSYNC for file-backed pages.  If the file is no longer memory-mapped the filesystem sync will now flush such pages to the filesystem, avoid a CPU-burning degenerate condition in the pageout and filesystem flush code.
106 * Add /dev/part-by-label, allowing user-specified labeling of disklabels to show up in /dev.
107 * Rewrite the callout subsystem to utilize a handle and improve debugging.  This has been done to improve performance and in particular prevent the callout timer lists from getting corrupted by bugged driver code.  This also ensures that the CAM ccb_hdr structure, which is exposed to userland, will no longer be sensitive to changes made to the callout structure.
108 * Fix info->si_code for waitid(2) support.
109 * Add support for char and short-sized values.
110 * vkernel - The vkernel uses the TSC by default when possible.
111 * (see VM section at top, major VM changes)
112
113 ### Filesystems
114
115 * hammer2 - (see above)
116 * hammer2 - Refactor the 'info' directive.
117 * hammer2 - No longer panics if the root inode is corrupt, the mount will fail gracefully instead.
118 * hammer1 - Fix left-over /var/run/hammer.cleanup lock files.
119 * tmpfs - Fix cpu inefficiencies related to the syncer.
120 * autofs - Misc fixes.
121 * ufs - Expand time_t support to 48-bits to try to head-off the 32-bit time_t overflow issue in older filesystems.  In addition, treat the original 32-bit fields as unsigned.
122 * smbfs - Bring in some string safety and type-o fixes.
123 * nfs - NFS mounts which go bad can now be unmounted.
124 * nfs - NFS mounts that went bad were not being listed in 'df'.  Fixed.
125
126 ### Networking
127
128 * wpa_supplicant pkg included in nrelease build for usb install image.
129 * pkg based wpa_supplicant is preferred over base version.
130 * Implement DHCP flag for ipv6_ifconfig_* in rc.conf.
131 * Add ifconfig -n ... to disable automatic module loading.
132 * Properly bring up/down interface, primarily to support wpa_supplicant.
133 * Rework wlan_down() and other wlan support in network.subr.
134 * dhcpcd will now go into the background immediately by default.
135
136 ### Driver updates
137
138 * iwm - Fix possible null pointer indirection.
139 * if_re - Sync with Realtek's 1.95.
140 * ena - (amazon AWS) - release MSI-X vectors on probe failure.
141 * ps/2 - Fix a race that could panic the kernel and corrupt the ps/2 packet buffer.  There was a bit of code that was still depending on critical sections to interlock the interrupt, which is obviously no longer protective.
142
143 ### Userland
144
145 * Update 'script', bringing new options and bug fixes in from FreeBSD.
146 * Header file adjustments.
147 * Many manual page adjustments.
148 * Detect a common mistake of putting a 'sysctl' prefix in /etc/sysctl.conf and don't spew to the console when it happens.
149 * Sync zoneinfo database to tzdata2018i (from ftp.iana.org).
150 * rtld-elf can now handle late dynamic relocations for 'relro' sections.
151 * libc - Now uses sbrk() system call.
152 * The installer now uses /dev/part-by-label to locate the installation media instead of assuming that it is 'da8'.
153 * Add a sysctl debug.acpi.silent_all to silence annoying repetitive ACPI messages.
154 * Remove 'cat*' cached manual pages support.  There's no need to do this any longer, just generate the manual pages in real-time.
155
156
157 ### Boot
158
159 * Rework the initrd build logic to simplify matters.
160
161 ### Various tools have been upgraded in the base system:
162
163 * gcore - Significantly improved.
164 * sysctl - Don't try to update if the current value matches.
165 * makefs - Bring in from FreeBSD to aid in initrd creation.
166 * dd - Rework the time interval calculation.
167 * dd - Generally sync with FreeBSD.
168 * gpt - Add "-g" to print the gpt GUID info in the 'show' directive.
169 * ministat - Import from FreeBSD.
170 * systat - Default to not showing pass*, sg*, and md* as previously intended, probe terminal width.
171 * iostat - Default to not showing pass*, sg*, and md* as previously intended, probe terminal width.
172
173 ### Compiler status
174
175 * gcc-8 is our default compiler.  gcc5 is no longer built by default.  gcc4.7 remains for emergencies.
176 * gcc-8 - Add support for -save-temps=objects option.
177 * gcc-4.7 - Add support for -save-temps=objects option.
178 * libc - Add reallocarray() from OpenBSD to improve application compatibility.
179 * buildkernel - Generate a less ambiguous label via gitrev.sh.
180
181 ### Package updates
182
183 * A full set of new binary packages has been built for 5.6, available through the pkg tool.