Agena is an easy-to-learn procedural programming language designed to be used in scientific, educational, linguistic, and many other applications, including scripting. Its syntax looks like very simplified Algol 68 with elements taken from Lua and SQL. The interpreter provides fast real and complex arithmetics, efficient text processing, flexible data structures, intelligent procedures and package management, plus various configuration facilities.
What is new in this release:
- 'try/catch': explicit specification of an error variable right after the 'catch' token is now optional. If no error variable is given, then the error message is automatically stored to the local 'lasterror' variable, and the 'then' keyword must be left out:
> error('oops !')
- The 'try/catch' statement sometimes did not work in procedures (unassigned error variable). This has been fixed.
- The new 'net.wget' function downloads HTML pages from the Web.
- Tuned 'skycrane.counter' by 10 %. The function now optionally applies the Kahan-Ozawa instead of the original Kahan summation algorithm if the new third argument is the string 'ozawa'. The corresponding C sources have been modified to prevent compiler optimisation, which could cancel the optimisations, as well.
- 'argerror' now prints the user-defined type name of a value received in its error message. If a value does not have a user-defined type, then its basic type is issued.
- The new 'a' option to 'debug.getinfo' returns the number of arguments expected by a procedure, thanks to Rob Hoelz' LuaPowerPatch.
- Improved 'index out-of-range' error message for strings.
- Modified the 'stats.agn', 'linalg.agn', 'library.agn', and 'ansi.agn' files with respect to their error handling.