[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
behavior
- 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
lang/elisp/primitives/*.
--
<captain_krunk> ntk is currently using "telnet fyodor 25" to send email