Moto 0.19.0 beta 1

David Hakim <dhakim-Gkm/TONP9n1Wk0Htik3J/[email protected]> Tue, 4 Mar 2003 18:50:44 -0500
Newsgroups gmane.comp.lang.moto.devel,gmane.comp.lang.moto.user
Message-ID <[email protected]>
	Well, counter to at least some of the advice I've received I'm 
releasing a beta of 0.19.0 now before the final syntax changes are set 
in stone. Specifically I do not know whether the '&' (function 
identification) operator will remain in moto after this beta. Those of 
you who will not be using Higher Order Functions in your apps don't 
need to worry about this point. You can download the beta from 
http://www.projectmoto.org/moto_0_19_0_eng_a.tar.gz .

	The big new feature in this release is support for Higher Order 
Functions in moto. Right now they are only as powerful as function 
pointers in C but in future releases they will become much much more 
powerful with the addition of inline function definition though the use 
of anonymous functions and partial function application. I haven't 
started the documentation for this feature yet but there are lots of 
examples in the tests directory (hof_*.moto) .

	Many other bug fixes have made it into this release as well. Here are 
the full release notes:

New Features
- Added First-class type support for functions
- Added support for defining higher order functions
- Added Vector::sort(int(Object,Object)) which takes a function to 
compare two objects
- Added Enumeration::each(void(Object)) which takes a function to 
perform on each element in the enumeration
- Added sub(Regex,String(Match)) which takes a function for the 
substitution
- Added split() and join() functions
- Better errors are reported for bad casts of arrays
- Provided for https redirects (Shay)
- Added destdir support to the main makefile facilitating the creation 
of RPMs (Stefano)

Bugs Fixed
- Fixed a bug in PosixFileIO that caused a segfault in the 
MidafternoonCommander example
- Fixed a bug that would cause name collision in compiled code when a 
class had a no-arg constructor
- Fixed a bug that let all reference types be explicitly castable to 
all other reference types without first being cast to Objects
- Fixed a bug in the memory manager that would sometimes let collisions 
between the free list and the shared segment get by unnoticed
- Fixed --with-mysql and --with-pgsql configuration on a number of 
different platforms (Shay)
- Patched "mx/codex/db/pgsql/configure.in" file so that it figures out 
if OpenSSL
support is needed or not and acts accordingly
- Fixed compilation problems related to moto.y syntax errors on certain 
FreeBSD installations (thanks Jack!)

Code Cleanup
-Refactored the moto type system
-Refactored motoi_fn
-Refactored motofunction related functions out of dl.c and env.c and 
into motofunction.c
-Removed switches on the opcount from motoX_fn and motoX_new
-Cleaned up a bunch of unnecessary checks in moto.y prior to list 
addition
-Made sure all non-terminals that return lists return ONLY lists

-Dave