Design goals behind Mathemagix

The main current design goals of Mathemagix are as follows:

Strong typedness
Mathemagix should be strongly typed, with support for overloading, implicit conversions, generic objects, compile-time type checking and, possibly, built-in support for expression types which interact with the type system.
High level control structures
Mathemagix should support high level control structures, like coroutines, generators, exceptions, etc.. Our current approach is based on Scheme continuations. In the future we also wish to consider parallellism.
Fast prototyping
It should be possible to write a good prototype for the language reasonably fast. In particular, it must be possible to write a reasonably fast interpreter for the language.
Runtime efficiency
This is a really a long-term goal, since writing a compiler is not a short-term objective. Nevertheless, the possibility to write a compiler which produces efficient code should be kept in mind. In particular, the language should support directives for controlling memory layout and inlining in a way which is naturally compatible with the type system.
Reusability of extern libraries
Before achieving runtime efficiency of Mathemagix itself, we aim to achieve runtime efficiency through the extensive reuse of existing dedicated libraries written in other languages. Mathemagix should therefore implement transparent mechanisms for reusing extern libraries and in particular C++ template libraries. Special care should be taken of garbage collection.
Language independence
Via the concept of an “abstract evaluator”, it should be possible to use the functionality provided by Mathemagix libraries from within different high level languages, mmx-light being the default interpreter.
Good scalability
It should be possible to develop large computer algebra systems using Mathemagix in a natural and modular way. Special attention should be paid to constructs for programming in the large and the type system should naturally allow extensions of types and code.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License. If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.