Docs > Release Notes
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.
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
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 |
-p | Print profiling data after execution |
-t | Use threads |
-T | Use threads and list thread allocation |
-r# | Run in real-time mode with time base # ms |
-s# | Stop after # ticks |
-v | Verbose mode |
-q | Quiet mode |
-x | List xml after parsing |
-X | Debug xml parser; print tokenizer data |
-m | List modules and connections |
-c | List installed classes |
-L | List scheduling |
-i | List miscellaneous information |
-a | List all |
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.
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)
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.
In addition:
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.
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:
OS | Browser |
---|---|
OS X | WebKit (a preview of the next Safari version, http://webkit.org/) |
Linux | Firefox |
Windows | Internet 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.
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.
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.
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.
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.
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.