============ === 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