epsilon-devel
[Top][All Lists]
Advanced

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

[epsilon-devel] Questions about Epsilon and call-stack introspection.


From: Basile Starynkevitch
Subject: [epsilon-devel] Questions about Epsilon and call-stack introspection.
Date: Thu, 02 Jan 2014 12:41:15 +0100

Hello All,

Happy new 2014 year to everyone.

Some questions (most of them having already be asked orally to Luca,
perhaps even at his PhD defense...) related to Epsilon

First, I am impatiently waiting for Epsilon to get totally rid of Guile.

Then, I am interested by call stack introspection in Epsilon, that is
the ability to inspect (and even alter) some call stack frames in
Epsilon.

There are several reasons I am wanting it.

First, I still have an interest in metaknowledge based introspective
systems, notably like J.Pitrat's work and CAIA system. See his book
Artificial Beings (the conscious of a conscious machine)
http://onlinelibrary.wiley.com/book/10.1002/9780470611791 and his (just
started) blog http://bootstrappingartificialintelligence.fr/WordPress3/
I'm actually one of the few guys who have access to some "source" form
(the generated C code and data files of CAIA) to Pitrat's system (but I
don't have time to understand most of it).

Then, I really think that Epsilon should be a language in which one can
code its own (e.g. copying generational Cheney like) garbage collector.
Very few languages have this ability (and it is a shame, see however
Scheme48 and its PreScheme). To make that possible, one has to have
primitive to inspect and update call frames on the stack. (Forwarding
local pointers in C or C++ is painful; see my MELT http://gcc-melt.org/
runtime for more).

Also, being able to update the call stack, including by inserting new
(or removing existing) call frames in the middle of it, would be very
interesting, requires deep support from the compiler (and the language)
and would enable an interesting implementation of continuations and
call/cc. Current Epsilon1's approach (whole program CPS transformation)
is not really funny (and not very original neither). Defining the good
primitives (and probably a few more elementary control flow operations
for call stack update, à la setcontext(3) in some Linux; see
http://man7.org/linux/man-pages/man3/getcontext.3.html ...) to be able
to push and pull a segment of the call stack would be much more
challenging, and would enable quite interesting implementations of
call/cc (and other non-local control flow).

Few languages have the required features to implement garbage collection
and call/cc by call stack introspection and modification, and I really
believe that Epsilon0 should have them (and having them will give
Epsilon0 a decisive advantage...). 

Regards.
-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***





reply via email to

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