relocate rtld change
[ikiwiki.git] / release42 / index.mdwn
1 # DragonFly BSD 4.2
2
3 * Version 4.2.0 released xx June 2015.
4
5 Version 4.2 of DragonFly brings etc etc
6
7 The details of all commits between the 4.0 and 4.2 branches are available in the associated commit messages for [4.2RC](http://lists.dragonflybsd.org/pipermail/commits/2015-June/418748.html).
8
9 ## Big-ticket items
10
11 ### New base compiler
12
13 GCC-5 (gcc-5.1.1) is now the system base compiler as of the release.  The backup compiler is gcc-4.7.4.  This gives us significantly better C++ support which is needed for package building.
14
15 ### Improved graphics support
16
17 Significant progress continues in the drm (graphics) subsystem, with full acceleration (2D, 3D) supported through haswell and native non-accelerated support for broadwell (i.e. fast frame buffer, not the slow VESA mode).  Francois has synchronized most of the DRM subsystem through to a linux-3.14 equivalent.
18
19 DragonFly now supports a KMS (frame buffer) console.  Putting 'kern.kms_console=1' in your /boot/loader.conf and either starting X or just loading the i915kms or radeonkms module enables support.
20
21 ### 32-bit i386 architecture no longer supported
22
23 As announced during the 3.8 release, DragonFly BSD is 64-bit only. No 32-bit installation images have been generated, and no compatibility work is being done for 32-bit systems.
24
25 Why are we removing 32-bit support when Intel is still producing 32-bit cpus?  To be frank, we decided that the era of 32-bit cpus even on systems with only ~2GB of ram was over with file sizes and storage (and most ram configurations) already well beyond 32-bit limits.  We want to be able to depend on having a DMAP for the kernel, and we want to be able to over-provision kernel virtual memory to better scale to available ram (particularly for the buffer cache, to remove the fragmentation problem).  32-bit systems were constantly banging up against KVM or UVM limitations due to the split address space.  It had gotten to the point where there simply was not enough virtual memory to properly scale all components.  Intel needs to stop producing 32-bit cpus, simple as that.  There's no point any more, even for embedded microcontrollers.
26
27 ### Sendmail removed from base
28
29 The base system no longer has sendmail.  New installs will use our home-grown DMA service.  People who still need sendmail must install it from dports.  We recommend making the effort to convert to DMA or postfix (postfix would also come from dports).
30
31 Sendmail in-base was old and decrepit.  Nobody under the age of 45 even understands the godawful sendmail.cf insanity any more.  It's time to move on.
32
33 ## Changes since DragonFly 4.0
34
35 ### Kernel
36
37 * Fix an exec() optimization race that could deadlock processes.
38 * Add reapctl() system call for reaper and sub-process management.
39 * Improve slab cleanup performance.
40 * Increase default MAXTSIZ from 128M to 256M.
41 * Add lock cancelation features.
42 * Implement a new callout*() core.
43 * Fix callout deadlocks in u4b.
44 * Fix a panic on upmap/kpmap access from procfs.
45 * Fix a pmap panic in vkernel64.
46 * Implement kqueue write filtering for U4B, required by some apps.
47 * Fix a major pagetable memory leak that could fill up swap.
48 * Swapcache cleaning is allowed to proceed even if swapcache is disabled.
49 * sound - Port FreeBSD sound system to DragonFly.
50 * sound - Add haswell support.
51 * sound - Add ALC283 support.
52 * sound - Add Acer C720 support.
53 * sound - make device cloning work for multiple app access.
54 * pxeboot - workaround some BIOS breakage.
55 * usb-u4b - synchronize from FreeBSD as-of March 2015.
56 * Refactor kernel message buffer (dmesg) code to fix lost text.
57 * Fix panic in situations where a chroot is broken.
58 * Fix O_CLOEXEC race in open() and fhopen().
59 * Add pipe2() system call.
60 * Add chflagsat() system call.
61 * Refactor bdirty() handling to fix possible fsync races.
62 * Add cpu C-state ACPI parsing and settings.
63 * Add coretemp - sensor framework for core cpu temps.
64 * Add memtemp - sensor framework for dram temps.
65 * ECC support module and sensor framework.
66 * Misc minor hammer fixes.
67 * Hammer code cleanup.
68 * Ext2fs code cleanup.
69 * Tmpfs code cleanup.
70
71 ### Graphics
72
73 * Sync most DRM elements to linux-3.14 equivalent.
74 * 2D, 3D accel through haswell now stable.
75 * KMS console support added.
76 * Backlight control is available generally for i915 and radeon, useful for laptops.
77 * Increase the DMA reserve (vm.dma_reserved) from 16M to 128M by default.
78 * Vkernel now forwards SIGTERM to child processes.
79 * Kqueue support added to DRM.
80 * Add temp sensor support to the sensors framework.
81
82 ### Networking
83
84 * Emx errata fixes for multi-TX queues.
85 * Fix improper multicast setup for ig_hal.
86 * Numerous ipv6 fixes and features.
87 * Remove ipv4->ipv6 spoofing feature (no longer useful).
88 * e1000 (em, emx, ig_hal) - sync w/intel em-7.4.2.
89 * if_bridge improvements.
90 * mountd now properly supports IPV6.
91
92 ### Packet Filter (pf)
93
94 * ipfw3 - Ported from FreeBSD (called ipfw2 in FreeBSD)
95 * if_lagg improvements.
96
97 ### Storage drivers
98
99 ### Crypto
100
101 ### Mobile devices
102
103 * Synchronize 80211 infrastructure with FreeBSD.
104
105 ### Userland
106
107 * Many manual page cleanups.
108 * date -R (RFC 2822 date and time output format).
109 * patch - add dry-run alias.
110 * camcontrol -b for camcontrol devlist op.
111 * blacklist support removed from ssh (EOL for that old deian bug).
112 * A simple in-base-system sshlockout, now uses PF table instead of IPFW.
113 * tail -q (quiet mode removes filename headers).
114 * Add 'idle', 'standby' and 'sleep' directives.
115 * Fix seg-fault in jls.
116 * Add 'ifconsole' option to /etc/ttys to enable serial ports only if designated as the console.
117 * rtld-elf - Save/restore fp scratch regs for dynamic linker.
118 * rtld-elf - minor bug fixes, synced with FreeBSD
119 * powerd enhanced.
120 * Major version updates for many dports.
121 * Fix a resource leak in libc/db and a memory leak in libc/regex.
122 * Ssh now correctly sets xauth's path.
123 * libm synced with FreeBSD
124 * No more GNU Info pages provided on system
125
126 ### Various tools have been upgraded in the base system:
127
128 * openssh 6.7p1.
129 * file 5.22.
130 * ftp 1.205 from netbsd.
131 * sh - sync to FreeBSD d038ee76 (mostly fixes that effect poudriere).
132 * mdocml 1.13.1.
133 * byacc 2014-10-06
134 * less 471
135 * mpc 1.0.3 (internal)
136 * bmake 2014-11-11
137 * binutils 2.25 (primary)
138 * GCC 5.1.1
139 * OpenSSL 1.0.1o
140
141 ### Removed from the base system:
142 * GCC 4.4
143 * Sendmail
144 * Binutils 2.21
145 * texinfo 4.13
146
147 ### Hammer2 Status
148
149 Hammer2 is not ready for release but progress continues apace.  The core non-clustered code is about 95% operational for single-image operation.  This includes all standard frontend operations, snapshots, compression, and the bulk free scan.
150
151 Work is progressing on the clustering piece.  Since the clustering is really the whole point, I am not going to release HAMMER2 until it is operational.  
152
153 Recent developments are as follows:
154
155 I buckled under and bumped the blockref descriptor from 64 bytes to 128 bytes.  This was needed to properly support per-directory quota and inode/data-use statistics but it also has the fringe benefit of allowing up to 512-bit check codes to be used.  The quota management is an extremely powerful tool in HAMMER2 so I deemed it worth doing despite the added bloat.  I could not implement the fields in the inode due to the presence of indirect blocks without significantly adding to the complexity of the software which is why it had to go into the blockref.
156
157 The use of very large check codes makes non-verified de-duplication for non-critical data possible.  (Non-verified dedup is de-duplication based only on the check code, without validating the actual data content, so collisions are possible where the data does not match.  However, it also means the de-duplication can be done several orders of magnitude more quickly needing only a meta-data scan with no data I/O).  This is the only sort of dedup that really works well on insanely huge filesystems.
158
159 The 1KB H2 inode is able to embed 512 bytes of direct data.  Once file data exceeds 512 bytes, that area in the inode is able to embed up to 4 blockrefs (it used to be 8), representing up to 4 x 64KB = 256KB of file data.  Since HAMMER2 uses 64KB logical blocks (actual physical blocks can be smaller, down to 64 bytes), the blockref overhead is at worst 128 bytes per 64KB or 0.2% of storage.  Hammer2 itself implements a radix tree for the block table.  Larger block sizes are possible but not convenient due to buffer-cache buffer limitations and the need to calculate and test check codes.
160
161 My original attempt to implement the clustering mechanic was to use the calling context and both asynchronous locks and asynchronous I/O all in-context acting on all cluster nodes to prevent stalls due to dead or dying nodes.  It had the advantage of being very parallel (concurrency scales with process threads).  But this quickly became too complex algorithmically and I've given up on that approach.  The new approach is to replicate the request from the user thread to multiple kernel threads, one per cluster node, which then execute the operation on each node synchronously (much easier), independent of the user process, and then aggregate/consolidate the results back to the user process.  The user process will be able to detach the operation and return the instant it gets a definitive result.  This means that stalled or dying nodes will not slow down or stall the frontend VOP.  The kernel node threads themselves can be multiplied out for additional concurrency.
162
163 It should be noted that frontend operations which operate on cached data will be able to complete in-context and will not have to issue replicated requests to these kernel threads.  This includes core inode meta-data and, most especially, read or write operations for data already cached in the VM page cache / buffer cache.
164
165 ### Other improvements
166 * new "hammer abort-cleanup" command added to HAMMER
167 * Boot menu refreshed - color by default - new Blue Fred logo added and displayed by default
168 * Building mechanism improved (more parallelism - world and kernel, avoid rebuilding major libraries by changing dependency requirements, add missing start/completion messages on buildworld, buildkernel, make stage4 use recently built rpcgen instead of host rpcgen)
169 * GCC50 base compiler embedded DT_RUNPATH rather than DT_RPATH (as has been done previously) in built executables.  The dynamic linker reacts differently when DT_RUNPATH is present; it will check LD_LIBRARY_PATH before the rpath in that case.