This is the mail archive of the
guile@cygnus.com
mailing list for the Guile project.
mod_guile design problems
- To: guile@cygnus.com
- Subject: mod_guile design problems
- From: forcer <forcer@mindless.com>
- Date: Mon, 28 Jun 1999 17:41:45 +0200
Hi there.
As I was stating some time back, i'm going to write mod_guile,
which would allow Apache modules to be written in Scheme.
Well, to make it short - I need help with that. :)
Someone with some Apache/Guile background would be quite helpful
(i have *some* knowledge about both, but i constanly run against
something i just don't know. Most notably, what will Guile look
like when it's done with all the "we're working on it"-parts)
I just finished reading "Writing Apache Modules with Perl and C",
and got quite some ideas for mod_guile, but i have some basic
problems:
- I want to make smob's for the request_rec, server_rec and
conn_rec structures. Those are actually automagically destroyed
by apache when it's done with it. I have no idea how to handle
this - mod_guile modules can of course store the smob's
wherever they like, and access them even after the real ones
have vanished. sadly, apache does *not* provide a clean way to
register "cleanup"-functions for these structures.
- Apache uses it's own type of FILE pointers, BUFF's.
There seems no way to wrap a BUFF into a guile port and lateron
retrieve the BUFF from the port.
- Memory pools. I haven't found any use for memory pools in Guile
since it's already Garbage Collected. I just need some logic to
find an appropriate pool for those functions that require one.
(e.g. ap_escape_shell_cmd - i'll copy the result so it can be
stored in guile independently of the pool)
More or less unrelated to this, i'm also searching for the new
Environment specification (i've lost my local copy). I wonder
wether it'll be possible to mark an environment as "read-only",
e.g. that a set! will not affect that environment or any of it's
parents.
-forcer
--
((email . "forcer@mindless.com") (www . "http://forcix.cx/")
(irc . "forcer@#StarWars (IRCnet)") (gpg . "/other/forcer.gpg"))