Aikido Release Notes -------------------- Please refer to the file COPYRIGHT for information relating to the copyright of this code. Release 1.40 ------------ This release adds: 1. Coroutines. This change incorporates a new reserved word 'yield' into the language and enables it to be used for coroutine support. You can yield any value from a function and then resume the function just after the yield point. Consider this example: function square (start, end) { for (var i = start ; i < end ; i++) { yield i*i } return none } foreach v square (10,20) { println (v) } var f = square (10, 20) do { println (f.value()) f = f.next() } while (typeof(f) != "none") 2. Case limb comparison operators. Normally a case limb uses the '==' operator to compare with the switch value. This change allows one of <, >, >=, <=, ==, !=, in to be used. The 'in' operator allows the case to be in a range. switch (v) { case <10: println ("less than 10") break case in 11..20: println ("between 11 and 20") break case == 50: println ("exactly 50") break default: println ("don't know") break } Release 1.36 ------------ Changes by David Allison for Xsigo Systems Inc. 1. Various bug fixes for CLI usage 2. Added XML parser 3. Added raw terminal control 4. Added XML GUI interpreter (vista) Release 1.28 ------------ Numerous changes by David Allison for Xsigo Systems Inc. The changes include: 1. Ability to lock files into a given directory structure. This can be used for implementing sandboxes in a CLI. 2. Some new functions in the System object. 3. Various bug fixes 4. Update to allow compilation with GCC 4.x (and 3.4.x) 5. Update to Mac OS X for the new GCC 4 based developer tools 6. Change in behavior of backtick expressions. These no longer return the value returned by the return statement, but rather redirect the output and return a vector of strings written by the expression. Release 1.10 ------------ This release includes support for closures. When you pass a function (or class or any other block) to another block or insert it into a vector, a closure is created. This allows the passed block to be called as it maintains the static linkage for it. Release 1.01 ------------ This is the second public release of Aikido. The following bugs have been fixed: 1. Fix for memory leak with use of PipeStream objects. The GCC 3.1+ library contains a stdio_streambuf class that allows an open file descriptor to be connected to a stream. This appears to be missing from older versions of GCC 3.1x. This has a parameter that specifies that the file descriptor should be closed when the object is descructed, however, any value other than 0 causes a memory leak. 2. Reading of password information using getUser() didn't work on Linux. 3. If a socked connection failed, close the file descriptor. The following new features have been added: 1. Output of compiled bytecode using the -c option 2. Reading of compiled bytecode using the -l option 3. Incorporation of mkelf and mkstandalone scripts to allow generation of standalone executables. For Mac OS X, we can now use the latest version of GCC in Panther (3.3) as this includes the stdio_filebuf objects. I no longer have access to Solaris so I have no idea whether the code added for this release works with it. Can someone with access to a Solaris machine test it for me? ----------------------------------------------------------------------------------- Release 1.00 ------------ This is the first public release of Aikido. There are no known bugs in this release. That is not to say that there are no bugs in it, just that I don't know of any. The interpreter is run by typing: % aikido filename.aikido where 'filename.aikido' is the name of the program you wish to run. The 'aikido' program is in the 'bin' directory of the release. Typing: % aikido -help shows you the command options that are available. To test if things are working as expected, copy the following line to a file called 'hello.aikido' println ("hello world") Then, at the shell prompt, type: % aikido hello.aikido You should see the obvious text on the output. There are a number of example programs in the 'examples' directory. These include: 1. a little web server that can interpret aikido programs as web pages 2. an email client (uses GTK+) 3. a couple of examples on use of regular expressions 4. a C parser 5. a simple, but very powerful, calculator The 'tests' directory contains a file called 'test.aikido' that is a fairly extensive test suite for the system. It can be run by moving to the test directory and typing: % aikido test You should see "ALL TESTS PASSED" if all is well. Solaris ------- Aikido works best on Solaris 8 (or higher). It was developed on Solaris and has had the most testing and use there. The best C++ compiler is the Sun Forte compiler version 6 update 2, but GCC is also supported. The performance when compiled with the Sun CC compiler is a lot better than the GCC compiler. You will need to make sure that your Solaris system has the most up-to-date patches for the SUNWlibC package (the C++ runtime library). Here's what a working system says: % showrev -p | grep SUNWlibC Patch: 108434-09 Obsoletes: Requires: 109147-07 Incompatibles: Packages: SUNWlibC This is a Solaris 8 system. Aikido also runs on Solaris 7 but I suggest you should consider upgrading the operating system to Solaris 8. If you need the Solaris 7 version, please make sure you download the correct binary release, or build it from the source release. Linux ----- Aikido has been tested on a couple of versions of Linux. This is not an official Sun product and I only have access to 2 or 3 versions. If it doesn't run on your version, please download the source and recompile it. One thing to note is that Aikido needs version 1.2 of GTK+ loaded on the system. You can find out what version you have by typing: % gtk-config --version MAC OS X -------- The binary Mac OS X version of Aikido is supplied as a zip'ed package. Simply double-click on the package named 'Aikido.pkg' to install it. The package will be installed in /usr/local by default but you can change that to wherever you like in the install program. Wherever you install it, be sure to place the directory containing the 'aikido' program in you path. Mac OS X 10.2 has a prerelease version of GCC version 3. This does not include a required file (<ext/stdio_filebuf.h>) that is present in later releases of the GCC compiler. To compile on the Mac is is necessary to use the executable 'gcc2': % ./configure --gcc=gcc2 This might change when Apple release a later version with a better GCC. The C++ compiler is part of the development tools package supplied as part of Mac OS X. To use GTK+, you will need to download it. GTK+ requires X11 to be installed in order to compile or run. It has been tested with Apple X11 (version Beta 3). At present, there is no native support for the Aqua interface. Windows ------- Although I have ported the software to Windows, it will not run with sufficient reliability to be released.