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 (-) 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 -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.