Release Notes: This release adds support for Operator Overloading in Moto! Overloaded operators may be declared in moto extensions and used inside Moto programs allowing programmers to write more compact, readable, and most importantly fun code! Perl programmers may now comfortably write foo["bar"] = "baz", while C++ purists enjoy the pleasure of intersecting sets with the * operator. To demonstrate this new feature many newly overloaded operators are included in the codex util extension. Function lookup performance has also been dramatically improved, leading to better performance in interpreted mode.
Release Notes: Fixes for longstanding symbol collisions with PHP4 (these symbol collisions prohibited Apache from starting on certain platforms when both PHP and Moto were enabled).
Release Notes: This release adds Higher Order Programming constructs to Moto letting developers use delegates and callbacks with ease through a syntax that 'Java should have had' . Functions and methods may be assigned to variables. Functions and methods can take functions as arguments or return functions. Functions can even be defined on the fly by applying arguments to other functions or methods! MySQL and PGSQL driver configuration is improved with support for many more database distributions and dependencies. Problems with PosixFileIO have been fixed. Many other features and fixes are also included.
Release Notes: This release includes the ability to get stack traces from exceptions in both interpreted and compiled code. Exceptions that get thrown but not caught are now logged to the apache error logs. Both the interpreter and mmc compiled modules can be configured at runtime to catch signals raised during page execution and re-throw them as exceptions. There are many new syntax enhancements including inline declarations, inline array instantiation, a comma operator, and support for multi-line macro calls. New commandline options are included in mmc. Many other bugs have been fixed.
Release Notes: A new runtime configuration option (Session.MatchSSIDCookie) was added for requiring that the session ID stored in a Client-side cookie matches the ID stored in a Server-side cookie if both are present. Bugs were fixed with cookie freeing and memory leaks in the interpreter. The casting operator was fixed to allow casting to and from Array types. The IntSet object was fixed so that it may now be used in compiled moto applications.
Release Notes: This release adds exception handling constructs. Exceptions are now first class objects. The semantics of the try, catch, and finally constructs are the same as in Java. The MySQL database driver has been refactored and much improved, adding many new and powerful methods for working with query results. A number of important bugs have also been fixed related to the allocation of zero length objects, such as empty classes or arrays.
Release Notes: This release adds support for querying a PostgreSQL database. It paves the way for future database support by relocating all current database drivers into codex.db.XXX extensions. New extension creation has been simplified. All extension dependencies are now listed in .i files. The ability to set the lock directory at runtime has been added. Various other bugs have been fixed in the state management subsystem and with Regex and String APIs.
Release Notes: This is the first release to differentiate between bytes and characters. It includes support for a new byte datatype. It adds several new language features and extension functions for manipulating and converting between byte and character arrays and strings. It adds support for retrieving file uploads and database blobs as byte arrays, and outputting and saving them correctly.
Release Notes: This release fixes bugs with arrays of doubles and greatly improves array operation performance. It also adds a couple spoonfuls of syntactic sugar that make it easier to copy code from Java into moto without having to make too many changes to the syntax.
Release Notes: Regexes in this release may be used for searching as well as matching. Subexpression matches can now be captured. Strings can be tokenized by regular expressions. The sub() function can be used to substitute patterns in strings with support for substituting captured subexpressions. The file I/O extension is included in this release. Problems with compilation and installation on FreeBSD systems have been fixed.