November 2004


The Xft patch adds support anti-aliased fonts to XEmacs 21.5. This page contains some screenshots.

Recently, there have been a number of commits to the XEmacs CVS repository—some of them conflict with the now one year old Xft patch. So, here is a version of the Xft patch against the XEmacs CVS repository last updated 11-06-2004.

This patch is joint work with Matthias. Alexey Gladkov and Yury Konovalov made Matthias and my patch work with Utf8 and this patch includes their patch to the Xft patch. The patch can be downloaded here.

Here is a short description for building a Xft XEmacs:

[0 knauel@Vigor10 build] cd xemacs-cvs
[0 knauel@Vigor10 xemacs-cvs] patch -p1 < ../xft-xemacs-11062004.patch
[0 knauel@Vigor10 xemacs-cvs] autoconf
[0 knauel@Vigor10 xemacs-cvs] ./configure --with-xft  

Enjoy smooth anti-aliased fonts!

Technorati Tags: ,

I think, that I haven’t mentioned before that I am working on an Emacs Lisp compiler. It is written in Scheme, runs on Scheme 48 and compiles Emacs Lisp to Scheme code. There is also a runtime system which implements dynamic binding, handles symbol magic and various other things. The compiler generates quite portable Scheme source code, and it also can be used in an interactive fashion: The compiler returns a Scheme function for each Emacs Lisp expression it compiles. That function is directly useable at the prompt of Scheme 48. Emacs Lisp variables correspond to Scheme variable which are only visible in a special Scheme 48 module. Thus, if the users evaluates a defun, this adds a new variable to the el module. By doing this, it’s easy to have an arbitrary number of Emacs Lisp evaluators at run-time.

I spent some time working on the compiler without seeing much progress: tons of code, many pieces. I had the impression that it will me take ages to put all the pieces in their places and make them work together. Well, recently I spent some hours hacking on the compiler and this actually raises my hope. It seems to work well for small Emacs Lisp programs. Dynamic binding works. I have implemented Baker’s shallow binding algorithm. Macro expansion works. Actually, this was trivial, given the compiler: the parser calls the compiler to compile a macro definition to a Scheme function and calls that Scheme function and feeds the result back into the parser. I wonder what made me think that implementing this is a difficult task. However, there is still a lot of things to do.

For example, doing benchmarks. The current model of compilation leaves lots of redexes for elimination by the Scheme compiler. However, the usual Scheme 48 byte-code compiler seems to be not smart enough to do this. The upcoming byte-code optimizer for Scheme 48 does a much better job, however, it is not finished yet and sometimes yields a wrong or no result at all. There is also a byte-code to native-code compiler for Scheme 48 which works very fine. However, it doesn’t eliminate the redexes either. So, I have to wait till the optimizer is fully functional (or try to fix it). Other option: Try to get runtime-system running on Gambit-C 4.0. This looks very promising, it has almost everything (except for SRFI 34 and SRFI 35) I need to port the runtime-system.

To be continued…

Technorati Tags: , , , ,