[gambit-list] Google Summer of Code
Christian Jaeger
christian at pflanze.mine.nu
Wed Mar 12 09:52:40 EDT 2008
I wrote:
> Hm, should I try to offer mentoring:
> * working on chjmodule (renaming it at that occasion)?
> * working on some other module system?
>
> I see that mentors must be listed already at the organization
> application. I'll release my current code quickly now (give me 24h).
>
Sorry, I can't make it so quick. Believe me, I really just started
working again on it two days ago (it's only six days since I'm not tied
up in a job anymore, too), and adapting to the newer Gambit releases is
a little more complicated for me than I had wished; what I'm hitting
against right now is the change in Gambit to not define standard forms
like define or lambda in non-"" namespaces anymore; this is a sensible
change, but I really have to build clean identifier handling in now, I
don't just want to include ~~/lib/gambit#.scm because then one couldn't
override any such identifiers anymore without globally affecting all code.
I'll continue hacking after this mail (I'll also analyze how Snow does
things), expect me to invest half of my time of the upcoming days.
Let me advertise my planned work (in which a student could participate
or take on parts) like this:
- study enough Gambit internals in the area of parsing/compilation
stages, macro expander integration, repl handling, and debugger
displays, symbol table handling, and possibly more, to be able to adapt
and integrate any module system work cleanly.
- create a module system that's easy and practical for everyday work,
meaning highly interactive, and at the same time aiming to enable
optimizations which can lead to fast code without compromising code
clarity (like e.g. cross module inlining, and specialization for
parametrized modules).
- experiment also with the practical aspects on the filesystem side
(filesystem layout, compilation caching strategies, C code compilation /
some sort of make tools integration (integrate make tool calls into the
module system and not vice versy!)).
- especially after the above infrastructure is well in place, study the
existing approaches of modularization and syntax handling out there
(Scheme48, MzScheme, Chicken's attempts at mixing syntax systems,
riaxpander (http://mumble.net/~campbell/darcs/riaxpander/), R6RS, ERR5RS)
- think of every way that object oriented practices are being used to
achieve modularization in OO languages and find the right counterpart
for Scheme. (There will also probably always be *some* need for dynamic
type dispatch (virtual method calls), be open to interface to a CLOS
like OO system for this.)
- code is data, data is code: treat files that other languages would
consider data (e.g. XSLT files) as modules. Also explore XML
namespaceing ideas in s-expr syntax.
- those findings which are deemed important (and are not
Gambit-specific, e.g. performance oriented), are meant to become
portable by integration into or building on top of the Snow framework.
I would be happy if a student or other people would take part in this.
So I would like to offer to be a mentor. I think we may not get done
everything of the above during this summer, so if you want to
participate (or also if you don't) help pick out what you think is
important.
If you think the GSoC job description should be more precise than that,
please tell me, so that we can come up with something better.
Christian.
More information about the Gambit-list
mailing list