aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: c925a60a43a3459cc222d466c8cafbcc925276a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
============
=== TODO ===
============

* Eliminate the shell script driver in favor of a native executable.
* 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.
* Support more Lisp systems
* Better support on Windows platform (MinGW/MSYS)
* Modernize algebras
* Better documentations
* Find better documentation tools and formats that do not get in
  the way of building the system on more platforms.
* Interfaces to mainstream programming languages
* Improve Boot, Spad
* Integrate to development environments

* Revisit the underlying definition of the types DFlo in foam
  interface, and Float in OpenAxiom.

* Audit all codes that manipulate sockets.

* Automate the process of "optimized" OpenAxiom: this requires a two-pass
  build; once to gather type information, a second time to use the
  information.  

* 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

* Document src/scripts/document.in

* cleanup the Makefile pamphlets

* Improve Boot documentation

* Reduce the number of bar Lisp codes to the minimum residual.

* 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. 

* Audit cleanup rules

* Audit file copying.

* Document the installation structure.

============
=== DONE ===
============

* 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). 

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