[moto-users] Moto 0.18.0 Release

David Hakim <dhakim-Gkm/TONP9n1Wk0Htik3J/[email protected]> Mon, 3 Feb 2003 16:04:06 -0500
Newsgroups gmane.comp.lang.moto.user
Message-ID <[email protected]>
Moto 0.18.0 has been released! You can download the source from 
http://projectmoto.org/moto_0_18_0.tar.gz

Moto 0.18.0 includes a number of important features serious programmers 
will find indispensable. Most prominent among these is the ability to 
get stack traces from exceptions in both interpreted and compiled moto 
code just like you can get in Java or when using gdb. So now running 
this:

${
    void evilOne(int depth){
       if(depth > 0) evilTwo(depth - 1);
       throw new Exception("Wheeee");
    }

    void evilTwo(int depth){
       if(depth > 0) evilOne(depth - 1);
       throw new Exception("Kaboom!");
    }

    evilOne(5);
}$

will output this:

Uncaught Exception
    message:Kaboom!

Exception thrown in evilTwo(1)(excp_trace_err.moto:9)
    called from function evilOne(1)(excp_trace_err.moto:3)
    called from function evilTwo(1)(excp_trace_err.moto:8)
    called from function evilOne(1)(excp_trace_err.moto:3)
    called from function evilTwo(1)(excp_trace_err.moto:8)
    called from function evilOne(1)(excp_trace_err.moto:3)
    called from function <main>(excp_trace_err.moto:12)

Don't worry, there has been only negligible impact on the performance 
of function calls. Functions and methods in compiled moto apps still 
execute 3 times faster than they do in Java (thats 10-30 times faster 
than they do in PHP,Perl, Python, or Ruby!)

Stack traces as well as other details of exceptions that get raised but 
not caught are now output from the moto command line tool and written 
to the apache error logs from both the interpreter module and mmc 
compiled modules. Also both the interpreter and mmc compiled modules 
can be configured at runtime to catch signals raised during page 
execution and throw them as exceptions (so you'll see a nice stack 
trace in your error log as opposed to a segfault message!)

New syntax constructs have been added to the Moto language with this 
release as well making programming in moto even more of a joy than it 
already was! Arrays can now be declared and defined anywhere from 
within moto code :

${ String[] happy = {"I'm","so","happy!"}; }$

Programmers can now declare variables in the initialization section of 
for loops :

${ for(int i=0;i<10;i++) print "So so happy!\n"; }$

A comma operator has been added allowing the code conciseness offered 
by compound expressions :

${ int i=1,j=1; while(i++,j*=10,i<5) print "I'm "+j+" times happier 
than I was a moment ago!\n"; }$

And calls to macros that take arguments can finally span multiple lines!

Many other enhancements and bug fixes have been made including major 
enhancements to the command line options available to mmc! There's 
something for everybody in this release!