|
Improving the current implementation |
|
[Should be completed]
1.Memory management
If I have the courage, I might one day write a garbage collector for
TeXmacs.
2.Graphical interface
We wish to move towards Guile-Gtk or another
portable graphical user interface. Now that we have found someone for
making a Windows port, this not an urgent issue anymore though.
3.Encodings and fonts
-
Systematically use Unicode.
-
Some changes have still to be made in the way font encodings are
handled. This should make it easier to maintain fonts with
characters from several physical fonts, virtual fonts, special
characters, etc.
-
Currently, the current logical font is determined from a fixed set
of environment variables only. The current typesetting font should
rather be a tree (instead of a string), which is evaluated (so that
environment variables are replaced) and then passed to find_font(display,tree).
The current font can then be a joined font and future fonts might
depend on user environment variables (i.e. colored fonts, using more
than one color).
4.Speed
In order to speed up the program, we already made the major change
that not the whole document is typeset again when making local
changes. However, several other main optimizations should still be
made:
-
Indexing file names which are in the distribution. This may
accelerate booting the program.
-
Encode the system environment variables; this will globally
accelerate the program. Also, intermediate data during the
typesetting process might be encoded in a more binary way.
-
The typesetter should be made lazy in a more fundamental way.
5.Scheme
The Guile/Scheme interface
should become more robust and well documented. Several things still
need to be done for this:
-
Implement a system for “contextual overloading”.
-
Better preservation of locality.
-
Systematic use of closures throughout the code.
-
A clean interface for manipulating TeXmacs content (a unified
interface for both internal TeXmacs trees and the associated Scheme representation).
-
Documentation.
© 1998–2002 Joris van der Hoeven
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled
"GNU Free Documentation License".