Since 0.3.6:
				     *MISC*
      o When the "Popup selected windows" option is turned on or the <CTRL>
	qualifier is held while selecting a window the window will now be
	moved to front no mather where in the window you click. In previous
	windows only the window boarders would bring it to front. When
	"Popup selected windows" is not selected you will still have to
	double-click the window boarders or click the "toggle depth"
	boarder-button to bring a window to front. This is to make it
	possible to double-click controls inside a window without moving
	it to front.

      o More (and more human readable) memory usage info from the "sysinfo"
	utility. Also added a -l option that will make it enter a loop that
	repeadatly clear the terminal and refresh the system information much
	like the "top" utility.

      o Changed the window size limits to mean right/bottom border rather than
	with/height in pixels to make it more consistent with the rest of the API. 

      o Major optimizations in all image translator plugin. Greatly improves the
	speed and responsiveness of ABrowse during page loading.

      o Optimized the image loader in ABrowse further speeding up page loading.

      o Windows now get selected no mather what mouse button was used (previous
	versions only selected when clicking with the left button). This solves
	a few problems for aplications using right-click popup menues.

      o Various optimizations in the TCP/IP stack. Both to reduce the CPU usage
	but most importantly there has been a lot of tuning of the timer code
	who dramatically increase the performance on high-latency connections.

      o Changed/fixed the locking cheeme in the ELF executable/DLL loader to
	improve the concurrency of the loader.

      o New system for handling installation of UNIX/POSIX command line
	applications and library packages ported to AtheOS.
	In UNIX most binaries are installed into /usr/bin/* or /usr/local/bin/*
	so the shell have an easy job finding them. Similarily all libraries
	are installed into /usr/lib/* or /usr/local/lib/* and the same goes
	for header-files, man-pages, info-files, etc etc. The problem with
	this approach is that it becomes very hard to remove one "package"
	since it has been blended in with several dozen's other packages.
	In AtheOS each package are installed into a separate directory
	containing it's own bin, lib, man, etc etc directories. This makes
	it easy to maintain a package (unpack it and it's installed, delete
	the directory and it's uninstalled) but it makes it hard for the
	shell to find all the executables since they are spread over a
	lot of directories. In earlier versions this was handled by a
	script that updated the various search path environment variables
	to include all the application directories. This was not an optimal
	solution since the environment was growing rather large and searching
	the long search-paths had a bit higher overhead than just looking in
	a couple of directories. It also required all shells to be restarted
	in order to update their internal environment.
	The new system works by having a separate directory (/atheos/autolnk)
	with bin, lib, man, etc etc subdirectories inside that the "package
	manager" (pkgmanager) will fill with symlinks pointing into the
	corresponding directory inside all the package directories. So
	/atheos/autolnk/bin/ will contain symlinks that point into
	/usr/gcc/bin/*, /usr/make/bin/* and so on. Thus the only entry that
	need to be in the $PATH environment variable is /atheos/autolnk/bin/.
	pkgmanager can also search through /atheos/autolnk/* and remove all
	symlinks pointing to a given package to clean up before uninstalling it.
	If the "package" need to do some additional configuration it can
	include a "pkgsetup.sh" script or executable at the top-level of the
	package directory and pkgmanager will execute this script after
	building the symlink mirros. Similarily it can include a "pkgcleanup.sh"
	script or executable that will be executed after the symlinks have
	been removed again during uninstall.

      o The buffers used by the kernel debugger and for kernel debugging output
	has been redesigned to much better utilize the buffer-space. This means
	that normally all the kernel-output generated during bootup will make
	it to the /var/log/kernel.log file and that it is less likely that
	log-data will be lost during extream load or when large amounts of
	output is generated.

      o More API documentation.


				 *NEW FEATURES*
      o Added a GetTabCount() member to os::TabView.

      o Support for mouse-wheel. Catalin Climov <catalin@climov.com> submitted
	a patch to the PS2 driver adding IntelliMouse wheel support.

      o Generic support for mouse-wheel in the GUI toolkit and specific support
	in various GUI controls like os::Scrollbar, os::Spinner, os::TextView,
	and os::ListView.

      o Support for mouse-wheel in ABrowse and ATerm.

      o Support for non-square views and windows by allowing applications to
	specify an optional clipping region that will be used to define the shape
	of the view or window. Still to low performance to be usefull for things
	like large round windows but can be used to make iregulary shaped views.

      o New os::MenuItem derved class that render a separator line.

      o New members in os::TextView for deleting ranges of text and inserting
	text at a specific position without "manually" moving the cursor and
	selecting ranges.

      o Support for adding restrictive clipping regions to views. The application
	can now pass a clipping region to a view to restrict what areas that
	will be affected by the various rendering commands. This can be used to
	reduce flickering and in some cases to speed up complex rendering operations.
	It can also be useful to clip text rendering to a predefined area since
	it is hard to predict how much space a string will cover on-screen.

      o New API for getting a file-descriptor to any of the ELF images loaded
	by a process aswell as to the directory where the executable was loaded
	from. This makes it very easy to get to the image files to load resources
	from them and it also makes it easy to make an application "position
	indepentent" since it is possible to open data files with paths that
	are relative to the directory where the executable is located. Now
	applications that need extra data files can store the executable and
	all the data files in a directory or directory-tree and the application
	can find it's data files no matter where the user move the directory
	since it will always open the data files relative to where the executable
	are.

      o A new function named get_image_id() that returns the image-ID of the
	DLL or executable containing the calling function. This is ueseful
	in conjunction with the API for getting a file-descriptor for a
	image file. This makes it possible for a DLL to easily find it's
	own DLL ID in order to load resources embedded in the DLL. The
	function will use the address of the caller to determine which
	image it lives in.

      o New constructors and SetTo() members in the various highlevel
	filesystem classes that accept open file descriptors.

      o The various highlevel filesystem classes will now automatically
	expand paths starting with "~/" with the current users home
	directory and will open paths starting with "^/" relative the
	the directory where the applications executable is located
	independent of the applications current-working-directory.

      o New classes for reading and creating resources within executable
	and DLL images aswell as a command line tool for adding, listing,
	and extracting resources embedded in executables and DLL's.

      o New class for parsing command line options. The class greatly
	simplify parsing command line options in CLI programs. It can
	also help the application printing a "--help" screen by automatically
	generating a help-screen for the command-line option by intelligently
	formatting the page to be easily readable with the current terminal
	width.

      o New regular expression searching class. The class help you to
	do regexp searches and matches on strings and support extracting
	sub-expression results in the form of sub-strings or by using
	the resulting substrings to expand a template string.

      o Support for TCP keepalive packages in the TCP/IP stack. Earlier
	versions didn't send or replied to keepalive packages so idle
	connections used to be cut by the peer after a couple of hours.

      o Support for disabling kernel debug output to a serial port. It
	is now possible to disable the serial output entirely by setting
	the baud rate to 0. It is also possible to change the baud rate
	and serial-port used at run-time with kernel-debugger commands
	from a local debug terminal. Note that the default baudrate has
	now been changed from 115200 to 0 so the serial output is disabled
	by default. To enable it again you can add "debug_baudrate=115200"
	to the kernel-line in "/boot/boot/grub/menu.lst" (or to temporarily
	enable it you can run the kernel-debugger localy with "dbterm -l"
	and set the baudrate with the "dbspeed" command).

			          *BUG FIXES*
      o Fixed a render bug in the CPU monitor.

      o Fixed a bug in os::Font causing the size to be wrong when set to 10.0.

      o Fixed a bug in os::TextView causing glyphs to be rendered to high
	so the top of some glyphs was cut in some fonts.

      o Fixed a bug in os::TabView::DeleteTab(). When deleting the currently
	selected "tab" the view associated with the new selection sometimes
	got hidden.

      o Removed a memory leak from the os::TextView class.

      o Fixed a bug in the handling of double precision floating point values
	in the os::Variant class. Older versions rounded all double values to
	it's integer value before returning it.

      o Fixed a bug in the PS2 mouse driver that often caused a total lockup
	of the GUI.

      o Removed some memory leaks in the GIF and JPEG image translator aswell
	as the image loader in ABrowse.

      o Fixed a crash-bug in the ABrowse image scaling.

      o Fixed a bug in the history-system in ABrowse. The history was not properly
	updated when following links to anchor points within the same page.

      o Fixed some bugs in the ABrowse HTTP loader that caused premature aborting
	of a page-loading to leak memory and mix the content of the aborted page
	and the next loaded page.

Since 0.3.5:
      o Fixed some bugs in the escape-code parsing in the ATerm terminal emulator.
      o Fixed a race condition in AFS potentially leaving files with link-count
	of 0 in the FS if a file/directory are attempted to deleted and moved
	simultanously by two different threads.
      o Fixed a race condition in the kernel potentially causing the parent process
	to segfault during a fork().
      o Removed sevaral memory leaks from the kernel.
      o Optimized the event system in the TCP/IP stack.
      o Fixed a double-free bug trigged in the kernel when reaching the maximum
	number of file descriptors.
      o Fixed a bug in ABrowse causing it to constantly reloading webpages using
	dropdown menues for page navigating.
      o ABrowse now handle relative HTTP redirections.
      o Fixed a bug in the find_packages.sh script causing it to not correctly set the
	MANPATH variable.
      o os::TextView no longer forget to reset the mouse pointer when deleted while the
	I-beam cursor is active.
      o os::TextView no longer screw up tab-navigation when selected with the mouse.
      o Fixed a race condition in the os::Menu class.
      o Fixed a few render bugs in the software mouse pointer.
      o Reverted to the BIOS when setting up screenmodes on Matrox G100 gfx cards.
	The native mode-setting does not seem to work for this card.
      o Updated the nVidia driver to the latest version from Joseph Artsimovich.
	This fixes a bug causing PCI cards to not be detected unless they appear
	last in the PCI list and solves a problem with the mouse-pointer sometimes
	being invisible or garbled (by disabling it and fallback to SW pointer
	until the real problem is solved).
      o Made uname() ask the kernel for version information rather than returning
	hardcoded values from libc.
Since 0.3.4:
				     *MISC*
      o New web browser! AtheOS have finally got a high quality
	graphical web browser. I have ported the HTML parser/renderer
	used in Konqueror (KHTML) to AtheOS and written a web browser
	based on that renderer. The result is a very decent web browser.
	KHTML have support for both CSS and javascript and so have the
	AtheOS web browser. The port is not 100% complete but the vaste
	majority of features are supported by now. Many thanks to the
	KHTML team at KDE for making KHTML! It's a great piece of software.
      o Plugin based data translation kit. The kit is not finished yet and
	will probably change quite a bit in the furture, but it is included
	now as it is used by the new web browser to load images.
      o The desktop manager will not display a login prompt if started as non-root.
      o Added an ViewScrolled() hook to the os::View class that can be overloaded
	to be notified when the content of the view is scrolled.
      o os::Looper threads inherits the name from the looper.
      o Appserver window threads inherits the name from the window title.
      o Major overhaul of the os::ListView class:
	      o Added support for variable-height rows (each element can have
		different height).
	      o More flexibility when inserting rows.
	      o List view elements can be made non-selectable.
	      o The right edge of the last column is "glued" to the right edge
		of the view and the with of the column content is evaluated
		when adjusting horizontal scroll-bar.
	      o It is possible to disable the column-header (useful when using
		it as a single-column listview).
	      o Fixed some bugs regarding the horizontal scrolling.
	      o Lot's of optimizing. The listview is now much more efficient
		in the handling of selection ranges and repainting.
      o Major overhaul of the os::TextView class:
	      o Gives the application much more control over the content of the
		editor, it's cursor position, and selection regions.
	      o Set/get function for the cursor position.
	      o Members for programmed selecting areas of text.
	      o Members for retrieving of the selection boundaries.
	      o Character count limiting.
	      o It is possible to intercept raw keyboard and mouse events by
		overloading the os::TextView class (didn't work before since
		all user input was handled entirely by a child of the os::TextView).
	      o Much more flexible event system where many new conditions
		generate events (cursor moved, focus lost, enter pressed in
		single line editor, max-size reached, max-size left, etc etc).
		The application have full control over what events it wants
		the view to generate.
	      o Much less "flickering" when repainting.
      o Updated the scrollbar class. Added arrow buttons and changed the rendering
	a bit. Also made the know jump "one page" when click beside it.
      o Added a "variant" class to the toolkit. The os::Variant is a container that
	can hold most basic types (like bool, int, float, etc etc) and some higher
	level objects (like strings, points, rectangles, colors, etc etc). The variant
	class is used as the "value" of the os::Control class to make it easy to
	support a wide range of GUI controls through the os::Control interface.
	The os::Control and os::Invoker classes is also sligtly changed with various
	new virtual "hook" members to make it simpler for inherited classes to keep
	track of changes made to the control by the application.
      o Easier file-browsing in the standard file-requester.
      o Upgraded "tar" to Version 1.13.19
      o Suport for a wide range of nVidia cards added through a video
	driver submitted by Joseph Artsimovich.
      o Swedish keymap submited by Tord Jansson.
      o German keymap submited by Daniel Popescu.

			          *BUG FIXES*
      o Fixed a bug in the lock_mem_area() kernel function. It sometimes
	failed to map all pages in the locked area to physical memory.
	This could lead to a system-crash in low-memory situations.
      o Fixed a kernel-crash bug trigged if a valid pagfault could not
	be served due to running out of memory or due to an IO error.
      o More robust handling of invalid messages sendt to the appserver.
	This makes it much less likely that a broken/malicious application
	will crash the appserver and bring down the GUI.
      o Fixed a bug in the relocation of executables and DLL's. The bug
	caused the GCC exception tables to be invalid and often made it
	impossible to catch C++ exceptions.
      o Fixed a bug in the script building the distribution archive.
	The old script faile to copy the SUID bit on executables thus
	rendering utilities like "su" unusable.
      o Made some changes to the disk-geometry detection in the BIOS
	disk device and relaxed some of the validation in the FAT
	filesystem (seems like many volumes have a total-size that
	reach 1 cylinder outside the partition). This might solve
	some of the problems people have had mounting a FAT partition
	to get to the base tarball.

Since 0.3.3:
				     *MISC*
      o Segmentation faults are now handled by sending SIGSEGV to the faulty
	thread rather than simply terminating it.
      o Changed the mount and unmount utilities to accept paths with trailing
	slashes.
			          *BUG FIXES*
      o Fixed various bugs in the AFS filesystem driver.
	The AFS filesystem does not handle failed memory allocations
	and will spin forever retrying the allocation if the system
	run out of memory. I have now given the FS a full overhaul
	including a rewrite of the transaction-system to be able to
	safely back out of all operation if an error should occure
	in the middle of a journaled transaction. The new FS is also
	better optimized than before. I have read through the FS source
	line-by-line looking for bugs and fixing everything that
	looked suspicious but since so much have been changed I want
	to test the new FS over a longer periode of time than permitted
	before this release before releasing it. I have however
	back-ported the most important bug-fixes to the old FS and
	included that driver instead.
      o Removed some races in the realtime-clock handling.
      o Changed the serial-mode from 8n1 to 7n2 when communicating with
	the serial mouse. This should hopefully make the mouse driver
	work with Logitech serial mouses (Thanks to Linus Almstrom for
	pointing out what the problem was).
      o Swapped the device names of COM1 and COM2. They have been confused
	in previous releases.
      o Fixed a bug in the handling of global contructors and destructors.
	In some cases global contructors in a module was called more than
	once. This caused among other things the main-thread in the
	application-server to lock-up (making it impossible to start new
	GUI applications) when reloading plugins (for example when changing
	the preferred window-decorator).
      o The paint-message sendt to all views after changing the screen
	mode could previously request the full size of the view to be
	repainted even if the visible size was restricted by it's parent.
	This caused the ListView class to send an enormous amount of render
	commands to the application server which was buffered up and could
	end up consuming all memory and causing a system lockup. The update
	rectangle is now clipped to the parent view to solve this problem.
      o The accelerated gfx drivers is now included on the install boot
	floppies. Since those where missing from the previous disk-set
	it was impossible to install AtheOS on a machine with a S3 Virge
	video card (since it don't support Vesa20).
      o Added search paths to the "jed" editor and the various inetutils
	like "telnet" and "ftp". In previous releases there was no path
	to those binaries until the "/system/config/find_packages.sh"
	shell script had been executed.
      o Fixed the screen-shot support. The appserver that was included
	with the 0.3.3 release was compiled without screenshot support.
	
Since 0.3.2:
				 *NEW FEATURES*
      o New very efficient API for Thread Local Storage (TLD).
      o Thread safe "errno" variable. Each thread now have their
	own "errno" variable to make it possible to reliably
	check the error code returned by syscalls in multi
	threaded applications. This is implemented using the
	new TLD API and is almost as efficient as the old
	"global" errno.
      o New higlevel filesystem API. There is now a new set
	of C++ classes building a more highlevel FS API than
	the raw POSIX functions. There is also a few new
	syscalls primarily ment to be used internally by
	these classes but that can be used directly by
	applications aswell. The most important is "based_open()"
	that works like "open()" but with the additional
	capability of accepting a "temporary" working directory
	from wich the path passed in should be relative.
      o Node watching. This makes it possible for applications
	to monitor changes in the filesystem like files being
	created and deleted aswell as changes to individual
	files and directories like file-size changes, date-stamp
	changes and attributes being added, removed or modified.
      o The desktop manager use node-watching to keep the content
	of directory browsers current.
      o It is now possible to disable multi-selection and automatic
	sorting in the os::ListView.
      o Support for reordering/disabling of columns in os::ListView.
      o Better notification system to allow views to track changes
	made to the text-font.
      o Reference counting on the os::Font object to make it
	possible to share font objects between views.
      o The controlling PTY for a process can be opened through "/dev/tty".

				     *MISC*
      o Optimized the clipping list handling in the application
	server. The GUI can now handle a lot more windows/views
	before a noticable slowdown when moving windows around
	occure.
      o Renamed some of the structures associated with the
	os::Font class.
      o Various improvement's in ATerm (the terminal emulator).
      o Various improvements in the CPU and memory usage meter's
      o Moved semaphores into "process-local" namespace-space. Earlier
	all semaphore ID's was globally accessible and was both
	a security problem and a technical problem especially during
	fork() since the new process continued referring to the old
	semaphores. It is still possible to greate global semaphores
	by passing an extra flag to create_semaphore().
      o More documentation.

			          *BUG FIXES*
      o Fixed a few small bugs in the AFS attribute system.
      o Fixed a deadlock in the os::Bitmap class.
      o Fixed a lot of bugs in the os::View::ScrollRect() member.
	The previous version proved to be rather broken and corrupted
	the moved rectangles when the scrolled area was partly covered
	by other windows. It also had a race-condition that could
	cause the appserver to crash.
      o Fixed a few bugs in the os::ListView selection system.
      o Fixed a few race conditions in the kernel.
      o Made STL and GCC exception-handling thread-safe. I implemented
	this in the EGCS compiler before but it appeared that the
	modifications got lost during the transition to GCC-2.95.2.

Since 0.3.1:
				 *NEW FEATURES*
      o Implemented the FIONREAD ioctl() command to TCP-sockets,
	pipes, and PTY's.
      o Support for logical partitions in the partition editor.
      o Support for renaming device-nodes from within device
	drivers.
				     *MISC*
      o Better error handling in the screen-mode selection
	system in the appserver. The application server will
	now search for a functional screen-mode if the selected
	one can't be set. Earlier versions always felt back
	to 640x480 16bpp and caused the boot-floppies to fail
	if that mode was not available. This seems to be the
	last obstacle in running AtheOS under VMWare and several
	people have now anounced sucessfull AtheOS installation
	under VMWare.
      o Configurable default attributes in ATerm. The fg/bg color
	and other display attributes can now be set through a
	command line option or the ATERM_ATTR environment variable.
      o Modified the internal kernel->driver ioctl() interface
	to allow device drivers to know whether ioctl() was
	called from the kernel itself or from user-space.
	This was necessary to make it possible for drivers
	to validate pointers received from user-space whithout
	denying the kernel to pass inn kernel-addresses.
      o Started to document the kernel-driver API.

Since 0.3.0a:
				 *NEW FEATURES*
      o Most of the GUI components now can be disabled (grayed out)
	when they are inoperable.
      o The os::TextView control now send a notification message
	when the control loose focus to allow the application
	to learn when the user is done editing even if he don't
	hit the enter key.
      o A selection can now be made in the os::DropDownMenu by
	click-drag-release the mouse. Earlier two clicks was
	requiered. One to open the menu and then another to do
	the selection.
      o Exported a few thread safe IO functions from the kernel.
	This have the same semantics as read()/write()readv()/writev()
	but are postifxed "_pos" (ie. read_pos()) and take a file
	position from where to read/write so multiple threads
	can access the same file descriptor without being concerned
	about someone else moving the current file-position.
      o Implemented readv() and writev() in the kernel (they have
	been emulated in libc in earlier versions).
      o Added a "-kernel" option to GCC to make it easyer to set
	it up for building kernel-drivers. If "-kernel" is given
	it will automatically define __KERNEL__ and it will link
	the driver against the kernel instead of libc.

				     *MISC*
      o AtheOS now have it's own partition-editor. It is a GUI
	tool that will be part of the installer that will eventually
	be used to install AtheOS. I screwed up when implementing
	support for logical partitions and must now redesign the
	GUI quite a bit but I have disabled support for logical
	partition and included the partition editor anyway since
	primary partitions works ok.
      o The appserver now support Vesa20 cards where the frame-buffer
	is not page-aligned (to be able to boot under VMWare).
      o The kernel takes two new boot parameters making it possible
	to restrict the available user address-space and allow AtheOS
	to be booted under VMWare.

			          *BUG FIXES*
      o C++ exception handling now function correctly in code that
	has been loaded dynamically (through load_library()). This
	should hopefully solve the problems with the S3 Virge driver
	sometime crashing the application server when it probed
	for the card without finding it (it then throw an exception
	that due to the exception-handling problems was not catched).
      o Logical partitions are now interpreted correctly by the kernel.
      o The BIOS disk device now detects if the BIOS can not read/write
	across cylinder-boundaries even when using LBA mode and will
	then start truncating all accesses to fit within the starting
	cylinder.
      o The AFS filesystem now clears the two first sectors of the
	partition when formatting to avoid having the FS wrongly
	detected as the FS-type that lived on the partition before
	it was formatted to AFS.


Since 0.3.0:
				 *NEW FEATURES*
      o Added support for embeding of stage1.5 bootloader into
	the "bootloader area" of AFS, FFS, ReiserFS, etc etc.
      o Added support for logical partitions.
      o os::Button, os::TextView, os::Spinner can now be disabled
	or "grayed out".
      o It is now possible to force the min/max preferred width
	of os::StringView (like os::TextView and os::DropDownMenu)
	to a preset number of characters.

				     *MISC*
      o Modified the BIOS disk block-device to only list one
	node per disk. Earlier two nodes was added, one for
	LBA access and one for CSH access. The reason was that
	some BIOS's report that they has LBA support without
	actualy having it making autodetection impossible.
	Now AtheOS attempts to autodetect but can be forced
	to use a particular mode on each disk through the kernel
	parameters.
      o Attempt to solve problems with IO errors when writing
	a large number of sectors by falling back to write 1
	sector at a time whenever an error occure. This is just
	a temporary solution till the real cause is found.

			          *BUG FIXES*
      o Window no longer resize to 1 pixel larger that set by
	os::Window::SetSizeLimits().
      o os::Font::GetStringLength() sometimes included the last
	"partial" character even when "bIncludeLast" was false.
      o os::Spinner::GetPreferredSize() based the preferred
	width on the current height rather than the preferred
	height. This caused preferred width to change when
	the layout system initialized the height and caused
	some bad depenency problems in the layout code.
	

Since 0.2.1:
				 *NEW FEATURES*
      o Ported GRUB to AtheOS (or was it the other way around? :)
	and modified the kernel to be multiboot complient so it
	can be booted with GRUB. The port include a read-only
	version of AFS so it is possible to boot AtheOS directly
	of a native partition whithout the need to make ugly
	kernel block-list's for the boot-loader like for example
	with LILO.
      o Moved the BIOS block-device and the AFS filesystem out
	of the kernel since they can now be loaded separatly
	by the bootloader.
      o Changed the layout of AFS to make space for a boot-block
	and a boot-loader area. The new FS-driver is backward
	compatible with old filesystems but old kernels will not
	be able to mount new filesystems.
      o Optimized the layout of block-runs in AFS to reduce
	fragmentation and improve the user-data to meta-data
	ratio aswell as increase the maximum filesize. This
	does not affect the way the FS is read so there is
	no compatibility issues involved.
      o Fixed a bug in AFS that caused block-allocations to
	fail in some cases even if sufficient space was available
	on a heavily fragmented disk.
      o Added a hook for probing of filesystems in the FS API and
	implemented autoprobing of FS-type in mount(). The autoprobe
	functionality is also exported to user-space so applications
	can check if there is a FS driver for a given block-device
	or FS-image file installed on the machine whithout actually
	mounting it.
      o Implemented an API for retrieving mount-points of currently
	mounted filesystems and API's for retrieving various information
	like disk-label and size/usage of a mounted filesystem. Also
	modified the GNU fileutils "df" tool to use those API's to
	display usage info on mounted filesystems.
      o New API used by fs-drivers to initiate access to the block
	cache that will keep track of which devices/inodes are used
	for backing of other FS's. It is therefore now able to fail
	and return an apropriate error code if someone attempts to
	mount a device twice.
      o Implemented API's for retrieving information about message
	ports existing in the system and a tool (ls_ports) for listing
	various information about message ports.
      o Extended the semaphore-info API and wrote a tool (ls_sema)
	for listing various information about existing semaphores.
      o Rewrote the ELF loader in the kernel to remove some section
	alignment restrictions from the previous loader. This means
	that the executables is a bit smaller and that AtheOS can
	now use the standard linker-scripts from the GNU linker.
	The new ELF loader should also be more robust against broken
	executables.
      o Added support for floppy drives to the BIOS block-device.
	This should *really* be replaced with real floppy driver
	since it stop scheduling for *way* to long when calling
	into the BIOS for reading tracks of a floppy.
      o Implemented a RAM filesystem and various tools to aid making
	boot-floppies. The filesystem can initialize itself from a
	image-file on another FS or from a boot-module loaded by the
	boot-loader. The various tools can create a disk-image, split
	a compressed disk-image to spread it across multiple floppies
	and a program that can be used as the "init" script and will
	bootstap the system from a set of floppy disks.

				     *MISC*
      o Reorganized the source-tree. The new tree is more hierarchial
	built and with makefiles in all directories that will build
	the current directory and all subdirectories.

			          *BUG FIXES*
      o Fixed a critical bug in the initialization code that caused
	the kernel to dereference a NULL pointer and hang/crash if
	the memory-size was not 4MB aligned.
      o Allocates the BIOS disk-device IO buffers on a properly aligned
	address.
      o Fixed a bug in the BIOS block-device causing it to read/write
	sectors across cylinder boundaries and then fail on some BIOS'es
      o Fixed a bug causing the kernel to dereference a NULL pointer and
	hang if the memory-size was not 4MB aligned.
      o Fixed a few bugs in the os::LayoutView class causing child views
	to (in some cases) be smaller than it's max-preferred size even
	when more space was available.
	
Since 0.2.0:
				 *NEW FEATURES*
      o Added a Slider controll to the GUI tool-kit.
      o Added a progress-bar controll to the GUI tool-kit
      o Added a Labeled Frame controll for grouping of other components.
      o New layout system. The GUI toolkit now have a "semi-advanced"
	layout kit for making dynamic GUI's. The layout system greatly
	simplify writing font-sensitive apps and making windows relayout
	when resized. The layout-kit is still a bit "experimental" and
	will change a bit over the next few releases.
      o The os::Window class now support size-constraints.
      o It is now possible to set various alignment rules on a windows
	size and position. Useful for example when rendering text to
	make the window "snap" to the font-size. ATerm and Emacs is
	rewritten to take advantage of this.
      o The window flags can now be changed on-the-fly.
      o The view::GetMouse() now send a request to the appserver so it
	will get the most recent value even if the event loop is not
	running.
      o Added an API for setting the mouse-pointer position.
      o The os::Spinner control now wrap the mouse when hitting
	the top or bottom border of the screen to make it easier
	to make large changes to the value.
      o Added API's for setting the mouse-pointer image. ATerm,	Emacs
	and the TextView control now set a I-beam pointer when above the
	text area, and the appserver change the mouse-pointer whenever
	the cursor is abow any of the resize-edges/corners of a window
	to indicate that it is possible to resize and in what direction
	it can be resized.
      o Configurable fonts. Added support for font configuration in the
	appserver and libgui and fixed up the font panel in the GUI preferrence
	utility to work with the configuration system.
      o Rescan button in the font configuration panel for rescanning of
	the font directory when installing/removing fonts without having
	to restart the application server.
      o Full support for UTF8 unicode text.
      o Kernel timers. Device drivers kan now register a callback that
	will be called once after a given periode of time or periodically
	at a given frequency.

				 *NEW DRIVERS*
      o AtheOS now support the RealTek RTL8129/8139 ethernet cards.
      o Native FAT filesystem. This is a reqular AtheOS filesystem
	that access the partition through the block-cache instead
	of calling DOS functions like the old FAT FS. It is therefor
	*much* more efficient and it supports long filenames without
	the use of mapping tables. It also remove the last dependency
	on DOS.

				     *MISC*
      o French keymap (Submitted by Herve PARISSI).
      o Rewrote the GUI Preferrence utility to use the new layout system.
      o Upgraded to FreeType 2.0 beta 8. This version have "autohinting" that
	greatly improve the quality of fonts that are missing hinting.
      o A few new API functions letting applications take advantage of tuned
	font sizes embedded in truetype fonts and to learn what sizes are
	available in a bitmap font.
      o Added support in the appserver for bitmap fonts through FreeType.
      o Rewrote the AFS filesystem to use memory areas instead of kmalloc()'ed
	buffers in the journal. It then avoid allocating large contigous
	ranges of physical memory, and thus greatly reduce the risk of running
	out of memory due to fragmentation.
      o Optimized the way blocks are flushed to gain more journal space in
	the AFS filesystem. This reduce the pauses caused whenever the FS
	run out of journal-space during meta-data intensive operations and
	has to force out some blocks in order to finish old transactions.
      o The first 4KB page is unmapped to catch NULL-pointer dereferences
	in the kernel.
      o Much better argument validation in system calls to avoid buggy/malicious
	programs crashing the kernel.

			          *BUG FIXES*
      o The window title-bar no longer disapear when disabling one
	or more of the title-bar buttons.
      o Fixed some render-bugs in the drag-and-drop system.
      o Fixed a bug in the TCP/IP stack causing it to send wrong MSS.
      o Fixed a few NULL-pointer dereferences in the kernel (submittet by Jesper Hansen)
      o Fixed yet another deadlock bug in the block-cache.

Since 0.1.4b:
				     *MISC*
      o Renamed the members in the os::Rect class (MinX/MinY/MaxX/MaxY to left/top/right/bottom)
      o Renamed the members in the os::Point class (X/Y to x/y)
      o Renamed the os::Point2 to os::Point
      o Changed all coordinates from "int" to "float".
      o Added integer-versions of os::Rect and os::Point (Named IRect and IPoint)
      o Made the os::Rect::Width() and os::Rect::Height() return
	(right-left)/(bottom-top) rather than (right-left+1)/(bottom-top+1).
	os::Window::ResizeTo() and os::View::ResizeTo() is changed accordingly.
      o Fixed various members of os:: classes to take const references to
	objects like os::Point and os::Rect rather than a copy of the object
      o Replaces a few "const char*" to "const std::string&" and a few "char*"
	to std::string in the GUI classes.
      o Rewrote a few GUI components and the window-decorators to produce less
	flickering when resized.
      o Optimized the backdrop rendering in the desktop-manager.
      o Added a new appserver interface class for setting various preferences,
	the class is named os::AppserverConfig.
      o Support for moving windows to front when selected, without
	double-clicking the border or click on the "depth" button.
      o get_thread_id(name) now actualy search for the name if not NULL unlike
	the previous versions where it always returned the callers thread ID.
	It still return the ID of the calling-thread if name is NULL.
      o Various cleanup and small optimizations in the kernel.

			          *BUG FIXES*
      o Fixed Emacs shutdown-sequnce so it manage to save it's window
	size and position.
      o Fixed a starvation problem where a high-priority network-thread
	started spinning when out of memory, blocking out any threads
	that might be able to get more mem by shrincing the disk-cache.

Since 0.1.4:
				 *NEW FEATURES*
      o Support for ISA DMA in the kernel.
      o Implemented chroot()
      o Implemented sync()
      o Fixed the user-attributes functions in AFS.
      o Changed exec() and load_library() to use the DLL_PATH environment
	variable when searching for DLL's

				     *MISC*
      o Optimized the block-cache memory utilization. The 0.1.4 version
	wasted almost 50% of the RAM it used, the current version is down
	to 1-2% overhead. It also solved a problem with the 0.1.4 kernel
	getting the kernel-heap fragmented and ended up running out of
	usable RAM. Another benefit with the new cache is that it lives
	in a spearate memory area and is not interleaved with kmalloc()'ed
	memory so a random buffer-overflow bug in the kernel is less
	lightly to trash the cache and cause disk-corruption.

			          *BUG FIXES*
      o Fixed a lot of dead-lock bugs in the VM/cache system.
      o Fixed a bug in select() on TCP-sockets. select() whould not
	wait for data to be ready for reading on a non-blocking socket.
      o Fixed a bug in the TCP send() function causing EWOULDBLOCK to
	be returned even if there was free space in the buffer of a
	non-blocking socket.
      o Fixed a bug in the TCP/IP stack causing recv() to block even
	if the receive buffer was empty and the other end had closed
	the socket.

Since 0.1.3:
				 *NEW SOFTWARE*
      o The Python programming language.
      o RSync

				 *NEW FEATURES*
      o Rewrote the block cache to be dynamically resized to better utilize
	available memory.
      o Changed the readahead scheeme to better handle cases where blocks
	are fetched lineary but backwards.
      o Redesigned the locking scheeme in the block-cache to allow threads to
	lookup old blocks while new blocks are being loaded and to allow
	loopback mounting of filesystem.
      o The memory monitor displays total cache size and dirty cache size.
      o Added readv()/writev() functions to the filesystem and device-driver
	interface
      o Added support for select() to the device-driver interface
      o Ethernet drivers can be replaced at runtime (without rebooting).
      o Changed slashes to back-slashes when accessing the underlying FS in DOSFAT.
      o Extended the screen mode API to make it possible to set the
	refresh rate and display size/position.
      o The Matrox GFX driver support hardware pointer on Millenium cards and
	supports adjusting refresh-rate on Gxxx cards.
      o Fixed a few bugs in the S3-Virge driver and added support for
	adjustable refresh-rate.
      o The screen-mode configureation is properly saved.
      o The color configuration is properly saved.
      o Added a GetIdleTime() member to os::Application to make it possible
	to query the time since last input event (For screensavers, etc)
      o The bmview utility can now view png bitmaps
      o os::TextView automaticly add scrollbars when needed.
      o Editing in os::TextView can be undone (<LALT>-<BKSPC>)
      o Optimized os::TextView and reduced the flickering when inserting text.
      o Added a "numeric only" flag to os::TextView
      o os::DropDownMenu can be canceled by hitting outside the selection box
      o Reduced the flickering in the os::DropDownMenu
      o Improved mouse handling in os::DropDownMenu and os::Menu
      o Menus (regular and dropdown) no longer cause the active window to
	loose it's "focus highlighting" 
      o The os::Spinner view now accept input from the edit-box
      o Better optimized os::Message
      o Hotkeys for terminating applications and closing windows.
      o API to iterate the contents of an os::Message
      o API to delete individual elements in an os::Message


			          *BUG FIXES*
      o Initiate the TLD pointers on childs of a forked process.
      o Fixed a bug in the "#! interpreter" handling in execve()
      o Fixed a bug in os::Slider.
      o Fixed a bug in the appserver config file parsing that
	made it fail to load the color configuration.
      o The "ALT-Tab" window selction menu is now centered on all
	screen modes
      o os::Menu::GetItemAt( int nIndex ) always returned NULL.
      o Fixed a bug in the appserver crashing it when a "active"
	window on a "non-active" desktop was closed.
      o get_thread_id() does no longer crash when called from a
	forked process.

Since 0.1.2:
				 *NEW SOFTWARE*
      o Port of the QMail mail-server.
      o New port of Bind (with named, and all other binaries/libraries).

				 *NEW FEATURES*
      o Unix style named pipes (mkfifo())
      o File record-locking (flock())
      o Loadable network drivers.
      o Added various ioctl() methods for configuring network interfaces.

				     *MISC*
      o Major speedup on normal pipes (created with the pipe() syscall).
      o Major cleanup of the network stack, mainly the ARP protocol to
	allow more than one active ethernet interface.
      o Support for non-blocking UDP-sockets.
      o Almost total rewrite of the IP routing.
      o Major cleanup of the PTY filesystem. It now handle <CTRL>-d properly.
      o Various cleanup in the different API's used by device-drivers and file-systems.

			          *BUG FIXES*
      o Fixed a bug in the Vesa2.0 and S3-virge video driver. The bug caused
	the memory-area used to access the frame-buffer to be unaligned
	(not on a 4K boundary), and made the appserver miss the
	frame-buffer with up-to 2048 bytes.
      o Added checks in create_area() and clone_area() to detect attempt
	to create areas on a not page-aligned address, and fail if so.
      o Fixed some memory leaks in the kernel.

Since 0.1.1:
				 *NEW FEATURES*

      o Support for partition's on hard disk's. It is now possible to create a
	AFS filesystem on a partition. no need to set aside a whole harddrive.
      o get_system_info() will now fill out every members of the
	SystemInfo_s structure.
      o A new plugin API in the appserver making it possible to replace the
	window border-decoration.
      o Configurable keybord settings (keymap and timing).
      o Configurable default colors used in the GUI.
      o New preference program to configure the the GUI apperance
	and keyboard settings.
      o The View class now remember it's "hidden" state so it is safe
	to call Show() before it is added to a window.
      o A new Start() member in the Window class making it possible to start the
	message loop without making the window visible.
      o New GUI control: There is now a TabView available in the GUI toolkit.
      o Added Invalidate( bool bRecursive ) and Invalidate( const Rect& cRect,
	bool bRecursive ) members to the view class.
      o The appserver now respects the WND_NOT_RESIZABLE flags for windows.
      o TextView can now be set in read-only mode. It will then stop handling
	mouse and keyboard input, and pass those events back to it's parent.
      o Read only mode for the DropDownMenu. When set in read-only mode, the
	menu will be opened when the user click in the edit box.
      o Various improvements and bug-fixes in the high-level message passing
	system. It is now possible to do syncronous send/reply communication
	with the Message and Messenger classes. It is also possible to use the
	Messenger class to pass Message objects without involving a Looper.

				     *MISC*

      o Redesigned large parts of the libgui.so/appserver message protocol to
	make it easier to add new appserver interfaces. The changes do not
	affect the external API's.
      o More API classes have been documented.
      o Documentation of the coding-style used in AtheOS.

			          *BUG FIXES*

      o Fixed a bug in the Vesa20 video driver that scrolled the display
	vertically, making it wrap.
      o Removed a race condition in the Window constructor and destructor.
      o Bugfix in the NE2000 driver. It used a bad index when looking up
	the vendor name of a PCI card.
      o Fixed a bug in the kernel making it crash when disabling SMP.
      o Rewrote the quit message handling in the Looper class to
	avoid some deadlocks.
      o Verious bugfixes/improvements in the TextView class.

