[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GSoC: Emacs Lisp support for GNU Guile

From: Clinton Ebadi
Subject: Re: GSoC: Emacs Lisp support for GNU Guile
Date: Tue, 31 Mar 2009 16:28:47 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (gnu/linux)

Daniel Kraft <address@hidden> writes:

> Hi all,
> as already discussed briefly with the Guile guys behind the new VM
> thing, I got the idea to implement Emacs Lisp as supported language
> for the Guile VM system.
> Below is a proposal for a GSoC project I submitted to GNU as mentoring
> organization;  Karl Berry replied that it sounds interesting but they
> needed to find a mentor / mentors for this project; what do you (Emacs
> and Guile people) think about it?

This is an excellent plan!

There is already a working elisp->scheme translator for the interpeter
in lang/elisp. I've poked about in it and it would be fairly
straightfoward to port it to the VM by retargetting it to GHIL and
replacing the @fop and @bind operators in the interpeter with a bit of
GHIL implementing the same behavior.

As a general implemention order I suggest:

 - Replace @fop and @bind with a GHIL fragment implementing the same
 - Integrate the elisp->scheme translator into the VM compiler framework
 - Retarget the elisp translator from Scheme to GHIL

If there is time left (the above tasks should take maybe a month,
perhaps more) then a few more tasks would be useful as far as cleaning
up the implementation of Guile:

 - Remove handling of NIL in Scheme. This special casing is, in my
   opinion, distressingly unclean. This would require adding a new
   ELISP-IF form that accepts #f/nil as false values
 - Reimplement the basic elisp list operators in elisp/ghil rather than
   using the existing Scheme implementations
 - [Potentially] Remove value/function slots from Guile's symbol type
   and implement the Lisp-2ness of elisp in another way
 - [Assuming the above is done; if not ((fref SYMBOL) ...)  works
   already] Implement a convenient way to call elisp functions from
   Scheme. Something like (funcall SYMBOL ...)

And then use any remaining time to fill in any useful bits

<captain_krunk> ntk is currently using "telnet fyodor 25" to send email

reply via email to

[Prev in Thread] Current Thread [Next in Thread]