DragonFly BSD

Software Screenshot:
DragonFly BSD
Software Details:
Version: 5.2.2 updated
Upload Date: 22 Jun 18
Developer: The DragonFly Team
Distribution Type: Freeware
Downloads: 50

Rating: 5.0/5 (Total Votes: 1)

DragonFly BSD is an open source BSD operating system designed to be the logical continuation of the FreeBSD-4.x OS series. It is very similar to other BSD-based distributions, such as FreeBSD, NetBSD or OpenBSD. It is a fork in the path, so to speak, giving the BSD base an opportunity to grow in an entirely new direction from the one taken in the FreeBSD-5 series. On top of that, it includes an unique set of features that differentiate it from other similar OSes.

HAMMER is the main attraction

HAMMER is DragonFly’s main attraction, a modern, high performance filesystem that features historic access functionality and built-in mirroring. The kernel is also one of the reasons why DragonFly is a better BSD distribution.

Offers two different schedulers for the kernel

DragonFly’s kernel includes two different schedulers, one that schedules all executable entities (Light Weight Kernel Thread) and another one that selects a single user thread at a time for each processor and abstracts out user threads (User Thread Scheduler). Additionally, the kernel features a complex kernel memory allocator comprised of an object-oriented memory allocator and a basic kernel malloc called kmalloc(), the DragonFly device filesystem (DEVFS), a virtual kernel (VKERNEL), NFS V3 RPC asynchronization, and a disk I/O scheduler framework (dsched).

Features, lots of features

Among other interesting features, we can mention the NULL Filesystem Layer (NULLFS ) that supports non-looping arbitrary mount points, TMPFS (Temporary Filesystem VFS), transparent disk encryption, managed SSD (Solid Storage Device) support, variant (context-sensitive) symlinks, DNTPD (DragonFly Network Time Daemon) and DMA (DragonFly Mail Agent). In addition, users will be able to checkpoint or suspend processes to disk at any time. The distro provides strong AHCI drivers, stable device names, as well as well grounded encryption and volume management.

Bottom line

Overall, DragonFly proves to be a modern, user-friendly and very accessible UNIX-like operating system. It can be used on a daily basis as a desktop system or as a powerful BSD server.

What is new in this release:

  • DragonFly version 5.2.1 has been released, with Meltdown/Spectre mitigation, many improvements to HAMMER2, ipfw, and accelerated video, plus (in the 5.2.1 update) fix for CVE-2018-8897.

What is new in version :

  • Christian Groessler (1):
  • telnetd: print system information (OS and architecture) before login prompt.
  • Matthew Dillon (7):
  • hammer2 - Fix divide by 0 race
  • kernel - selective MFC of kernel umtx work from master
  • kernel - Update umtx documentation
  • libc and pthreads - Fix atfork issues with nmalloc, update dmalloc
  • hammer2 - Fix rename race
  • hammer2 - optimize hammer2_pfs_memory_wakeup()
  • hammer2 - Fix indefinite dirty chains due to rename
  • Sascha Wildner (5):
  • hammer2.8: Fix typo.
  • Say 'hammer2' instead of 'hammer' in various places.
  • mtree: Fix owner for several directories in /usr/share.
  • libc/nls: Use current locale (set by thread).
  • libarchive: Revert commit that was not meant to be pushed.

