Hello all, I've been accepted for GSoC 2011, and I'm excited to continue working towards Guile-Emacs (: I'll be improving Guile's Emacs Lisp support and will begin work on Emacs integration. I've included part of my project proposal below.
Deliverables: * Complete the Elisp subr library. Most of Emacs 24's 1090 built-in functions are not useful outside of a text editing context and don't need to be provided by Guile-Elisp, but simple "batch-mode" programs should work correctly. * Implement support for aliases and buffer-local variables. Support use of the `lexical-binding' variable to control scoping rules in addition to the `lexical-let' special form. * Implement "big variables," as proposed in <http://article.gmane.org/gmane.lisp.guile.devel/10750>. This will simplify the compiler implementation and provide a path to future integration with the Guile module system, and it will make it easier to support other Lisp-2 dialects in the future. (It also may be a prerequisite for implementing alias and BLV support.) * Fix nil handling. Elisp's nil value must be a symbol as well as a boolean and a list. * Improve the performance of Elisp programs on the Guile VM. Emacs is still a bit faster on the Gabriel benchmarks. * Improve tests. New tests should be written in Elisp so that they can be run in both Emacs and Guile. I likely won't write end-user documentation during the summer, but as before, will be keeping notes that should be of use to other people working on this project. Guile-Elisp is already close to the point where it's reasonable to consider direct integration with GNU Emacs. A logical first step would be to update Ken Raeburn's Guilemacs patches for Emacs 24 and Guile 2.0, which modify Emacs to use Guile's object representation internally. Plan: I'll be examining the Guilemacs patches before the summer begins to get some idea of how much effort to allocate to direct Emacs integration work. I don't know how much headway I can make on that part of the project during the summer, but I should make at least some definite progress and should have some idea of what to focus on after the summer. By the midterm evaluation I should have finished implementing support for "big variables" and aliases, and I should have made significant progress on other tasks. By the end of the summer I should have completed most of the Guile-related tasks (subject to mentor-approved changes if other tasks come up) and should have begun work on Emacs integration. The nature of the Emacs integration work remains somewhat unclear. Part of it, of course, depends on how much effort and time the Guile side of the project requires. My intent is to spend at least half my time getting Guile-Elisp to what I think of as 95% completion, then spend the remaining time exploring what needs to be done with Emacs itself. This might be as little as replacing Emacs's GC with BDW-GC and converting a few types to smobs, or as much as completely updating the Guilemacs patches and making prelimary attempts to replace the Elisp interpreter. amike, BT