Design goals behind Mathemagix

The main current design goals of Mathemagix are as follows:

Strong typedness

Mathemagix should be strongly typed, with support for discrete and parameterized overloading, 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 ultimately support high level control structures, like coroutines, generators, exceptions, continuations, etc. In the future we also wish to consider parallellism.

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.

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.