What is new in version 4.8.1:

  • Kernel:
  • Refactor buffer cache code to remove dynamic KVA reservations. Instead, all KVA is reserved at boot time. Saves us from unnecessary IPIs and allows significant simplification of the buffer cache code.
  • Add vfs.repurpose_enable (under test, disabled by default). This feature can be enabled to significantly reduce the IPI and VM management load on a machine which is doing huge amounts of file I/O, for example from a NVMe SSD, by bypassing normal VM page recycling mechanism. When enabled, the feature only triggers under high I/O loads. It works by repurposing the VM pages underlying a buffer in-place (when possible) so as not to have to kremove/kenter the pages in the buffer's KVA. Normal VM page recycling (which would otherwise be overwhelmed by the I/O load) is bypassed as well.
  • Change how the IPIQ is processed, in particular create an independent Xinterrupt vector mechanism for page invalidations that ignore (will operate) even if a critical section is held. Implement machdep.optimized_invltlb (disabled by default, under test) which avoids sending tlb invalidation IPIs to idle cpus.
  • Fix numerous races that could occur under extreme loads. Most use cases would never trigger these but our build boxes did occasionally. For example, there was a two instruction race where the cpu bit for a pmap would be cleared (for two instructions) and cause a TLB IPI occuring at the same time on another cpu for the same pmap to not realize that cpu was using the pmap. The fix is to disable the CR3 reload optimization for the LWP->LWP (same proc) switch case.
  • Fix a HAMMER bug which could result in a DATA CRC error being improperly reported.
  • Fix a double-write triggered by the way HAMMER uses cluster_write(). This significantly improves HAMMER's write performance.
  • Numerous other HAMMER cleanups and fixes also went in.
  • Fix a hard lock that could occur in getpbuf*() due to a misinterpretation of the return value of an atomic op.
  • Fix a stacking interrupt that can occur in a 10-instruction window, potentially (but not found in the wild) running the kernel stack out.
  • Cut pmap related IPIs in half for certain buffer-cache operations by not bothering to invalidate the TLB, and on the flip-side always invalidating the TLB when entering a new PTE even if the prior contents was invalid. This improves performance and also makes debugging easier by removing a problematic optimization.
  • Fix a number of difficult-to-trigger SMP races, in particular one related to doing simultaneous umounts of different mount points which the bulk build could trigger. Also fix a mountctl vs umount race.
  • Reduce the number of atomic ops in the switch path.
  • Fix a namecache race/panic which could occur under extreme loads coupled with a lot of mount/umount activity.
  • Restrict %rip sampling to root.
  • Fix a getpid() issue in vfork() when threaded. In particular, concurrent vfork()s in a threaded program could cause the wrong PID to be returned by getpid() in the child prior to the exec.
  • Fix a rare tsleep/callout race when the callout timer triggers before the tsleep() is completely done setting up.
  • Cleanup namecache stall messages on the console. In particular, report the proper elapsed time and the td_comm of the thread involved.
  • Further reduce memory testing and early-boot zeroing to improve boot times on systems with large amounts of ram.
  • Remove the idle page-zeroing code entirely. Zeroing a page on a modern cpu on-demand is better for many reasons, and may actually be faster when combined with the consumer accessing data in the page, due to cache effects. Remove PG_ZERO, because it is no longer needed. Removing PG_ZERO also makes the kernel more debuggable by removing another possible source of cross-contamination.
  • Refactor and finish implementing CPU localization for kernel memory allocations. Combine with NUMA awareness. This works for cpu-localized or short-lived kernel data structures. The two are combined together in our PQ_L2_SIZE abstraction that used to be the VM page coloring code. This code now also handles CPU localization and NUMA awareness.
  • Fix many vkernel issues and significantly improve vkernel performance.
  • Update kern.proc.pathname, a sysctl used by programs to find the path of the running program. This sysctl was originally implemented before we stored sufficient data to return a full, proper path.
  • Sync ACPICA from Intel (this is a regular occurrence).
  • Fix the memcpy() assembly ABI. The assembly was not returning the original (dst) argument. Doesn't fix any known issues but closes a hole when GCC sometimes decides to call memcpy while generating code.
  • Many commits to clean up -O2 warnings and errors. The kernel is now compiled -O2 by default.
  • Add a workaround for an improper yield in the ACPI path (aka buggy ACPI code).
  • Fix a STOP/CONT race that could be triggered by a pending signal at just the wrong time.
  • Threaded coredump fixes and fix a lockup related to same when multiple threads of the same process seg-fault at the same time.
  • Fix a CAM/VM deadlock that could occur due to a bug in uiomove_nofault(). This could cause an 'indefinite wait buffer' during heavy paging/swapping.
  • Add code to detect and deal with lost IPIs. This is primarily for vkernels where some virtual hosts can lose IPIs. Real CPUs are not supposed lose IPIs.
  • Various fixes to clock_gettime().
  • Remove more vestiges of the MPLOCK. All critical paths have long since divested from this lock, but there are still a few non-critical places left that use it.
  • Rework the low-memory process killing code and fix a number of races that could prevent the feature from working.
  • Fix a system lockup with VMM and refactor the VMX code.
  • Fix a deadlock when numvnodes reaches maxvnodes, which can occur under heavy loads. Also fix a minor kernel memory leak when 'df' or filesystem sync races a umount. Also reduce the maxvnodes calculation modestly. For example, a machine with 8GB of ram will now set maxvnodes to 478483 instead of 598103.
  • Fix a rare panic which can be triggered by vm_object_page_remove() when user_yield() is improperly called while holding a spinlock, and then decides to deschedule.
  • Reduce the size of some dynamically allocated kernel structures. In particular, excessively-sized inode hash table allocations are now smaller. Primarily affects UFS (which DragonFlyBSD doesn't use much).
  • Add workaround for AMD erratum 793.
  • Fix a deadlock which can occur in stacked cluster_*() I/O calls.
  • Fix a bug where recursive module loading could deadlock.
  • Fix a silly bug in the NFS sillyrename code (server side NFS) which could cause the NFS server's sillyrename code to never remove the silly-renamed file. How silly!
  • Do a better job accommodating high-ncpu + low-memory configurations.
  • Refactor shared spinlocks to reduce the amount of spinning which can occur when multiple cpus acquire a shared spinlock at the same time.
  • Overhaul namecache operations to reduce SMP contention even further. This improves simultaneous non-conflicting single-component performance at least 25x on systems with many cores, and significantly reduces vnode and mount structure ref and unref operations.
  • Overhaul numerous other kernel structures to improve cache locality and reduce cache line bouncing.
  • Fix a bug in SMBFS's file rename code.
  • Implement RLIMIT_RSS, a per-process RSS limiter which will force localized paging on a per-process basis. This feature can be used to prevent one process from turning the rest of the machine into a hard case.
  • Increase the maximum supported swap space. The maximum is now limited primarily by ram and will be in the tens of terabytes (if you have enough ram for the supporting management structures). Also increase the kernel's KVM from 128G to 511G.
  • Implement dynamic pmap deletion (disabled by default). This directs the pmap code to delete intermediate page table pages and PDs from the pmap on the fly. It can be useful if memory is at a premium, but note that, if enabled, it will slow execution of programs which allocate and deallocate memory at a high rate.
  • Refactor how user 'nice' levels work, making the selected nice values more significant than they used to be.
  • Add a high performance native NVME driver to DragonFly, written by Matt Dillon. This driver will use MSI-X vectors and all available queues supported by the device, per-cpu localization with no locking or minimal locking (no SMP conflicts in most cases), and is capable of insane IOPS and throughput.
  • Graphics:
  • Stabilizes Broadwell and Skylake, bring us up to the Linux 4.6 equivalent DRM.
  • Implement the Linux i2c API to make porting easier.
  • Fix a few old bugs, including a lock order reversal, which could stall-out video playback (and the rest of X).
  • Fix a kernel drm thread priority mistake that allowed user processes to have a higher priority than the drm helper thread. This fixes most temporary video stalls reported on browsers.
  • Handle EFI framebuffer passing into DRM, improve syscons VT switching and fix a related deadlock. Also have the kernel try to switch back to the console VT from X when a panic occurs.
  • Networking:
  • Many improvements across the board.
  • iwm - Fixes an issue caused by inverted logic. Numerous other improvements that significantly improve performance.
  • wlan - Support for asynchronous bg scan and other features added.
  • Other drivers:
  • nvme - Added to default kernel build, plus fixes and performance improvements.
  • mmcsd - Significant eMMC support added to DragonFly.
  • ahci - Some compatibility adjustments and more quirks added to support broken chipsets, in particular port multipliers. Also implement FBS (FIS-Based-Switching) when supported by the chipset.
  • Trackpoint and Elantech support added.
  • Userland:
  • systat enhanced to collapse multiple interrupts belonging to the same driver, as there are often too many to list now.
  • systat -vm 1 significantly enhanced and revamped to report more useful information and to unpack fields so they don't run into each other. And add 'nvme' to the block device match. Also adjust the extended vmstats display and change how ozfod and nzfod is reported.
  • 'vmstat 1' output refactored. All the fields were running into each other due to the high performance of a modern machine verses what existed 30 years ago.
  • Change mount/mountd signalling to reduce unnecessary mountlist scans and commands from mount_null and mount_tmpfs operations. Only really matters under heavy concurrent use of mount/umount, but the bulk build actually creates that situation.
  • Fix numerous fork/exec*() leaks that libc can trigger due to not using O_CLOEXEC in an atomic fashion. Add various O_CLOEXEC features to functions like popen() and mk*stemp*() (add mkostemp() and mkostemps()). Fix a file descriptor leak in popen() when running in a threaded environment.
  • Be nicer to pthreads in vfork() by giving the new sub-process's lwp the same TID as the one that called vfork(). This allows pthread support functions to execute in the child during the vfork without imploding pthreads.
  • Lots of compatibility fixes to headers to improve dports bulk builds.
  • Several OpenSSL imports for security fixes.
  • Resync OpenSSH to make it easier to keep it uptodate.
  • Separate out kernel C flags by having the kernel build use KCFLAGS instead of CFLAGS.
  • Remove numerous old ISA drivers from the tree entirely. As DragonFlyBSD is now 64-bit only, we can begin to remove old drivers that do not exist on 64-bit platforms.
  • Introduce WORLD_CFLAGS and WORLD_CCOPTLEVEL, defaulting to -O. This makes it easier to compile your world -O2 or whatever (e.g. WORLD_CCOPTLEVEL=2). However, we discourage use of 3 or higher. Valid values are 0, 1, 2, 3, s, g, and 'fast'.
  • Adjust STATUS formatting for ps to make it more readable and to remove ancient flags that are no longer applicable and just create clutter.
  • Fix malloc() alignment for small allocations. The minimum alignment is now 16 for allocations in the 16-128 byte range instead of 8. Note that power-of-2 allocations have always been naturally aligned, but some programs use multiples of (e.g.) 16, like '48', and assume 16-byte alignment.
  • Fortunes refactored, added.
  • powerd - Add temperature-based management to powerd with a new -H lotemp:hightemp option. This feature is extremely useful on laptops with poor cooling and whos BIOSes intentionally throttle at too-high a temperature. Powerd now also detects power state changes (which can change the list of available frequencies) and properly transitions the service when a power state change occurs.
  • Lots of libthread_xu / pthreads fixes and adjustments to improve dports compatibility.
  • Add copy-on-write features to the vkernel. For example, allows multiple vkernels to use a single disk image by having each one COW modifications internally to ram.
  • /usr/src/secure rewired, conflicts removed from libmd, libcrypt.
  • Various tools have been upgraded in the base system:
  • Compiler updated to GCC 5.4.1.
  • We now have a gold linker with LTO.
  • binutils 2.25
  • less 481.
  • OpenSSL / LibRESSL completely revamped. Base now uses libressl.
  • Multiple timezone updates.
  • Hammer Status:
  • Miscellaneous improvements. One thing that didn't make it into the release was a version bump to use a faster CRC algorithm with a different polynomial. This work will be MFC'd to -release once testing is complete. However, users should not worry about it too much because the most serious performance fix IS in the release (a fix to the cluster_write() code for filesystem writes).
  • Hammer2 Status:
  • Development continues but no word yet on a first release.
  • Clang status:
  • A starting framework has been added for using clang as the alternate base compiler in DragonFly, to replace gcc 4.7. It's not yet complete. Clang can of course be added as a package.
  • 64-bit status:
  • Note that DragonFly is a 64-bit-only operating system as of 4.6, and will not run on 32-bit hardware.
  • AMD Ryzen support is in the release and further work will be brought in as new Ryzen developments occur. There are some cpu-reported-topology issues that will be fixed and MFC'd. There are some stability issues currently waiting on an AMD microcode update to resolve/retest. Ryzen users can be assured that we are staying on top of it!

What is new in version 4.8.0:

  • Kernel:
  • Refactor buffer cache code to remove dynamic KVA reservations. Instead, all KVA is reserved at boot time. Saves us from unnecessary IPIs and allows significant simplification of the buffer cache code.
  • Add vfs.repurpose_enable (under test, disabled by default). This feature can be enabled to significantly reduce the IPI and VM management load on a machine which is doing huge amounts of file I/O, for example from a NVMe SSD, by bypassing normal VM page recycling mechanism. When enabled, the feature only triggers under high I/O loads. It works by repurposing the VM pages underlying a buffer in-place (when possible) so as not to have to kremove/kenter the pages in the buffer's KVA. Normal VM page recycling (which would otherwise be overwhelmed by the I/O load) is bypassed as well.
  • Change how the IPIQ is processed, in particular create an independent Xinterrupt vector mechanism for page invalidations that ignore (will operate) even if a critical section is held. Implement machdep.optimized_invltlb (disabled by default, under test) which avoids sending tlb invalidation IPIs to idle cpus.
  • Fix numerous races that could occur under extreme loads. Most use cases would never trigger these but our build boxes did occasionally. For example, there was a two instruction race where the cpu bit for a pmap would be cleared (for two instructions) and cause a TLB IPI occuring at the same time on another cpu for the same pmap to not realize that cpu was using the pmap. The fix is to disable the CR3 reload optimization for the LWP->LWP (same proc) switch case.
  • Fix a HAMMER bug which could result in a DATA CRC error being improperly reported.
  • Fix a double-write triggered by the way HAMMER uses cluster_write(). This significantly improves HAMMER's write performance.
  • Numerous other HAMMER cleanups and fixes also went in.
  • Fix a hard lock that could occur in getpbuf*() due to a misinterpretation of the return value of an atomic op.
  • Fix a stacking interrupt that can occur in a 10-instruction window, potentially (but not found in the wild) running the kernel stack out.
  • Cut pmap related IPIs in half for certain buffer-cache operations by not bothering to invalidate the TLB, and on the flip-side always invalidating the TLB when entering a new PTE even if the prior contents was invalid. This improves performance and also makes debugging easier by removing a problematic optimization.
  • Fix a number of difficult-to-trigger SMP races, in particular one related to doing simultaneous umounts of different mount points which the bulk build could trigger. Also fix a mountctl vs umount race.
  • Reduce the number of atomic ops in the switch path.
  • Fix a namecache race/panic which could occur under extreme loads coupled with a lot of mount/umount activity.
  • Restrict %rip sampling to root.
  • Fix a getpid() issue in vfork() when threaded. In particular, concurrent vfork()s in a threaded program could cause the wrong PID to be returned by getpid() in the child prior to the exec.
  • Fix a rare tsleep/callout race when the callout timer triggers before the tsleep() is completely done setting up.
  • Cleanup namecache stall messages on the console. In particular, report the proper elapsed time and the td_comm of the thread involved.
  • Further reduce memory testing and early-boot zeroing to improve boot times on systems with large amounts of ram.
  • Remove the idle page-zeroing code entirely. Zeroing a page on a modern cpu on-demand is better for many reasons, and may actually be faster when combined with the consumer accessing data in the page, due to cache effects. Remove PG_ZERO, because it is no longer needed. Removing PG_ZERO also makes the kernel more debuggable by removing another possible source of cross-contamination.
  • Refactor and finish implementing CPU localization for kernel memory allocations. Combine with NUMA awareness. This works for cpu-localized or short-lived kernel data structures. The two are combined together in our PQ_L2_SIZE abstraction that used to be the VM page coloring code. This code now also handles CPU localization and NUMA awareness.
  • Fix many vkernel issues and significantly improve vkernel performance.
  • Update kern.proc.pathname, a sysctl used by programs to find the path of the running program. This sysctl was originally implemented before we stored sufficient data to return a full, proper path.
  • Sync ACPICA from Intel (this is a regular occurrence).
  • Fix the memcpy() assembly ABI. The assembly was not returning the original (dst) argument. Doesn't fix any known issues but closes a hole when GCC sometimes decides to call memcpy while generating code.
  • Many commits to clean up -O2 warnings and errors. The kernel is now compiled -O2 by default.
  • Add a workaround for an improper yield in the ACPI path (aka buggy ACPI code).
  • Fix a STOP/CONT race that could be triggered by a pending signal at just the wrong time.
  • Threaded coredump fixes and fix a lockup related to same when multiple threads of the same process seg-fault at the same time.
  • Fix a CAM/VM deadlock that could occur due to a bug in uiomove_nofault(). This could cause an 'indefinite wait buffer' during heavy paging/swapping.
  • Add code to detect and deal with lost IPIs. This is primarily for vkernels where some virtual hosts can lose IPIs. Real CPUs are not supposed lose IPIs.
  • Various fixes to clock_gettime().
  • Remove more vestiges of the MPLOCK. All critical paths have long since divested from this lock, but there are still a few non-critical places left that use it.
  • Rework the low-memory process killing code and fix a number of races that could prevent the feature from working.
  • Fix a system lockup with VMM and refactor the VMX code.
  • Fix a deadlock when numvnodes reaches maxvnodes, which can occur under heavy loads. Also fix a minor kernel memory leak when 'df' or filesystem sync races a umount. Also reduce the maxvnodes calculation modestly. For example, a machine with 8GB of ram will now set maxvnodes to 478483 instead of 598103.
  • Fix a rare panic which can be triggered by vm_object_page_remove() when user_yield() is improperly called while holding a spinlock, and then decides to deschedule.
  • Reduce the size of some dynamically allocated kernel structures. In particular, excessively-sized inode hash table allocations are now smaller. Primarily affects UFS (which DragonFlyBSD doesn't use much).
  • Add workaround for AMD erratum 793.
  • Fix a deadlock which can occur in stacked cluster_*() I/O calls.
  • Fix a bug where recursive module loading could deadlock.
  • Fix a silly bug in the NFS sillyrename code (server side NFS) which could cause the NFS server's sillyrename code to never remove the silly-renamed file. How silly!
  • Do a better job accommodating high-ncpu + low-memory configurations.
  • Refactor shared spinlocks to reduce the amount of spinning which can occur when multiple cpus acquire a shared spinlock at the same time.
  • Overhaul namecache operations to reduce SMP contention even further. This improves simultaneous non-conflicting single-component performance at least 25x on systems with many cores, and significantly reduces vnode and mount structure ref and unref operations.
  • Overhaul numerous other kernel structures to improve cache locality and reduce cache line bouncing.
  • Fix a bug in SMBFS's file rename code.
  • Implement RLIMIT_RSS, a per-process RSS limiter which will force localized paging on a per-process basis. This feature can be used to prevent one process from turning the rest of the machine into a hard case.
  • Increase the maximum supported swap space. The maximum is now limited primarily by ram and will be in the tens of terabytes (if you have enough ram for the supporting management structures). Also increase the kernel's KVM from 128G to 511G.
  • Implement dynamic pmap deletion (disabled by default). This directs the pmap code to delete intermediate page table pages and PDs from the pmap on the fly. It can be useful if memory is at a premium, but note that, if enabled, it will slow execution of programs which allocate and deallocate memory at a high rate.
  • Refactor how user 'nice' levels work, making the selected nice values more significant than they used to be.
  • Add a high performance native NVME driver to DragonFly, written by Matt Dillon. This driver will use MSI-X vectors and all available queues supported by the device, per-cpu localization with no locking or minimal locking (no SMP conflicts in most cases), and is capable of insane IOPS and throughput.
  • Graphics:
  • Stabilizes Broadwell and Skylake, bring us up to the Linux 4.6 equivalent DRM.
  • Implement the Linux i2c API to make porting easier.
  • Fix a few old bugs, including a lock order reversal, which could stall-out video playback (and the rest of X).
  • Fix a kernel drm thread priority mistake that allowed user processes to have a higher priority than the drm helper thread. This fixes most temporary video stalls reported on browsers.
  • Handle EFI framebuffer passing into DRM, improve syscons VT switching and fix a related deadlock. Also have the kernel try to switch back to the console VT from X when a panic occurs.
  • Networking:
  • Many improvements across the board.
  • iwm - Fixes an issue caused by inverted logic. Numerous other improvements that significantly improve performance.
  • wlan - Support for asynchronous bg scan and other features added.
  • Other drivers:
  • nvme - Added to default kernel build, plus fixes and performance improvements.
  • mmcsd - Significant eMMC support added to DragonFly.
  • ahci - Some compatibility adjustments and more quirks added to support broken chipsets, in particular port multipliers. Also implement FBS (FIS-Based-Switching) when supported by the chipset.
  • Trackpoint and Elantech support added.
  • Userland:
  • systat enhanced to collapse multiple interrupts belonging to the same driver, as there are often too many to list now.
  • systat -vm 1 significantly enhanced and revamped to report more useful information and to unpack fields so they don't run into each other. And add 'nvme' to the block device match. Also adjust the extended vmstats display and change how ozfod and nzfod is reported.
  • 'vmstat 1' output refactored. All the fields were running into each other due to the high performance of a modern machine verses what existed 30 years ago.
  • Change mount/mountd signalling to reduce unnecessary mountlist scans and commands from mount_null and mount_tmpfs operations. Only really matters under heavy concurrent use of mount/umount, but the bulk build actually creates that situation.
  • Fix numerous fork/exec*() leaks that libc can trigger due to not using O_CLOEXEC in an atomic fashion. Add various O_CLOEXEC features to functions like popen() and mk*stemp*() (add mkostemp() and mkostemps()). Fix a file descriptor leak in popen() when running in a threaded environment.
  • Be nicer to pthreads in vfork() by giving the new sub-process's lwp the same TID as the one that called vfork(). This allows pthread support functions to execute in the child during the vfork without imploding pthreads.
  • Lots of compatibility fixes to headers to improve dports bulk builds.
  • Several OpenSSL imports for security fixes.
  • Resync OpenSSH to make it easier to keep it uptodate.
  • Separate out kernel C flags by having the kernel build use KCFLAGS instead of CFLAGS.
  • Remove numerous old ISA drivers from the tree entirely. As DragonFlyBSD is now 64-bit only, we can begin to remove old drivers that do not exist on 64-bit platforms.
  • Introduce WORLD_CFLAGS and WORLD_CCOPTLEVEL, defaulting to -O. This makes it easier to compile your world -O2 or whatever (e.g. WORLD_CCOPTLEVEL=2). However, we discourage use of 3 or higher. Valid values are 0, 1, 2, 3, s, g, and 'fast'.
  • Adjust STATUS formatting for ps to make it more readable and to remove ancient flags that are no longer applicable and just create clutter.
  • Fix malloc() alignment for small allocations. The minimum alignment is now 16 for allocations in the 16-128 byte range instead of 8. Note that power-of-2 allocations have always been naturally aligned, but some programs use multiples of (e.g.) 16, like '48', and assume 16-byte alignment.
  • Fortunes refactored, added.
  • powerd - Add temperature-based management to powerd with a new -H lotemp:hightemp option. This feature is extremely useful on laptops with poor cooling and whos BIOSes intentionally throttle at too-high a temperature. Powerd now also detects power state changes (which can change the list of available frequencies) and properly transitions the service when a power state change occurs.
  • Lots of libthread_xu / pthreads fixes and adjustments to improve dports compatibility.
  • Add copy-on-write features to the vkernel. For example, allows multiple vkernels to use a single disk image by having each one COW modifications internally to ram.
  • /usr/src/secure rewired, conflicts removed from libmd, libcrypt.
  • Various tools have been upgraded in the base system:
  • Compiler updated to GCC 5.4.1.
  • We now have a gold linker with LTO.
  • binutils 2.25
  • less 481.
  • OpenSSL / LibRESSL completely revamped. Base now uses libressl.
  • Multiple timezone updates.
  • Hammer Status:
  • Miscellaneous improvements. One thing that didn't make it into the release was a version bump to use a faster CRC algorithm with a different polynomial. This work will be MFC'd to -release once testing is complete. However, users should not worry about it too much because the most serious performance fix IS in the release (a fix to the cluster_write() code for filesystem writes).
  • Hammer2 Status:
  • Development continues but no word yet on a first release.
  • Clang status:
  • A starting framework has been added for using clang as the alternate base compiler in DragonFly, to replace gcc 4.7. It's not yet complete. Clang can of course be added as a package.
  • 64-bit status:
  • Note that DragonFly is a 64-bit-only operating system as of 4.6, and will not run on 32-bit hardware.
  • AMD Ryzen support is in the release and further work will be brought in as new Ryzen developments occur. There are some cpu-reported-topology issues that will be fixed and MFC'd. There are some stability issues currently waiting on an AMD microcode update to resolve/retest. Ryzen users can be assured that we are staying on top of it!

What is new in version 4.6.0:

  • mmcsd(4): Fix typo in disk_create() args. Allows accessing >1 SD-/MMC-card.
  • Add unzip(1). If you can't beat 'em, join 'em
  • Restore ability for master world to build Release 4.4
  • buildworld - Allow -release to be built on master
  • etc/rc.d - diskless adjustments
  • kernel - Add kqueue support to NFS (fix firefox issues w/nfs)
  • Import OpenSSL 1.0.1s.
  • Local adjustments for OpenSSL 1.0.1s.
  • Sync zoneinfo database with tzdata2016b from ftp://ftp.iana.org/tz/releases
  • zic(8)/zdump(8): Don't warn about abbreviations like '-05'.
  • zic(8): Remove a 'register' that crept in in the last commit.
  • kernel/acpi_timer: Add a missing cpu_enable_intr() after the timer test.
  • em.4: Mention i219 support.
  • ig_hal/em/emx: Add I219 (Skylake) support
  • sys/vfs/hammer: Fix bug on erasing volume header
  • sbin/hammer: Don't access beyond 16KB of HAMMER userspace buffer
  • sbin/hammer: Add obfuscate option to hammer show
  • sys/vfs/hammer: Temporary fix for kernel panic on volume-del

What is new in version 4.4.3 / 4.6.0 RC2:

  • mmcsd(4): Fix typo in disk_create() args. Allows accessing >1 SD-/MMC-card.
  • Add unzip(1). If you can't beat 'em, join 'em
  • Restore ability for master world to build Release 4.4
  • buildworld - Allow -release to be built on master
  • etc/rc.d - diskless adjustments
  • kernel - Add kqueue support to NFS (fix firefox issues w/nfs)
  • Import OpenSSL 1.0.1s.
  • Local adjustments for OpenSSL 1.0.1s.
  • Sync zoneinfo database with tzdata2016b from ftp://ftp.iana.org/tz/releases
  • zic(8)/zdump(8): Don't warn about abbreviations like '-05'.
  • zic(8): Remove a 'register' that crept in in the last commit.
  • kernel/acpi_timer: Add a missing cpu_enable_intr() after the timer test.
  • em.4: Mention i219 support.
  • ig_hal/em/emx: Add I219 (Skylake) support
  • sys/vfs/hammer: Fix bug on erasing volume header
  • sbin/hammer: Don't access beyond 16KB of HAMMER userspace buffer
  • sbin/hammer: Add obfuscate option to hammer show
  • sys/vfs/hammer: Temporary fix for kernel panic on volume-del

What is new in version 4.4.3:

  • mmcsd(4): Fix typo in disk_create() args. Allows accessing >1 SD-/MMC-card.
  • Add unzip(1). If you can't beat 'em, join 'em
  • Restore ability for master world to build Release 4.4
  • buildworld - Allow -release to be built on master
  • etc/rc.d - diskless adjustments
  • kernel - Add kqueue support to NFS (fix firefox issues w/nfs)
  • Import OpenSSL 1.0.1s.
  • Local adjustments for OpenSSL 1.0.1s.
  • Sync zoneinfo database with tzdata2016b from ftp://ftp.iana.org/tz/releases
  • zic(8)/zdump(8): Don't warn about abbreviations like '-05'.
  • zic(8): Remove a 'register' that crept in in the last commit.
  • kernel/acpi_timer: Add a missing cpu_enable_intr() after the timer test.
  • em.4: Mention i219 support.
  • ig_hal/em/emx: Add I219 (Skylake) support
  • sys/vfs/hammer: Fix bug on erasing volume header
  • sbin/hammer: Don't access beyond 16KB of HAMMER userspace buffer
  • sbin/hammer: Add obfuscate option to hammer show
  • sys/vfs/hammer: Temporary fix for kernel panic on volume-del

What is new in version 4.4.2:

  • virtio_blk: Use contigmalloc/contigfree for vtblk_request allocations.
  • drm/radeon: We need the physical address of the dummy page, not the virtual
  • if_iwm: Apply some changes from OpenBSD, if_iwm.c rev 1.39 -> 1.42
  • if_iwm: Just store the struct firmware pointer, like if_iwn does.
  • if_iwm: Remove comments referring to Linux iwlwifi source filenames.
  • if_iwm: Fix IEEE80211_ADDR_COPY() usage.
  • if_iwm: Fix up the rate control setup code.
  • etc/rc.d: Update rtsold
  • i915 - Add delay after attach to avoid console/X races
  • kernel - Reduce lwp_signotify() latency
  • devfs - Fix panic on extra devfs mounts when rules are present
  • ssh - Remove undocumented roaming support CVE-2016-0777 CVE-2016-0778
  • kernel - Add quirks for xhci (usb)
  • hammer - remove debugging kprintf
  • libc/stdtime: Fix two cases where a NULL pointer could have been free()'d.
  • kernel/vga: Remove wrong lwkt_reltoken(). It's not taken at this point.
  • libc/nls: Sync str{error,signal}() messages with .
  • w(1): inet_addr() returns INADDR_NONE upon failure.
  • ee(1): Fix an uninitialized variable.
  • kernel: Fix the kern.dumpdev sysctl.
  • Import OpenSSL 1.0.1r.
  • Local adjustments for OpenSSL 1.0.1r.
  • gcc50/libconv_supc: cp-demangle.c needs HAVE_CONFIG_H.
  • Sync zoneinfo database with tzdata2016a from ftp://ftp.iana.org/tz/releases
  • make upgrade: Add an obsolete time zone.
  • igb: Fix DMACR settings
  • ifconfig: Fix inet6 address deletion

What is new in version 4.4.1:

  • Kernel:
  • Improved CPU power saving settings
  • Reduced file allocation/free contention
  • Reduce kqueue contention
  • Implemented lwp_setname(2) system call
  • Fixed dsp(4) nonblocking operation support
  • Add aperf(4) driver to display effective CPU frequency
  • Numerous cleanups and fixes to HAMMER
  • Sync ACPICA to 20151124
  • Mostly finished removing i386 (32-bit) bits
  • Adjust boot loader heap to handle larger MD images
  • Cleanup pass on dead kernel code (syslink remains, etc)
  • dsched removed (issues with bugs and doesn't work well with SSDs)
  • Recode pager algorithms for low-memory and out-of-memory pkill
  • Graphics:
  • drm/i915 and drm/radeon drivers now match Linux kernel 3.18
  • i915 supports ValleyView/Baytrail and Cherryview Atom SOCs
  • Broadwell GPUs are now fully accelerated
  • Preparatory work for Skylake support
  • The system console now supports drm graphics by default; virtual terminals don't just show a black screen anymore once Xorg has been started and one of the kms kernel modules loaded.
  • Improved power management. Panel Self Refresh available on i915 hardware
  • Temperature sensors now supported on Radeon hardware
  • Networking:
  • Realtek 8168H support in re(4)
  • iwm(4) driver added
  • rtadvd updated, rtadvctl added
  • Asynchronous UDP connections, for handling much greater load
  • New larger TCP starting window, for high-latency connections
  • Kernel nmbcluster values are live-adjustable, for extreme traffic Networking:
  • Stabilize UNIX domain socket
  • New GC code for fd-passing over unix domain sockets
  • Misc IPv6 sync with FreeBSD
  • Improved socket(2) performance for TCP and UDP
  • Improved TCP connect(2) local port selection
  • Added accept(4) system call
  • Added support for SOCK_CLOEXEC and SOCK_NONBLOCK socket(2) and accept4(2) flags
  • Make HW flow control features available to ifconfig
  • Add tunables to allow NFSROOT iosize and readahead to be set
  • Bring in expanded ipfw from FreeBSD (called ipfw3 in DFly)
  • Other drivers:
  • MIDI support has been readded
  • Many bugfixes for the device mapper
  • dm-delay and dm-flakey have been added to the device mapper
  • USB modems work better (or at least don't panic the kernel)
  • Improved access to ram ECC features and status
  • wlan updated from FreeBSD (to just prior to the split-device removal)
  • Userland:
  • the regex library has been replaced with the multi-byte and generally much more capable TRE regex library. It matches OSX in features. (DF is the first BSD to move to TRE after MacOS)
  • libm replaced with OpenBSD version (this is a collaborative work in progress)
  • libc now features symbol versioning which can enable binaries created on Release 4.4 to execute on DragonFly for years into the future.
  • Complete overhaul and update of locales, including the implementation of collation.
  • malloc.h removed (DragonFly is the first BSD to remove this header)
  • gcc50 libstdc++ modified to enable full usage of C99 functions on clang
  • As a consequence of locales update, the output of ls(1) long format and -T format has changed when named locales are in use. Notably, the long format months are always abbreviated in English (using the POSIX definitions thus guaranteed to be both fast and three letters wide) and the year, hour and second information is always displayed. Under the C/POSIX locale there is no change in ls(1) output other than future timestamp handling was corrected to match the POSIX standard requirements.
  • If WPA Supplicant from base is used, there will be a 10-second delay during boot as a message is displayed that strongly recommends that the DPorts version (security/wpa_supplicant) be used instead.
  • Improved powerd(8)
  • Improved top(1) and ps(1) output for LWPs and kernel threads
  • Fixed the support for pthread_set_name_np(3)
  • Ported tcpdrop(8)
  • Addition of many new locales including six Arabic locales (UAE, Saudi Arabia, Egypt, Jordan, Morocco, Qatar), additional Spanish locales (Mexico, Argentina, Costa Rica), additional English locales (Phillipines, Singapore, Hong Kong), corrected Norwegian locales (nb and nn only), extended Swedish (Finland), Sami (Finland, Norway), Serbian presented in both Cyrillic and Latin forms now. ('locale -a' provides a complete list.)
  • rtadvc imported from FreeBSD
  • Various tools have been upgraded in the base system:
  • nvi2 updated to version 2.1.3
  • libexecinfo added (synced from FreeBSD)
  • iconv synchronized with FreeBSD
  • openssl updated to 1.0.1q
  • xz updated to 5.2.2
  • libedit updated to version 2015-03-25
  • binutils updated to 2.25.1
  • grep updated to 2.22
  • tcsh updated to 6.19.00
  • libdialog updated to v1.2-20150920
  • (tn)ftp updated to '10 OCT 2015'
  • gcc updated to 5.2
  • acpica updated to 20150717
  • sort(1), which had come from NetBSD, was replaced by FreeBSD version
  • localedef(1), internal tool with origins on Illumos
  • cldr2def, internal tool with origins in abandoned FreeBSD project, but extended for DF
  • Removed from the base system:
  • hostapd (latest version available via dports: net/hostapd)
  • mklocale (replaced by localedef)
  • colldef (replaced by localedef)
  • HAMMER improvements:
  • Many, many cleanups and fixes to Hammer1, thanks to Tomohiro Kusumi
  • Other improvements:
  • DPorts count hovering around 22,800 ports. Many previously broken ports have been fixed by regular users due to contributions offered through GitHub's Pull Request mechanism. (Thanks!)
  • Six "official" sets of DragonFly wallpaper is available at x11-themes/dragonfly-wallpapers (pkg install dragonfly-wallpapers). These are automatically installed and preselected for KDE users, and automatically installed for XFCE4 users but the wallpapers still have be manually selected with that desktop (at least for now). They get installed at share/wallpapers which is symlinked to share/backgrounds/dragonfly.

Similar Software

HyperDroid-CM7
HyperDroid-CM7

14 Apr 15

Team Blue Droid
Team Blue Droid

14 Apr 15

Atomthreads
Atomthreads

20 Feb 15

FuguIta
FuguIta

12 Jan 17

Comments to DragonFly BSD

Comments not found
Add Comment
Turn on images!