============
=== TODO ===
============
* Retargetto Poly/ML abstract machine.
* Add exception handling in the interpreter.
* Fix parse tree transformation (e.g. typed definitions.)
* Cleanup commuting coercion facility.
* Improve efficiency of array operations.
* Finish network communication support.
* Finish Bemol backend.
* Finish JVM backend.
* Add support for concurrency.
* Generate better codes for scripts.
* Fix STREAM implementation (dynamic semantics rules violation).
* Fix compilation of domain where withon is empty.
* Improve overload resolution routines.
* Have an option to build OpenAxiom as a Firefox-based standalone
application (or as a Firefox extension)
* Make highlighting more configurable
* Build domains for theorem proving and proof checking facilities.
* Modernize algebras
* Better documentations
* Interfaces to mainstream programming languages
* Improve Boot, Spad
* Integrate to development environments
* Move rule semantics transformation from the ParseForm -> SExpression
transformer to the interpreter.
* Audit all codes that manipulate sockets.
* Find a better of structuring for PLF, CCF, LDF, LISP.
* Have OpenAxiom configure pass options specified on the
invokation line down to GCL.
* Properly document the new build in a very intelligible way
* Improve Boot documentation
* Audit cleanup rules
* Audit file copying.
* Document the installation structure.
============
=== DONE ===
============
* Add exception handling in library.
* Automate the process of "optimized" OpenAxiom.
* Better support on Windows platform (MinGW/MSYS)
* Reduce the number of bar Lisp codes to the minimum residual.
* Rework subsumption: subsumption is almost inexistent.
* Remove dependency on noweb.
* The installed system no longer requires AWK.
* Find better documentation tools and formats that do not get in
the way of building the system on more platforms.
* Document src/scripts/document.in. Remove and replaced by a C++
program (src/hammer.cc)
* FFI support for Spad
* Revisit the underlying definition of the types DFlo in foam
interface, and DoubleFloat in OpenAxiom. Now, we ensure that
SingleFloat is 32-bit, and DoubleFloat is 64-bit.
* Support more Lisp systems (GCL, SBCL, CLisp)
* cleanup the Makefile pamphlets
* Fix codes in src/interp, src/hyper, and src/hyper/pages/util.ht that
hardcode pathnames.
In general, the OpenAxiom system should be able to work properly with
relative paths to that it can be "moved" around seamlessly.
* Support out-of-source build.
* Support parallel build.
Notice that GCL does not support parallel build. So we can punt
on build of GCL. We should work with Camm to fix GCL build upstream.
* Convince GCL to find its internal header files.
-- it turns out to be a bug in OpenAxiom.
* Fix Makefile generation dependencies.
-- This turns out to be a bug in Autoconf 2.59 whereby the value of
-- @top_builddir@ is empty. Work around the bug by using
-- $(abs_top_builddir).
* Have an automated, smooth bootstrapping process for boot.
* Implement framework for recursive rules in Makefiles.
* Fix fall-outs of missed DVI files.
This is believed to be fixed with the recursive rule support.
* Reorganize the makefile pamphlets so that OpenAxiom can build without
LaTeX or X11.
* Support standard "clean", "mostlyclean", and "distclean" Makefile
targets
* Add support for --with-lisp=lisp-image for building OpenAxiom with
a specific lisp-image.
* --enable-gcl uses the GCL from OpenAxiom repository to build OpenAxiom.
* src/boot can be built with Lisp images other than GCL:
--with-lisp=sbcl
--with-lisp=clisp
* Build on Windows platforms, more specifically MSYS/MinGW, is
supported.
* Components known to build with various Lisp implementations:
+ bootsys: GCL, SBCL, CLISP
+ depsys: GCL, CLISP
+ interpsys: GCL
+ AXIOMsys: GCL
* Use Libtool to build the C part of the OpenAxiom system. In particular,
this facilitates support for Lisps that rely on dynamic loading
(e.g. SBCL, ECL).
* Have OpenAxiom use bootsys compile all Boot codes in src/interp. This
requires auditing the code for uses of special functions which
act differently in boot and shoe (like MEMBER).
* Eliminate the shell script driver in favor of a native executable.
================================================
=== New Boot vs. Old Boot compatibility notes ==
================================================
The Old Boot translator renames some LISP identifiers
(i.e. identifiers, used in Boot codes, that consist of only
capital letters), a renaming not done by the New Boot translator.
Consequently, when converting a Boot program to the New Boot
translator, special care must be given to those identifiers
so as to preserve meanings.
* As of today, the following identifiers are no longer used in
Boot programs found in src/interp:
REMOVE GET RASSOC DELETE INTERSECTION UNION