DragonFly BSD was announced in July of this year, with Matt Dillon the originator and main weightlifter of this project. Development has been proceeding at a good clip, with a first release expected in 2004.
Statistics: Here's some data on the amount of activity in the DragonFly source, as of the end of December 2003.
| Number of commits | Committer |
|---|---|
| 48288 | dillon |
| 1212 | rob |
| 997 | asmodai |
| 913 | eirikn |
| 636 | drhodus |
| 390 | hmp |
| 149 | daver |
| 53 | joerg |
| 3 | justin |
The newer power system, imported by David Rhodus. It is not on by default.
A number of improvements to AGP support from FreeBSD 5 were added by Craig Dooley.
(Matt Dillon, Hiten Pandya, David Rhodus) AMD's new 64-bit processors are nearly supported, with FreeBSD-5's boot code brought in to DragonFly. GCC 3.3 support and some code changes are needed first. As a side effect of this work, some hooks for PAE support now exist. Matt Dillon and David Rhodus has AMD64 hardware to test on. This work has included the merge of boot code from FreeBSD-5 along with Peter Wemm's linker changes. (See GCC3 listing)
ATAng is 'next generation' ATA disk access, which works more efficiently in a multithreaded environment. David Rhodus is merging in newer ATA code from the FreeBSD-4x tree and is trying to "work through the abuse of M_NOWAIT inside the ATA raid card controllers".
Jeroen Ruigrok has set up a Bugzilla database, and imported a large number (over 6,000) of bug reports and feature requests from FreeBSD-4 that may still apply to DragonFly. This database is not yet available.
(Kip Macy) It is possible to 'freeze' (^E) a copy of a program in its current state, and then later 'thaw' (/usr/bin/checkpt) it, restoring the state of the program. Among more exotic applications, long-running processes can be saved and restored across reboots. This is mostly complete, and can be loaded with the checkpoint.ko module.
Eirik Nygaard and Craig Dooley have been cleaning up the old K&R-style functions into ANSI code, along with removal of the __P() macro use from the userland. Robert Garrett removed the __P() macro inside the kernel source. Jeroen Ruigrok has been working on the removal of perl from the kernel build process. David Rhodus and Hiten Pandya have been fixing other various long running problems inside the kernel. David Rhodus has updated Sendmail (8.12.10), BIND(8.3.7), and also updated other applications like OpenSSL and OpenSSH.
Craig Dooley has submitted many patches to enable DragonFly building under GCC3. David Rhodus has GCC-3.3.3 working in a test tree at the moment, for AMD64 support.(In progress)
Matt Dillon created a local override of the existing FreeBSD ports system, to allow port installation until a DragonFly-native solution is created.
libcaps has been created. This is a library that allows userland threading, similar to the existing LWKT. This is being worked on by Galen Sampson and Matt Dillon.
DragonFly CDs can now be built as 'live', meaning that a computer can be booted using the CD as the boot disk, and then tools like cpdup can be used to install to hard disk. This is not yet fully documented; i.e. you will have to run programs like disklabel manually. /usr/src/nrelease contains the code, and also some instructions.
Added by Matt Dillon. LWKT stands for Light-Weight Kernel Threads. LWKT gives each CPU in the system its own scheduler, and threads are locked to that CPU. This removes any need for mutexes to handle interrupts. More information is available at the DragonFly website. Galen Sampson has been working on a port to userland.
Justin Sherrill has been keeping a running news report of DragonFly activity at http://www.shiningsilence.com/dbsdlog/.
Quoted from the committ log: "This subsystem is used for 'pipelining' fixed-size allocations. Pipelining is used to avoid lack-of-resource deadlocks by still allowing resource allocations to 'block' by guaranteeing that an already in-progress operation will soon free memory that will be immediately used to satisfy the blocked resource." Added by Matt Dillon.
Jeroen Ruigrok has been working on make release. Since the size of the DragonFly kernel is in flux, it can exceed the available floppy space. (incomplete)
Germany - Simon 'corecode' Schubert
http://chlamydia.fs.ei.tum.de/
Ireland - David Burke
http://ftp.esat.net/mirrors/chlamydia.fs.ei.tum.de/pub/DragonFly/
ftp://ftp.esat.net/mirrors/chlamydia.fs.ei.tum.de/pub/DragonFly/
Japan - Hiroki Sato
http://pub.allbsd.org/DragonFly/snapshots/i386/
ftp://ftp.allbsd.org/pub/DragonFly/snapshots/i386/
rsync://rsync.allbsd.org/dragonfly-snapshots/
Matt Dillon completed this work in September; a writeup of the two stages of the work are available here, and here.
Max Laier is bringing in code used in the other BSDs to allow if_xname, if_dname, and if_dunit.
Jeffrey Hsu has been moving the network stack to a multithreaded model; he also has been making networking match certain RFCs, such as Protocol Independent Multicast.
Joerg Sonnenberger has been working on NEWCARD (PCMCIA card support) from FreeBSD 5.
Emiel Kollof got this working in October; a dfports override is available.
David Rhodus and Hiten Pandya have been working on speeding up NFS performance. It is now possible to max out a GigE connection via NFSv3 TCP, on DragonFly. More tuning to come.
Max Laier is working on bringing in OpenBSD's pf, along with ALTQ and CARP.
Prelinking capability was added to DragonFly by Simon 'corecode' Schubert, which allows faster loading of applications that use a large number of dynamic libraries while running, like Qt/KDE. It is not currently hooked into the system or any port building process.
David Rhodus added the pst driver for Promise cards to the GENERIC kernel, so installation to RAID drives using a Promise controller should be possible.
RCNG is a new version of the rc configuration system, taken from NetBSD. More information is available at the NetBSD site. Robert Garrett merged this in. Matt Dillon updated RCNG. You can now check the status of, or start, stop, etc. different system services using appropriate single commands like rcstart, rcstop, rcrestart, and so on. varsym -sa will list service status.
Joshua Coombs is working on the sge - more information at: http://gridengine.sunsource.net/.
Matt Dillon added this new kernel memory allocator, which does not require any mutexes or blocks for memory assignment. More information on how a slab allocator work is at Bonwick94, Bonwick2001, and linux/mm/slab.c in the Linux kernel. This project is complete.
Ryan Dooley patched libc giving stack-smashing protection.
David P. Reese has been separating system calls into kernel and userland versions. He has also removed stackgap allocations for Linux.
David Rhodus (hardware) and Hiten Pandya (setup) has set up repeated builds of the DragonFly system; failures are sent to the bugs@dragonflybsd.org mailing list.
(Matt Dillon) Variant Symlinks allow links to have variables used as part of the path the link points to. This allows per-user and per-environment settings. This project is complete. (man varsym for info)
In October, the DragonFly website received a facelift from Justin Sherrill and Hiten Pandya. It also now has a Team page, and this report.