Linked by Eugenia Loli on Wed 21st Nov 2001 17:39 UTC
Syllable, AtheOS Norwegian ex-Amiga coder Kurt Skauen started designing & writing AtheOS in 1996. Until late 1999, AtheOS (a name derived from the Greek Goddess Athena) used to be called AltOS. AtheOS has even seen complete rewrites along the years, and today is on version 0.3.7. Come with me and see what AtheOS has to offer today to you. All your questions answered and we also include five new screenshots.
Permalink for comment
To read all comments associated with this story, please click here.
Improvements from 0.3.6 to 0.3.7
by Rick on Sun 25th Nov 2001 02:56 UTC

Matt K wrote:

>By the way, I already have 0.36 which I have used slightly. My question is >what are the improvement in 0.37 over 0.36.?

Taken from changes.txt. Sorry it is so long.

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.