FriCAS Project
Problem statement.
FriCAS a fork of Axiom project. Its starting point is wh-sandbox branch of the
Axiom project. Axiom project tried to use literate programming
methodology and switch emphasis from code to documentation. In
practice that meants that almost all code is wrapped in so called
pamhlet files and must be extracted by noweb tool before use in build
process. This causes significant difficulties during developement,
starting from having long file name, problems of tracking errors to
exact source locations and complications in Makefiles. Literate
programming practice in Axiom produced little documentation, but makes
sources harder to read for programmer. FriCAS will use traditional
methodology for new developement and gradually convert other files
back to traditional form (back because Axiom was originally developed
using traditional methodology, and only during transition to open
source project files where mechanically converted to "literate" form).
Axiom project evolved very slowly, many simple fixes were not applied
for long time (years). FriCAS will use lightweight developement,
allowing much faster evolution.
Short term planned new technical developements.
Axiom system is written in multiple languages, main two
called Boot and Spad are specific to Axiom. Boot and Spad are
translated to Common Lisp. Currently Axiom is fully functional when
working on top of Gnu Common Lisp (GCL). In wh-sandbox branch core
functionlity works also with other Lisp implementations, and FriCAS
should fully support other Lisp implementations. This should increase
acceptance of FriCAS, because on some platforms GCL is hard to build,
on some does not work at all and also Lisp developers frequently find
other Lisp implementation preferable. The Spad language used for
mathematical code in Axiom is strongly typed. Axiom system caches type
information between builds -- during build it uses type information
from previous build. This makes modifications to Axiom code very
difficult, because after changing type in source old type information
is used in many cases, causing spurious type errors. FriCAS will use
only type information from sources eliminationg such problems. Many
modern mathematical codes to get better speed are written in C or C++.
FriCAS will interface to such codes to gain speed advantage. Currently
Axiom system offers its own user interface, but it is somewhat dated
-- mostly text based, graphics has old looks and feel. FriCAS add
hooks which make adding alternative user interfaces easier.
Longer term plans.
The compiler for Spad language included in Axiom is buggy
and has serious performance problems -- new compiler is needed.
New mathematical algorithms. Assertion support.