aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 6d3ebec709dd2f3bd730ad7ed7233820e3ea8127 (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
137
138
139
140
141
142
143
144
145
146
147
148
============
=== 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