Ikaros Release Notes

Docs > Release Notes

2007-06-01: Ikaros Version 1.0.0

This is the eight public distribution of the Ikaros kernel and a small set of modules. This version is mainly intended for potential developers and not for more general use.

This distribution is minimal in the sense that only a minimal set of modules are included. The previous modules that are not in this version will be included again in the future when they have been adapted to some of the changes in version 1.0.

More information about Ikaros can be found at the web site.

Major changes in version 1.0.0

1. Command line option
2. Backward incompatibilities
3. Threads
4. WebUI
5. Ikaros Control Files (IKC)
6. Changes in modules
7. New modules
8. New directory structure
9. Optimized math library
10. New XML parser
11. Automatic profiling
12. Other changes

1. Command Line Options

Most of the command line options have changed. Start Ikaros without arguments to see the following list of options.

-w#Start WebUI at port #
-W#Start WebUI in debug mode at port #; list all HTTP requests
-pPrint profiling data after execution
-tUse threads
-TUse threads and list thread allocation
-r#Run in real-time mode with time base # ms
-s#Stop after # ticks
-vVerbose mode
-qQuiet mode
-x List xml after parsing
-XDebug xml parser; print tokenizer data
-mList modules and connections
-cList installed classes
-LList scheduling
-iList miscellaneous information
-aList all

2. Backward Incompatibilities

There have been a number of important changes for version 1.0 which has introduced a number of backward incompatibilities with earlier version of Ikaros. In most cases, the functions still work but will give error messages.

Array Functions

The array functions that have been removed completely. This includes the function CreateArray(), DestroyArray(), CopyArray(), ResetArray(), SetArray(). These functions have been superseded by the following functions:

The new functions follow the conventions of the new math library and are more consistent with the other Ikaros functions. In particular, the sizes are always given in the order x, y as in the Module member functions. The internal data storage of the new functions are also compatible with fast copying operations and optimized math functions. (See Ikaros Data Structures)

Module Creation

The creator function for a module should now pass the parameter list p rather than the name to the base class creator. In addition, the functions GetIntValue("param", default) etc should be used instead of the old GetIntValue(p, "param", default). The new functions can be used anywhere and not only in the creator function, although their use are not recommended in the Tick function.

Other Incompatibilities

In addition:

3. Threads

Modules can now run in separate threads by specifying the -t option at start-up. This makes it possible to have some modules that run slowly over multiple ticks, while other modules are executed on every tick. These modules will exchange data only between ticks when they are not running. For example, if one modules runs over 2 ticks and another modules runs over 3 ticks, they will exchange data every 6 ticks. Modules do not need to be rewritten to take advantage of this new functionality, but it is important that the code in them is thread-safe. The kernel automatically assigns modules with zero-delay connections to the same threads while all other modules are run in separate threads.

4. WebUI

The WebUI is now completely separated from the kernel code. The WebUI is now substantially faster than before on some systems. We recommend the following browsers:

OSBrowser
OS XWebKit (a preview of the next Safari version, http://webkit.org/)
LinuxFirefox
WindowsInternet Explorer with Adobe SVG Plugin

Firefox works on all platforms but is substantially slower. Especially on OS X, WebKit is about 30 times faster at rendering SVG.

Other changes

More information about the Web Viewer can be found in the documentation.

5. Ikaros Control Files (IKC)

The files that control Ikaros now have the file extension ikc instead of xml. The format is still xml but has changed slightly:

The old format will still work in most cases.

All modules now need an ikc file that documents its features. This file is used by Ikaros, but is also used to generate documentation automatically. In the future, these files will be used for a graphical editor. The tentative syntax of these ikc files is described here:

      http://www.ikaros-project.org/2007/IKC10-20070601/

You may also want to look at the ikc files for all the included modules for examples.

6. Changes in Modules

InputQTMovie
new loop attribute to loop a movie; removed a few bugs; added namespaces to avoid collisions with new XML parser.
InputQTAudio
added namespaces to avoid collisions with new XML parser.
OutputQTAudioVisual
added namespaces to avoid collisions with new XML parser.
InputQTMovie
new loop attribute to loop a movie; removed a few bugs
InputJPEG
Much faster. Read once attribute added.
SaliencyMap
Completely rewritten - now more than 100 times faster.
AttentionFocus
Now takes coordinates between 0 and 1 as default.
SobelEdgeDetector
Optimized. Now contains setting for type of edge.
NetworkCamera
Optimized. Can now run asynchronous for best frame rate and lower delay.
ColorTransform
New rgb2lab conversion.
UtilityModules
Fixed general bug in SetSize that prevented some modules to be used with circular connections.
UtilityModules
changed to use the new math library.

7. New Modules

GaborFilter
A steerable filter with many parameters.
OutputQTAudioVisual
module that produces QuickTime files with video and audio
Arbiter
A module that selects betweenits differents inputs based on another signal
Upsample
A module that upsamples an image to the double size.
Downsample
A module that downsamples an image to half its original size.

8. New Directory Structure

The directory structure has changed completely since earlier versions. All source code is now in the Source directory. Each operating system has its own directory with the project files, build scripts etc. The directory Examples contains a set of demo files. All documentation is now in the Docs directory. All documentation can be accessed from the index.html file in the main Ikaros directory. The Extras directory contains some additional code to test some of the functions of Ikaros.

9. Optimized Math Library

A new math library has been added to Ikaros that is compatible with several optimized math libraries such as BLAS and vImage. The functions can be used on any system but will use the underlying hardware optimized libraries when they are available. The math library includes a number of standard mathematical functions optimized for floating point operations and should in general be used instead of math.h. The library also includes a number of vector and matrix functions that are directly compatible with the Ikaros data types.

To use the library, include a "using namespace ikaros;" at the beginning of the file. Examples of the use of the math library can be found in the Extras/Math directory and a short introduction can be found on the web site.

10. New XML Parser

A new XML parser has been added to Ikaros. The new parser produces much better error messages than was possible before. It also better conform to the XML standard. The parser makes many of the new features of the IKF format possible. It is not necessary to know about this new version in most cases since it is not usually used directly by user code.

It is possible to get debug information about the parsed XML file using the command line options -x, which lists the read XML tree, and -X, which prints the tokenizer data.

11. Automatic Profiling

Automatic profiling can be turned on with the -p switch. This will time each call to the tick functions in each module and after execution a table is printed which shows how much time was spent in each module. This is useful to know which modules need to be optimized to get faster performance. Note that timing is done in real time and will not be accurate when Ikaros is run in threaded mode.

12. Other Changes