aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 71216d1b2e71d91ec522cbb0b5abf9d4a077fc31 (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
128
129
130
131
132
133
134
135
136
============
=== TODO ===
============

* Finish Bemol backend.
* Finish JVM backend.
* 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.
* 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

* 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

* Improve Boot documentation

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

* Audit cleanup rules

* Audit file copying.

* Document the installation structure.

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

* 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