summaryrefslogtreecommitdiff
path: root/lisp/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/TODO')
-rw-r--r--lisp/TODO81
1 files changed, 81 insertions, 0 deletions
diff --git a/lisp/TODO b/lisp/TODO
new file mode 100644
index 0000000..01babd6
--- /dev/null
+++ b/lisp/TODO
@@ -0,0 +1,81 @@
+$XFree86: xc/programs/xedit/lisp/TODO,v 1.9 2002/12/16 03:59:27 paulo Exp $
+
+LAST UPDATED: $Date$
+
+ Small todo list
+
+o Change function/macro body to know if a &key or &optional argument was not
+ provided, and initialize to the default value in the function, for
+ interpreted and builtin functions it is better done before the function is
+ called, but for bytecode it is better in the function.
+o Following the previous idea, change function definitions in the format:
+ (defun afun (a &aux b (c (some-code))) ...)
+ to
+ (defun afun (a) (let* ((b (c (some-code)))) ...))
+ This can significatively reduce bytecode size, and also simplify function
+ calls.
+o Optimize text redisplay in Xaw, instead of allocating a copy of the buffer
+ for the paint-list, should use the text in place, and only allocate small
+ buffers when required, i.e. displaying control characters, etc.
+o Add an interface to create new object types dinamically.
+o Add a special string object to simplify and avoid too many copies of
+ portions of the text buffers. This special string should be read-only
+ and not gc-collected.
+o Make the bytecode compiler smarter to detect some constructs like:
+ (builtin-or-bytecode-function-call arg1 arg2 (return))
+ this will not properly restore the internal stacks.
+
+o When an Init function is present in every file, call LispAddBuiltin from
+ that initialization function.
+o Cleanup the code, make it optional to build some uncommon features (as well
+ as the entire interpreter?). Implement more functions directly in lisp.
+o Finish an "specification" for loadable modules. Write a FFI interface.
+ Without the possibility of using already existing libraries, the interpreter
+ won't be too much useful due to a poor library. It is very desirable to
+ "auto-generate" directly from C header files the interface to the lisp
+ code, and from that, dlload a shared library. In some cases, it is required
+ to link statically with a new interpreter binary, make it easy.
+o Implement a better string type. That should support characters larger than
+ 8 bits, and that should allow embeded nuls.
+o Implement a richer set of math functions. This, if properly done can be
+ made a loadable module.
+o Optmize mathimp.c, comparing a double with a bignum should never cause an
+ error. Implement mp?_initsetXXX functions?
+o Finish missing features in read.c, and simplify it.
+o (close) probably should not send a signal when closing a pipe.
+o Implement "real" vectors, they exist to make access to field elements
+ at constant time, implementing vectors as lists may be very slow.
+o Use float and double as floating points formats.
+o Implement support for vectors of "atomic" types. Vectors of floats would
+ be useful for example if a OpenGL binding is done.
+o Implement a multiple precision floating point format. Either a 128 bits
+ (or configurable length?) IEEE 754 like number, or some format using
+ ratios, a epsilon for rouding, rounding modes, exact/inexact flag, a good
+ amount of guard digits, etc.
+o Write more functions and optimization for bignums. Try to make the code
+ as reusable as possible, either by other software or at least by the
+ different number types.
+o Instead of using mathimp.c for a large amount of functions, implement a
+ "generic number" type and implement the calculations directly in the
+ mp library.
+o Add more missing Common Lisp features, like &allow-other-keys for function
+ definitions, the missing structure features, CLOS etc.
+o Fix the Postgresql module, make it compile everywhere.
+o Add support for multi-threaded applications?
+o Make it possible to know if a object has only one reference, this is
+ required to make "inplace" changes of variables. Very useful for things
+ like (incf) and (decf), and also when dealing with bignums.
+o Maybe have a freelist for objects depending on the type. Bignums can be
+ reused, and having some large ones expecting to be freed by the gc can
+ consume a lot of memory.
+o Internationalization. Support ',' in floats? Correctly treat characters
+ for {up,down}-casing.
+o Synch the Xaw text code for supporting tables, text alignment/paragraphs,
+ etc, and add bindings to the interpreter. Add support for incremental
+ changes of those properties, currently it is "read-only".
+o Write some type of "hyperlinks", this is the only feature missing to even
+ allow writting a web browser inside xedit.
+o Write some "demos" (maybe a file manager or a simple mail reader) using the
+ Xt/Xaw bindings (needs modules working in all systems).
+o Remove all calls to the macros GCDisable and GCEnable. This is unsafe
+ and should be removed.