<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://dynamo.iro.umontreal.ca/wiki/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php?title=Special:Contributions/Guillaume&amp;feed=atom&amp;limit=50&amp;target=Guillaume&amp;year=&amp;month=</id>
		<title>Gambit wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php?title=Special:Contributions/Guillaume&amp;feed=atom&amp;limit=50&amp;target=Guillaume&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Special:Contributions/Guillaume"/>
		<updated>2013-06-19T17:21:57Z</updated>
		<subtitle>From Gambit wiki</subtitle>
		<generator>MediaWiki 1.16.4</generator>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Termite</id>
		<title>Termite</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Termite"/>
				<updated>2008-08-07T04:35:34Z</updated>
		
		<summary type="html">&lt;p&gt;Guillaume: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Termite is a thin layer on top of Gambit which provides Erlang-like features for concurrent and distributed computing.&lt;br /&gt;
&lt;br /&gt;
The homepage is at http://code.google.com/p/termite/.&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Documentation</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Documentation"/>
				<updated>2008-08-07T04:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;Guillaume: /* Termite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== User Documentation ==&lt;br /&gt;
&lt;br /&gt;
There is a user manual for Gambit in [http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html HTML]&lt;br /&gt;
and [http://www.iro.umontreal.ca/~gambit/doc/gambit-c.pdf PDF] formats.&lt;br /&gt;
&lt;br /&gt;
General documentation about Scheme in various formats can be found at [http://www.schemers.org/ Schemers.org].&lt;br /&gt;
We've collected together on a single page some [[External links]]&lt;br /&gt;
&lt;br /&gt;
== Using a Prebuilt Distribution ==&lt;br /&gt;
&lt;br /&gt;
Some prebuilt distributions are [[Distributions | available]].&lt;br /&gt;
&lt;br /&gt;
== Building Gambit from Source ==&lt;br /&gt;
&lt;br /&gt;
Various [[Distributions | distributions]] of gambit have been made available.&lt;br /&gt;
&lt;br /&gt;
To build Gambit from source, one must first run the configure script, which has a number&lt;br /&gt;
of important [[Configure script options | options]].&lt;br /&gt;
&lt;br /&gt;
There are various [[Make targets | make targets]] of which you should be aware.&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
[http://snow.iro.umontreal.ca/ Snow] is a package system for R4RS and R5RS Scheme.  I suspect that nearly&lt;br /&gt;
all such packages will run on Gambit.  Snow has its own&lt;br /&gt;
[http://snow.iro.umontreal.ca/?tab=Documentation documentation] for those who want&lt;br /&gt;
to develop new packages, but users can simply download and install&lt;br /&gt;
[http://snow.iro.umontreal.ca/?tab=Packages existing packages].&lt;br /&gt;
&lt;br /&gt;
== Editor/IDE Support ==&lt;br /&gt;
&lt;br /&gt;
Gambit provides a powerful development environment through [http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#SEC28 Emacs]. &lt;br /&gt;
&lt;br /&gt;
For those running Windows you can [http://ftp.gnu.org/pub/gnu/emacs/windows/ download Emacs here]. You may want to read the [http://www.gnu.org/software/emacs/windows/ntemacs.html Emacs FAQ for Windows] before customizing Emacs for use with Gambit.&lt;br /&gt;
&lt;br /&gt;
== Termite ==&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/termite/ Termite] is an Erlang-like distributed programming system written in Scheme.&lt;br /&gt;
&lt;br /&gt;
Distributed computing hot right now, and Termite has been noticed in blogs and elsewhere.&lt;br /&gt;
&lt;br /&gt;
Termite depends on specific features of Gambit, and at one time or another&lt;br /&gt;
the Termite source code has been distributed with Gambit, so we point to the Termite web site&lt;br /&gt;
from here.&lt;br /&gt;
&lt;br /&gt;
== Internals Documentation ==&lt;br /&gt;
&lt;br /&gt;
People who want to [[How to Contribute | contribute]] to Gambit development will need to learn something about how the Gambit-C&lt;br /&gt;
runtime and compiler are organized.  While we intend that source code documentation be included in the source&lt;br /&gt;
itself (currently there is very little documentation), we intend that descriptions of program design&lt;br /&gt;
or algorithms used in the runtime and compiler could be included on the [[Internal Documentation]] page.&lt;br /&gt;
&lt;br /&gt;
== Working with External Libraries ==&lt;br /&gt;
&lt;br /&gt;
With Gambit's C FFI (Foreign Function Interface), one can easily use standard C libraries with your code; this wiki has some [[Using Gambit with External Libraries | examples of using Gambit with external libraries]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Termite</id>
		<title>Termite</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Termite"/>
				<updated>2008-03-15T20:12:22Z</updated>
		
		<summary type="html">&lt;p&gt;Guillaume: New page: Termite is a thin layer on top of Gambit which provides Erlang-like features for concurrent and distributed computing.  The homepage is at http://toute.ca.    ''Coming soon on this page: d...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Termite is a thin layer on top of Gambit which provides Erlang-like features for concurrent and distributed computing.&lt;br /&gt;
&lt;br /&gt;
The homepage is at http://toute.ca.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Coming soon on this page: download and installation instructions, a tutorial and examples.''&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/User:Guillaume</id>
		<title>User:Guillaume</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/User:Guillaume"/>
				<updated>2008-03-15T20:08:00Z</updated>
		
		<summary type="html">&lt;p&gt;Guillaume: New page: Guillaume Germain (guillaume.germain@gmail.com)  Author of Termite.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guillaume Germain (guillaume.germain@gmail.com)&lt;br /&gt;
&lt;br /&gt;
Author of [[Termite]].&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/GSoC_ideas_list</id>
		<title>GSoC ideas list</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/GSoC_ideas_list"/>
				<updated>2008-03-15T20:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Guillaume: /* Termite package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is the ideas list for the 2008 GSoC program.  Please check this&lt;br /&gt;
page regularly as we will be adding new ideas as they come up.&lt;br /&gt;
&lt;br /&gt;
Note that this page is editable.  If you have suggestions for projects&lt;br /&gt;
please add them to the second section (&amp;quot;project suggestions&amp;quot;).  The&lt;br /&gt;
first section contains the projects that are officially proposed by&lt;br /&gt;
the organization.  You can make corrections to the text but please&lt;br /&gt;
don't make substantial changes.&lt;br /&gt;
&lt;br /&gt;
The Gambit [[Wish_list | wish list]] may&lt;br /&gt;
also be a good source of inspiration for projects.  However the wish&lt;br /&gt;
list contains projects which require a very good knowledge of the&lt;br /&gt;
Gambit system's structure and internal operation, so they are not&lt;br /&gt;
advisable for students with little or no experience with Gambit.&lt;br /&gt;
&lt;br /&gt;
==Official project proposals==&lt;br /&gt;
&lt;br /&gt;
===Documentation framework===&lt;br /&gt;
&lt;br /&gt;
Gambit's documentation is mainly in the form of a traditional user&lt;br /&gt;
manual.  To increase its usefulness it needs to be easier to access&lt;br /&gt;
while developing code.  Documentation needs to be integrated with the&lt;br /&gt;
tools including: from the text editor (pop-up documentation when a&lt;br /&gt;
call to a built-in function is typed, with information on parameters),&lt;br /&gt;
from the REPL, from the command-line.  Moreover the documentation&lt;br /&gt;
should be automatically checked for consistency on each release (for&lt;br /&gt;
instance by checking that the code examples actually produce the&lt;br /&gt;
result indicated).&lt;br /&gt;
&lt;br /&gt;
Difficulty: easy&lt;br /&gt;
&lt;br /&gt;
Required skills: Scheme, Gambit, and possibly LaTeX, HTML&lt;br /&gt;
&lt;br /&gt;
===Gambit packages===&lt;br /&gt;
&lt;br /&gt;
There is an urgent need for easily reusable packages for miscellaneous&lt;br /&gt;
features including data-structures, message digests, encryption,&lt;br /&gt;
pattern-matching, regular expressions, etc.  Portable Scheme code&lt;br /&gt;
already exists for many of these (e.g. SRFI's, Snow packages, Chicken&lt;br /&gt;
eggs, etc).  The project consists in porting these codes to the Gambit&lt;br /&gt;
system and to write new packages when appropriate.  We expect the&lt;br /&gt;
student to choose the set of packages to port/write based on their&lt;br /&gt;
personal interests.  Due to the high number of packages that need to&lt;br /&gt;
be worked on, this project can accomodate up to 3 students.  If more&lt;br /&gt;
than one student participates on this project, the mentor will help to&lt;br /&gt;
coordinate the work of the students.&lt;br /&gt;
&lt;br /&gt;
Difficulty: easy to medium&lt;br /&gt;
&lt;br /&gt;
Required skills: Scheme, Gambit, algorithms&lt;br /&gt;
&lt;br /&gt;
===Termite package===&lt;br /&gt;
&lt;br /&gt;
Termite is a thin layer on top of Gambit which provides Erlang-like&lt;br /&gt;
features for concurrent and distributed computing.  The current code's&lt;br /&gt;
integration with Gambit could be improved.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;&lt;br /&gt;
The project consists in&lt;br /&gt;
cleaning up the code and turning it into a package that can easily be&lt;br /&gt;
loaded into Gambit to extend the runtime system.&lt;br /&gt;
&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''This has already been done in a soon-to-be-released version of Termite.  Other projects related to Termite would be nice, though, and I would be willing to help/supervise.'' -- [[User:Guillaume|Guillaume]] 16:05, 15 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
Difficulty: medium to hard&lt;br /&gt;
&lt;br /&gt;
Required skills: Scheme, Gambit, multithreading, continuations, networking&lt;br /&gt;
&lt;br /&gt;
===SLIME interface===&lt;br /&gt;
&lt;br /&gt;
SLIME (http://common-lisp.net/project/slime/) is a full-featured Emacs&lt;br /&gt;
mode for multithreaded Common Lisp development.  A port of it exists&lt;br /&gt;
for Scheme48 (&amp;quot;SLIME48&amp;quot;).  The project consists in adapting SLIME to&lt;br /&gt;
Gambit to allow multithreaded remote debugging from Emacs.  The current&lt;br /&gt;
gambit.el emacs-lisp package could be used as a starting point.&lt;br /&gt;
&lt;br /&gt;
Difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Required skills: emacs-lisp, Scheme, Gambit, multithreading&lt;br /&gt;
&lt;br /&gt;
===Web framework===&lt;br /&gt;
&lt;br /&gt;
Thanks to Gambit's high-level networking functions, non-blocking I/O,&lt;br /&gt;
and efficient thread system, a simple high-performance web server can&lt;br /&gt;
be written in a few minutes.  With Gambit's serializable closures and&lt;br /&gt;
continuations it is possible to implement cleanly a fancy web&lt;br /&gt;
framework with advanced features (client-side computation, task&lt;br /&gt;
migration, load balancing, persistent interactions, undoable&lt;br /&gt;
transactions).  The project consists in constructing the framework to&lt;br /&gt;
support these advanced features, and to demonstrate a few of them).&lt;br /&gt;
&lt;br /&gt;
Difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Required skills: HTML, HTTP, Scheme, Gambit&lt;br /&gt;
&lt;br /&gt;
===Native Threading===&lt;br /&gt;
&lt;br /&gt;
Gambit (like most Scheme systems) implements its own lightweight threading system which is not aware of native, operating system threads.  The so-called Gambit Virtual Machine (GVM) can only be bound to one native thread.  This makes it difficult to utilize true parallel processing, which will be an important step in adapting to future hardware.  This also causes C code to block the entire GVM for the duration of the C code's execution.&lt;br /&gt;
&lt;br /&gt;
One solution is to use Termite and spawn multiple Gambit processes.  Although it is a valid solution, it is unacceptable for any real-time system such as video games.  This project aims to extend Gambit in some fashion to utilize system threads.  Various solutions and assumptions will be explored: spawn multiple Gambit systems across threads in one process and have a special shared memory buffer?  Extend Gambit to enforce pure functional programming?&lt;br /&gt;
&lt;br /&gt;
Difficulty: hard&lt;br /&gt;
&lt;br /&gt;
Required skills: Gambit, threading, memory allocation, garbage collection&lt;br /&gt;
&lt;br /&gt;
===Module System===&lt;br /&gt;
&lt;br /&gt;
Gambit offers a simple namespace handling system for code compartimentalization, and the Snow! code compartimentalization and distribution system improves on this. That shouldn't be the end of modular programming in the Gambit world, though, and a project exploring that space is underway here: [[Module_System]]. The project could use one student as complemention of the team. Depending on the skills of the student, he/she could tackle different parts (help compiling all requirements onto a minimal set of features (maybe formal description of the problem spaces, finding missing pieces when coming from an OO background, ...), or implementing parts of the system).&lt;br /&gt;
&lt;br /&gt;
Difficulty: very hard &lt;br /&gt;
&lt;br /&gt;
Required skills: Gambit, functional programming, metaprogramming, OO programming&lt;br /&gt;
&lt;br /&gt;
===SWIG interface===&lt;br /&gt;
&lt;br /&gt;
Gambit's foreign-function-interface (FFI) can be tedious to use for interfacing to C libraries with many functions (such as Xlib, OpenGL).  SWIG (http://www.swig.org/) is an interface generator that supports several high-level programming languages, including a few Schemes (Chicken, MzScheme, Guile).  The goal would be to get SWIG working with Gambit.&lt;br /&gt;
&lt;br /&gt;
Difficulty: medium&lt;br /&gt;
&lt;br /&gt;
Required skills: Gambit, C/C++&lt;br /&gt;
&lt;br /&gt;
==Project suggestions==&lt;br /&gt;
&lt;br /&gt;
Add to this section any projects you want to suggest to the organizers.&lt;br /&gt;
Acceptable projects will be moved to the above section.&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>	</entry>

	</feed>