[Ecls-list] Kamen Lisp update, questions

Thibault Langlois tl at di.fc.ul.pt
Wed Apr 25 08:25:09 UTC 2007

On 4/25/07, Dustin Long <dlong at stevens.edu> wrote:
> Hi all,
> I've been working on improving Kamen Lisp, and wanted to give an update
> on my status, as well as shoot off a few questions.
> 1) Linux stability is greatly improved. There were some string problems,
> as I thought, mostly involving null termination. Also, it seems Firefox
> *really* doesn't like how ECL uses signaling. I had to make a custom
> build of ECL which can optionally disable signal handling during boot up.
> 2) I threw in a basic security model. It works by wrapping each
> interpretation of a webpage's lisp code in a new symbol
> "ext:call-secure", which is a function taking a zero-arg lambda
> expression. When it runs that lambda, no call to a "sensitive" operation
> is allowed. The custom ECL build was also modified for this: sensitive
> operations call the function "ext:security-check", which signals an
> error if it is within "ext:call-secure". The following functions are
> treated as sensitive: open, load, quit, truename, rename-file,
> delete-file, probe-file, file-write-date, file-author, directory,
> si:chdir, si:mkdir, si:rmdir, si:system, si:getpid, si:open-pipe,
> si:run-program.
> 3) Lisp errors propagate back to Firefox as Javascript errors.
> 4) Mismatched parenthesis will no longer crash Firefox.
> 5) License changed to the MPL/GPL/LGPL tri-license, as was suggested by
> Pierre.
> You can see this for yourself with version 0.91, same place as before [
> http://www.cs.stevens.edu/~dlong/software/kamen/index.php ]. The patch
> I'm using for my custom ECL is available as well.
> Now I have some questions, if I may:
> 1) For the security model, are there any other dangerous symbols I
> missed? I know there's at least a few I noticed at the last minute but
> forgot to include. But I'd like to make sure I get them for in the next
> release.

I think INTERN and MAKE-SYMBOL should be avoided:

(mapc #'(lambda (p) (funcall (intern "DELETE-FILE") p))
    (funcall (intern "DIRECTORY") "/home/user/*")))



> 2) How can I get multiple environments at once? I tried crawling through
> the source but couldn't find an answer. I'd like to be able to do
> something like this:
> cl_object a = new_env();
> cl_object b = new_env();
> si_safe_eval(3, <some form>, a, Cnil);
> si_safe_eval(3, <some form>, b, Cnil);
> such that the two forms can't see each others' global bindings. This
> seems to happen with threads, but I can't figure out how.
> 3) I ran into a problem where the Linux machine I use for building ECL
> had a newer version of glibc than another Linux machine I tested it on.
> Consequently, loading libecl.so dynamically failed. Is there a configure
> option I can use that forces compilation with something like a lowest
> common denominator?
> That's all for now. Any help would be appreciated.
> Thanks!
> Dustin
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Ecls-list mailing list
> Ecls-list at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ecls-list

Thibault Langlois

Thibault Langlois

More information about the ecl-devel mailing list