Actions

Module System

From Gambit wiki

Revision as of 13:56, 13 March 2008 by Pflanze (talk | contribs) (Added License statement)

This is a project to create a module system primarily for the Gambit Scheme system. It does not have a real name yet.

The system is meant complementary to the Snow package system: unlike Snow, this project does *not* focus on distribution, but instead it has the following objectives:

  • good interactive development capabilities (like runtime inspection and modification, included build system for the base case)
  • good code modularity features (parametrization, macros (hygiene, ..), and probably more)
  • generality (run code written in different language styles, to some extent in different module philosophies, interface with OO systems, host languages requiring translation like lazy variants of Scheme or maybe different languages like Arc or XSLT)
  • efficiency (employ cross-module inlining, parametrization specialization)
  • possibly achieve (partial) portability by moving parts into or building parts on top of the Snow framework (maybe not achieving the same level of integration with the host system, but at least make modules written by users portable to other Scheme systems)

The projects wants to deliver a base system usable for everyday use quickly, and explore the more advanced objectives in the longer term.

One essential part of the task involves getting to know the Gambit internals well enough to be able to embed the system well. Another essential one is laying a sound foundation especially for syntax handling (macros), considering the limited knowledge of the current contributors, this involves finding the right literature and people to query.

During a first phase, the project will draw from (and may for some time continue to develop in) the code bases of the chjmodule and the gambit-modules projects.

Contributors

Google Sommer of Code

This project is attempting to participate in the Google Sommer of Code campaign and intends to accept one student as additional core contributor.

Timeline

Rough points of the planned timeline:

  • James Long goes on reading literature for the next ~two weeks
  • Christian Jaeger finishes up and announces the long-promised chjmodule release, and contacts James Long.
  • seeking input in the Gambit community, student selection if possible
  • seeking input in the wider area, continuing to work on chjmodule and gambit-modules to work out thoughts
  • find out the necessary essentials
  • fork off a new code base and start implementing new infrastructure
  • start coding features

Log

There is a logfile mentioning the events in the project.

License

The project will license all code under the same licenses as Gambit, namely dual LGPL version 2.1 or Apache version 2.0 license (freely choosable).