<?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/wiki/index.php?title=Special:Contributions/Atsmyles&amp;feed=atom&amp;limit=50&amp;target=Atsmyles&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/wiki/index.php?title=Special:Contributions/Atsmyles&amp;feed=atom&amp;limit=50&amp;target=Atsmyles&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Special:Contributions/Atsmyles"/>
		<updated>2013-05-21T20:43:33Z</updated>
		<subtitle>From Gambit wiki</subtitle>
		<generator>MediaWiki 1.16.4</generator>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Using_Gambit_with_External_Libraries</id>
		<title>Using Gambit with External Libraries</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Using_Gambit_with_External_Libraries"/>
				<updated>2010-10-02T00:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ensuring singlethreaded behaviour ==&lt;br /&gt;
In certain situations, it's vital to ensure a single thread of execution.&lt;br /&gt;
&lt;br /&gt;
One way may be to create one thread to which you send closures containing code to be executed, and which returns the responses through a mailbox mechanism, there's an example implementation in the Gambit manual.&lt;br /&gt;
&lt;br /&gt;
Ways to get Gambit execute completely single-threaded is:&lt;br /&gt;
&lt;br /&gt;
* Use (thread-quantum-set! (current-thread) +inf.0)&lt;br /&gt;
&lt;br /&gt;
* Use (##disable-interrupts) and (##enable-interrupts) in Scheme or ___EXT(___disable_interrupts)() and ___EXT(___enable_interrupts)() from C.&lt;br /&gt;
&lt;br /&gt;
Please note that Gambit's I/O system makes use of the scheduler, and threading routines do this also, so don't do read, write, thread-sleep!, thread-yield! etc. in code you intended to execute single-threaded.&lt;br /&gt;
&lt;br /&gt;
== Export and import C symbols ==&lt;br /&gt;
Gambit's gambit.h provides helper macros for exporting functions and variables. They are  ___EXPORT_FUNC(type,name) and ___EXPORT_DATA(type,name), and are used like ___EXPORT_FUNC(int,five) () { return 5; } . Grep lib/*.c of the Gambit sources for EXP_FUNC and EXP_DATA to see examples.&lt;br /&gt;
&lt;br /&gt;
On Windows, exporting and importing functions and variables from C code may be particularly tricky. Check out the Microsoft-provided __declspec(dllexport) and __declspec(dllimport).&lt;br /&gt;
&lt;br /&gt;
== Using gsc to compile and link a dynamically loadable object file that uses external libraries ==&lt;br /&gt;
&lt;br /&gt;
Here is an example of building a dynamically loadable Gambit object file that uses [http://www.fftw.org FFTW].  This example is on Red Hat Enterprise Linux 4.2 on x86-64.&lt;br /&gt;
&lt;br /&gt;
The program uses the FFTW version 2 API, so we downloaded fftw-2.1.5.tar.gz, untarred it and configured it with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --enable-shared --prefix=/export/users/lucier/local/fftw-2.1.5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You need the &amp;lt;tt&amp;gt;--enable-shared&amp;lt;/tt&amp;gt; option because shared Gambit modules must be linked to shared external libraries.  I set the &amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt; to install the final FFTW libraries and header files in my home directory.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;tt&amp;gt;fftbasics.scm&amp;lt;/tt&amp;gt; provides the basic interface between the Scheme code and FFTW; it is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(c-declare&lt;br /&gt;
&amp;quot;&lt;br /&gt;
#include \&amp;quot;fftw.h\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fftwnd_plan p;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
(define fftw2d_create_plan_backward&lt;br /&gt;
  (c-lambda ()&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;p = fftw2d_create_plan(64,&lt;br /&gt;
                                    64,&lt;br /&gt;
                                    FFTW_BACKWARD,&lt;br /&gt;
                                    FFTW_ESTIMATE | FFTW_IN_PLACE);&lt;br /&gt;
            &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
(define fftw2d_create_plan_forward&lt;br /&gt;
  (c-lambda ()&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;p = fftw2d_create_plan(64,&lt;br /&gt;
                                    64,&lt;br /&gt;
                                    FFTW_FORWARD,&lt;br /&gt;
                                    FFTW_ESTIMATE | FFTW_IN_PLACE);&lt;br /&gt;
            &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
;;; Both forward and backward ffts, depends on which way the plan was created.&lt;br /&gt;
&lt;br /&gt;
(define fftwc&lt;br /&gt;
  (c-lambda (scheme-object)&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;&lt;br /&gt;
int j; double *fp = (double *)((___WORD)___BODY_AS(___arg1,___tSUBTYPED));&lt;br /&gt;
  fftwnd_one(p,&lt;br /&gt;
             (fftw_complex *)(fp),&lt;br /&gt;
             NULL);&lt;br /&gt;
  for (j = 0; j &amp;lt; 64 * 64 * 2; j++)&lt;br /&gt;
    fp[j] *= .015625;&lt;br /&gt;
&amp;quot;))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We need to pass special options to gsc to compile this file, namely&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gsc -cc-options &amp;quot;-I/export/users/lucier/local/fftw-2.1.5/include&amp;quot; \&lt;br /&gt;
    -ld-options &amp;quot;-L/export/users/lucier/local/fftw-2.1.5/lib/ -Wl,-rpath,/export/users/lucier/local/fftw-2.1.5/lib/ -lfftw&amp;quot; fftbasic.scm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first option (&amp;lt;tt&amp;gt;-I/export/users/lucier/local/fftw-2.1.5/include&amp;lt;/tt&amp;gt;) tells gcc where to find the header file &amp;lt;tt&amp;gt;fftw.h&amp;lt;/tt&amp;gt; at compile time.  The second option (&amp;lt;tt&amp;gt;-L/export/users/lucier/local/fftw-2.1.5/lib/&amp;lt;/tt&amp;gt;) tells the linker where to find the FFTW library (&amp;lt;tt&amp;gt;-lfftw&amp;lt;/tt&amp;gt;) at link time (i.e., when building the file &amp;lt;tt&amp;gt;fftwbasic.o1&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;fftwbasic.o&amp;lt;/tt&amp;gt;), and the third option (&amp;lt;tt&amp;gt;-Wl,-rpath,/export/users/lucier/local/fftw-2.1.5/lib/&amp;lt;/tt&amp;gt;) tells the dynamic loader &amp;lt;tt&amp;gt;ldd&amp;lt;/tt&amp;gt; where to find the FFTW library when &amp;lt;tt&amp;gt;fftwbasic.o1&amp;lt;/tt&amp;gt; is loaded into gsc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Aside&amp;lt;/b&amp;gt;: Note that if the headers and libraries are in a standard place known to gcc, and the location of the shared library is already in the path of the dynamic loader, then these options may not be necessary.  In many GNU/Linux systems, for examples, nearly all packages are installed in &amp;lt;tt&amp;gt;/usr/{bin,include,lib}&amp;lt;/tt&amp;gt;, and you may not need to pass these special options to gsc.&lt;br /&gt;
&lt;br /&gt;
Then we can do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
euler-316% gsc&lt;br /&gt;
Gambit v4.2.8&lt;br /&gt;
&lt;br /&gt;
&amp;gt; (load &amp;quot;fftbasic&amp;quot;)&lt;br /&gt;
&amp;quot;/export/users/lucier/programs/gambc-v4_2_8/test-load-options/fftbasic.o1&amp;quot;&lt;br /&gt;
&amp;gt; fftwc&lt;br /&gt;
#&amp;lt;procedure #2 fftwc&amp;gt;&lt;br /&gt;
&amp;gt;&lt;br /&gt;
*** EOF again to exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We can check that &amp;lt;tt&amp;gt;fftbasic.o1&amp;lt;/tt&amp;gt; links to the right libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
euler-317% ldd fftbasic.o1&lt;br /&gt;
        libfftw.so.2 =&amp;gt; /export/users/lucier/local/fftw-2.1.5/lib/libfftw.so.2 (0x0000002a9565a000)&lt;br /&gt;
        libc.so.6 =&amp;gt; /lib64/tls/libc.so.6 (0x0000002a957aa000)&lt;br /&gt;
        libm.so.6 =&amp;gt; /lib64/tls/libm.so.6 (0x0000002a959df000)&lt;br /&gt;
        /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, recall from the the [http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#SEC21 Gambit manual] that anything you can do with gsc on the command line you can do with one of the gsc-specific scheme procedures &amp;lt;tt&amp;gt;compile-file&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;compile-file-to-c&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;link-incremental&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;link-flat&amp;lt;/tt&amp;gt;.  Thus, one could build &amp;lt;tt&amp;gt;fftbasic.o1&amp;lt;/tt&amp;gt; by&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
euler-352% gsc&lt;br /&gt;
Gambit v4.2.8&lt;br /&gt;
&lt;br /&gt;
&amp;gt; (compile-file &amp;quot;fftbasic.scm&amp;quot; cc-options: &amp;quot;-I/export/users/lucier/local/fftw-2.1.5/include&amp;quot;&lt;br /&gt;
 ld-options: &amp;quot;-L/export/users/lucier/local/fftw-2.1.5/lib/ -Wl,-rpath,/export/users/lucier/local/fftw-2.1.5/lib/ -lfftw&amp;quot;)&lt;br /&gt;
#t&lt;br /&gt;
&amp;gt; (load &amp;quot;fftbasic&amp;quot;)&lt;br /&gt;
&amp;quot;/export/users/lucier/programs/gambc-v4_2_8/test-load-options/fftbasic.o1&amp;quot;&lt;br /&gt;
&amp;gt; fftwc&lt;br /&gt;
#&amp;lt;procedure #2 fftwc&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing Scheme vectors within a C function ==&lt;br /&gt;
&lt;br /&gt;
Example. Get the pointer to the beginning of a u8vector Scheme object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(define ffi-with-scheme-vectors&lt;br /&gt;
  (c-lambda (scheme-object int) ; scheme-object : the vector , int : the vector size&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;&lt;br /&gt;
//void *u8vectorptr = ___CAST(void*,&amp;amp;___FETCH_U8(___BODY(___arg1),___INT(0)));&lt;br /&gt;
//void *u8vectorptr = ___CAST(void*,&amp;amp;___FETCH_U8(___arg1,0));&lt;br /&gt;
//void *u8vectorptr = ___CAST(void*,___BODY(___arg1));&lt;br /&gt;
//void *u8vectorptr = ___CAST(___U8*,___BODY_AS(___arg1,___tSUBTYPED));&lt;br /&gt;
&lt;br /&gt;
// Of course, you can cast directly to uchar* if you plan to work with that&lt;br /&gt;
unsigned char *u8vectorptr = ___CAST(___U8*,___BODY_AS(___arg1,___tSUBTYPED));&lt;br /&gt;
&lt;br /&gt;
/* Then here do your work with *u8vectorptr, you have its size as the ___arg2 argument */&lt;br /&gt;
            &amp;quot;))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look for examples in &amp;quot;gambit.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Caveat: the C compiler does not know that the GC might move objects, so the C code must be written to avoid calling the GC either directly or indirectly. Remember that the pointer is only to be kept until the next return to Scheme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Practices in FFI development ==&lt;br /&gt;
(There are a couple of posts from September 2008 in the mailing list archive on this subject. Someone please cut and paste them over here.)&lt;br /&gt;
   https://mercure.iro.umontreal.ca/pipermail/gambit-list/2008-September/002572.html&lt;br /&gt;
&lt;br /&gt;
[[Category: FFI]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Using_Gambit_with_External_Libraries</id>
		<title>Using Gambit with External Libraries</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Using_Gambit_with_External_Libraries"/>
				<updated>2010-10-02T00:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ensuring singlethreaded behaviour ==&lt;br /&gt;
In certain situations, it's vital to ensure a single thread of execution.&lt;br /&gt;
&lt;br /&gt;
One way may be to create one thread to which you send closures containing code to be executed, and which returns the responses through a mailbox mechanism, there's an example implementation in the Gambit manual.&lt;br /&gt;
&lt;br /&gt;
Ways to get Gambit execute completely single-threaded is:&lt;br /&gt;
&lt;br /&gt;
* Use (thread-quantum-set! (current-thread) +inf.0)&lt;br /&gt;
&lt;br /&gt;
* Use (##disable-interrupts) and (##enable-interrupts) in Scheme or ___EXT(___disable_interrupts)() and ___EXT(___enable_interrupts)() from C.&lt;br /&gt;
&lt;br /&gt;
Please note that Gambit's I/O system makes use of the scheduler, and threading routines do this also, so don't do read, write, thread-sleep!, thread-yield! etc. in code you intended to execute single-threaded.&lt;br /&gt;
&lt;br /&gt;
== Export and import C symbols ==&lt;br /&gt;
Gambit's gambit.h provides helper macros for exporting functions and variables. They are  ___EXPORT_FUNC(type,name) and ___EXPORT_DATA(type,name), and are used like ___EXPORT_FUNC(int,five) () { return 5; } . Grep lib/*.c of the Gambit sources for EXP_FUNC and EXP_DATA to see examples.&lt;br /&gt;
&lt;br /&gt;
On Windows, exporting and importing functions and variables from C code may be particularly tricky. Check out the Microsoft-provided __declspec(dllexport) and __declspec(dllimport).&lt;br /&gt;
&lt;br /&gt;
== Using gsc to compile and link a dynamically loadable object file that uses external libraries ==&lt;br /&gt;
&lt;br /&gt;
Here is an example of building a dynamically loadable Gambit object file that uses [http://www.fftw.org FFTW].  This example is on Red Hat Enterprise Linux 4.2 on x86-64.&lt;br /&gt;
&lt;br /&gt;
The program uses the FFTW version 2 API, so we downloaded fftw-2.1.5.tar.gz, untarred it and configured it with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure --enable-shared --prefix=/export/users/lucier/local/fftw-2.1.5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You need the &amp;lt;tt&amp;gt;--enable-shared&amp;lt;/tt&amp;gt; option because shared Gambit modules must be linked to shared external libraries.  I set the &amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt; to install the final FFTW libraries and header files in my home directory.&lt;br /&gt;
&lt;br /&gt;
The file &amp;lt;tt&amp;gt;fftbasics.scm&amp;lt;/tt&amp;gt; provides the basic interface between the Scheme code and FFTW; it is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(c-declare&lt;br /&gt;
&amp;quot;&lt;br /&gt;
#include \&amp;quot;fftw.h\&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fftwnd_plan p;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
(define fftw2d_create_plan_backward&lt;br /&gt;
  (c-lambda ()&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;p = fftw2d_create_plan(64,&lt;br /&gt;
                                    64,&lt;br /&gt;
                                    FFTW_BACKWARD,&lt;br /&gt;
                                    FFTW_ESTIMATE | FFTW_IN_PLACE);&lt;br /&gt;
            &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
(define fftw2d_create_plan_forward&lt;br /&gt;
  (c-lambda ()&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;p = fftw2d_create_plan(64,&lt;br /&gt;
                                    64,&lt;br /&gt;
                                    FFTW_FORWARD,&lt;br /&gt;
                                    FFTW_ESTIMATE | FFTW_IN_PLACE);&lt;br /&gt;
            &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
;;; Both forward and backward ffts, depends on which way the plan was created.&lt;br /&gt;
&lt;br /&gt;
(define fftwc&lt;br /&gt;
  (c-lambda (scheme-object)&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;&lt;br /&gt;
int j; double *fp = (double *)((___WORD)___BODY_AS(___arg1,___tSUBTYPED));&lt;br /&gt;
  fftwnd_one(p,&lt;br /&gt;
             (fftw_complex *)(fp),&lt;br /&gt;
             NULL);&lt;br /&gt;
  for (j = 0; j &amp;lt; 64 * 64 * 2; j++)&lt;br /&gt;
    fp[j] *= .015625;&lt;br /&gt;
&amp;quot;))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We need to pass special options to gsc to compile this file, namely&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gsc -cc-options &amp;quot;-I/export/users/lucier/local/fftw-2.1.5/include&amp;quot; \&lt;br /&gt;
    -ld-options &amp;quot;-L/export/users/lucier/local/fftw-2.1.5/lib/ -Wl,-rpath,/export/users/lucier/local/fftw-2.1.5/lib/ -lfftw&amp;quot; fftbasic.scm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first option (&amp;lt;tt&amp;gt;-I/export/users/lucier/local/fftw-2.1.5/include&amp;lt;/tt&amp;gt;) tells gcc where to find the header file &amp;lt;tt&amp;gt;fftw.h&amp;lt;/tt&amp;gt; at compile time.  The second option (&amp;lt;tt&amp;gt;-L/export/users/lucier/local/fftw-2.1.5/lib/&amp;lt;/tt&amp;gt;) tells the linker where to find the FFTW library (&amp;lt;tt&amp;gt;-lfftw&amp;lt;/tt&amp;gt;) at link time (i.e., when building the file &amp;lt;tt&amp;gt;fftwbasic.o1&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;fftwbasic.o&amp;lt;/tt&amp;gt;), and the third option (&amp;lt;tt&amp;gt;-Wl,-rpath,/export/users/lucier/local/fftw-2.1.5/lib/&amp;lt;/tt&amp;gt;) tells the dynamic loader &amp;lt;tt&amp;gt;ldd&amp;lt;/tt&amp;gt; where to find the FFTW library when &amp;lt;tt&amp;gt;fftwbasic.o1&amp;lt;/tt&amp;gt; is loaded into gsc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Aside&amp;lt;/b&amp;gt;: Note that if the headers and libraries are in a standard place known to gcc, and the location of the shared library is already in the path of the dynamic loader, then these options may not be necessary.  In many GNU/Linux systems, for examples, nearly all packages are installed in &amp;lt;tt&amp;gt;/usr/{bin,include,lib}&amp;lt;/tt&amp;gt;, and you may not need to pass these special options to gsc.&lt;br /&gt;
&lt;br /&gt;
Then we can do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
euler-316% gsc&lt;br /&gt;
Gambit v4.2.8&lt;br /&gt;
&lt;br /&gt;
&amp;gt; (load &amp;quot;fftbasic&amp;quot;)&lt;br /&gt;
&amp;quot;/export/users/lucier/programs/gambc-v4_2_8/test-load-options/fftbasic.o1&amp;quot;&lt;br /&gt;
&amp;gt; fftwc&lt;br /&gt;
#&amp;lt;procedure #2 fftwc&amp;gt;&lt;br /&gt;
&amp;gt;&lt;br /&gt;
*** EOF again to exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We can check that &amp;lt;tt&amp;gt;fftbasic.o1&amp;lt;/tt&amp;gt; links to the right libraries:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
euler-317% ldd fftbasic.o1&lt;br /&gt;
        libfftw.so.2 =&amp;gt; /export/users/lucier/local/fftw-2.1.5/lib/libfftw.so.2 (0x0000002a9565a000)&lt;br /&gt;
        libc.so.6 =&amp;gt; /lib64/tls/libc.so.6 (0x0000002a957aa000)&lt;br /&gt;
        libm.so.6 =&amp;gt; /lib64/tls/libm.so.6 (0x0000002a959df000)&lt;br /&gt;
        /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, recall from the the [http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#SEC21 Gambit manual] that anything you can do with gsc on the command line you can do with one of the gsc-specific scheme procedures &amp;lt;tt&amp;gt;compile-file&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;compile-file-to-c&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;link-incremental&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;link-flat&amp;lt;/tt&amp;gt;.  Thus, one could build &amp;lt;tt&amp;gt;fftbasic.o1&amp;lt;/tt&amp;gt; by&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
euler-352% gsc&lt;br /&gt;
Gambit v4.2.8&lt;br /&gt;
&lt;br /&gt;
&amp;gt; (compile-file &amp;quot;fftbasic.scm&amp;quot; cc-options: &amp;quot;-I/export/users/lucier/local/fftw-2.1.5/include&amp;quot;&lt;br /&gt;
 ld-options: &amp;quot;-L/export/users/lucier/local/fftw-2.1.5/lib/ -Wl,-rpath,/export/users/lucier/local/fftw-2.1.5/lib/ -lfftw&amp;quot;)&lt;br /&gt;
#t&lt;br /&gt;
&amp;gt; (load &amp;quot;fftbasic&amp;quot;)&lt;br /&gt;
&amp;quot;/export/users/lucier/programs/gambc-v4_2_8/test-load-options/fftbasic.o1&amp;quot;&lt;br /&gt;
&amp;gt; fftwc&lt;br /&gt;
#&amp;lt;procedure #2 fftwc&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing Scheme vectors within a C function ==&lt;br /&gt;
&lt;br /&gt;
Example. Get the pointer to the beginning of a u8vector Scheme object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(define ffi-with-scheme-vectors&lt;br /&gt;
  (c-lambda (scheme-object int) ; scheme-object : the vector , int : the vector size&lt;br /&gt;
            void&lt;br /&gt;
            &amp;quot;&lt;br /&gt;
//void *u8vectorptr = ___CAST(void*,&amp;amp;___FETCH_U8(___BODY(___arg1),___INT(0)));&lt;br /&gt;
//void *u8vectorptr = ___CAST(void*,&amp;amp;___FETCH_U8(___arg1,0));&lt;br /&gt;
//void *u8vectorptr = ___CAST(void*,___BODY(___arg1));&lt;br /&gt;
//void *u8vectorptr = ___CAST(___U8*,___BODY_AS(___arg1,___tSUBTYPED));&lt;br /&gt;
&lt;br /&gt;
// Of course, you can cast directly to uchar* if you plan to work with that&lt;br /&gt;
unsigned char *u8vectorptr = ___CAST(___U8*,___BODY_AS(___arg1,___tSUBTYPED));&lt;br /&gt;
&lt;br /&gt;
/* Then here do your work with *u8vectorptr, you have its size as the ___arg2 argument */&lt;br /&gt;
            &amp;quot;))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look for examples in &amp;quot;gambit.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Caveat: the C compiler does not know that the GC might move objects, so the C code must be written to avoid calling the GC either directly or indirectly. Remember that the pointer is only to be kept until the next return to Scheme.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Practices in FFI development ==&lt;br /&gt;
(There are a couple of posts from September 2008 in the mailing list archive on this subject. Someone please cut and paste them over here.)&lt;br /&gt;
https://mercure.iro.umontreal.ca/pipermail/gambit-list/2008-September/002572.html&lt;br /&gt;
&lt;br /&gt;
[[Category: FFI]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2010-04-17T21:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
General Discussion mailing list:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/mailman/listinfo/r6gambit http://smyles.com/mailman/listinfo/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
srfi-99.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
I'm having trouble getting things installed. Could you please add a couple of paragraphs of user guide here? I followed the installation instructions (modifying my .gambcini); then I did gsc -i compile. At this point, everything got compiled and copied to my ~/.gambit/lib directory. I then went to that directory, and did gsc -i, followed by (load &amp;quot;r6rs&amp;quot;). No joy, it did not recognize the library or import special forms. Any suggestions? Thanks! (This is a very cool project, though, and I'm sure I'm just doing something dumb.) Oh yes: Gambit-C 4.4.1 on OS X Leopard. &lt;br /&gt;
&lt;br /&gt;
''Sorry for the late reply. I just noticed your message now. To answer your question. There is a function called (r6rs) which will load the base library for you. Then you can use the (program ...) special form. Also, when you use the repl it is still the gambit repl. You can't use import or library. I sometimes lurk on #gambit (I'm atsmyles) irc channel so if you see me we can work through it.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2010-04-10T16:36:40Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
srfi-99.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
I'm having trouble getting things installed. Could you please add a couple of paragraphs of user guide here? I followed the installation instructions (modifying my .gambcini); then I did gsc -i compile. At this point, everything got compiled and copied to my ~/.gambit/lib directory. I then went to that directory, and did gsc -i, followed by (load &amp;quot;r6rs&amp;quot;). No joy, it did not recognize the library or import special forms. Any suggestions? Thanks! (This is a very cool project, though, and I'm sure I'm just doing something dumb.) Oh yes: Gambit-C 4.4.1 on OS X Leopard. &lt;br /&gt;
&lt;br /&gt;
''Sorry for the late reply. I just noticed your message now. To answer your question. There is a function called (r6rs) which will load the base library for you. Then you can use the (program ...) special form. Also, when you use the repl it is still the gambit repl. You can't use import or library. I sometimes lurk on #gambit (I'm atsmyles) irc channel so if you see me we can work through it.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-05-02T15:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
I'm having trouble getting things installed. Could you please add a couple of paragraphs of user guide here? I followed the installation instructions (modifying my .gambcini); then I did gsc -i compile. At this point, everything got compiled and copied to my ~/.gambit/lib directory. I then went to that directory, and did gsc -i, followed by (load &amp;quot;r6rs&amp;quot;). No joy, it did not recognize the library or import special forms. Any suggestions? Thanks! (This is a very cool project, though, and I'm sure I'm just doing something dumb.) Oh yes: Gambit-C 4.4.1 on OS X Leopard. &lt;br /&gt;
&lt;br /&gt;
''Sorry for the late reply. I just noticed your message now. To answer your question. There is a function called (r6rs) which will load the base library for you. Then you can use the (program ...) special form. Also, when you use the repl it is still the gambit repl. You can't use import or library. I sometimes lurk on #gambit (I'm atsmyles) irc channel so if you see me we can work through it.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-04-30T21:16:36Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
I'm having trouble getting things installed. Could you please add a couple of paragraphs of user guide here? I followed the installation instructions (modifying my .gambcini); then I did gsc -i compile. At this point, everything got compiled and copied to my ~/.gambit/lib directory. I then went to that directory, and did gsc -i, followed by (load &amp;quot;r6rs&amp;quot;). No joy, it did not recognize the library or import special forms. Any suggestions? Thanks! (This is a very cool project, though, and I'm sure I'm just doing something dumb.) Oh yes: Gambit-C 4.4.1 on OS X Leopard. &lt;br /&gt;
&lt;br /&gt;
''Sorry for the late reply. I just noticed your message now. To answer your question. There is a function called (r6rs) which will load the base library for you. Then you can use the (program ...) special form. Also, when you use the repl it is still the gambit repl. You can't use import or library. You can only call the hook functions. Don't be discouraged. The system is still very rough. I sometimes lurk on #gambit (I'm atsmyles) irc channel so if you see me we can work through it.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-04-30T21:15:22Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
I'm having trouble getting things installed. Could you please add a couple of paragraphs of user guide here? I followed the installation instructions (modifying my .gambcini); then I did gsc -i compile. At this point, everything got compiled and copied to my ~/.gambit/lib directory. I then went to that directory, and did gsc -i, followed by (load &amp;quot;r6rs&amp;quot;). No joy, it did not recognize the library or import special forms. Any suggestions? Thanks! (This is a very cool project, though, and I'm sure I'm just doing something dumb.) Oh yes: Gambit-C 4.4.1 on OS X Leopard. &lt;br /&gt;
&lt;br /&gt;
''Sorry for the late reply. I just noticed your message now. To answer your question. There is a function called (r6rs) which will load the base library for you. Then you can use the (program ...) special form. Also, when you use the repl it is still the gambit repl. You can't use import or library. You can only call the hook functions. Don't be discouraged. The system is still very rough. I sometimes lurk on #gambit irc channel so if you see me we can work through it.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-03-10T17:56:30Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-03-10T17:55:17Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
I've updated my R6RS package for Gambit.&lt;br /&gt;
&lt;br /&gt;
1. Implemented err5rs records as an R5RS as well as R6RS library&lt;br /&gt;
2. Changed expander.scm and runtime.scm to use the new record system.&lt;br /&gt;
3. Updates for the compile script&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
  *''I've added what you asked in the latest version.'' &lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-03-10T17:51:57Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
I've updated my R6RS package for Gambit.&lt;br /&gt;
&lt;br /&gt;
1. Implemented err5rs records as an R5RS as well as R6RS library&lt;br /&gt;
2. Changed expander.scm and runtime.scm to use the new record system.&lt;br /&gt;
3. Updates for the compile script&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2009-03-10T17:50:22Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: Pointing to the updated project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
I've updated my R6RS package for Gambit.&lt;br /&gt;
&lt;br /&gt;
1. Implemented err5rs records as an R5RS as well as R6RS library&lt;br /&gt;
2. Changed expander.scm and runtime.scm to use the new record system.&lt;br /&gt;
3. Updates for the compile script&lt;br /&gt;
&lt;br /&gt;
The latest tarball is available at:&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit.tar.gz]&lt;br /&gt;
&lt;br /&gt;
The project homepage is now&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit]&lt;br /&gt;
&lt;br /&gt;
The darcs2 repository is available at&lt;br /&gt;
&lt;br /&gt;
[http://smyles.com/projects/r6gambit/darcs]&lt;br /&gt;
&lt;br /&gt;
The err5rs records implementation can be independently used for your&lt;br /&gt;
projects. Just copy the files:&lt;br /&gt;
&lt;br /&gt;
err5rs-records-inspection.scm&lt;br /&gt;
err5rs-records-procedural.scm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
  * Can you add the declarations (declare (standard-binding)(extended-bindings)(block)) to the top of the file?  That would decrease the size of the .c file passed to gcc.&lt;br /&gt;
&lt;br /&gt;
[[Category: Code]] [[Category: Languages]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Internal_Documentation</id>
		<title>Internal Documentation</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Internal_Documentation"/>
				<updated>2009-02-26T18:02:12Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: /* Record system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;People who want to [[Contributing Patches to Gambit Source Code | 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 here.&lt;br /&gt;
&lt;br /&gt;
== Namespace handling ==&lt;br /&gt;
&lt;br /&gt;
See [[Namespaces]].&lt;br /&gt;
&lt;br /&gt;
== Runtime Library ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Management ===&lt;br /&gt;
&lt;br /&gt;
General notes on internal object storage and memory consumption is on the [[Debugging]] page. Also see [[Notes on Memory Management]].&lt;br /&gt;
&lt;br /&gt;
=== Thread System ===&lt;br /&gt;
&lt;br /&gt;
=== I/O System ===&lt;br /&gt;
&lt;br /&gt;
=== Arithmetic implementation ===&lt;br /&gt;
&lt;br /&gt;
=== Eval ===&lt;br /&gt;
&lt;br /&gt;
====Continuation manipulation====&lt;br /&gt;
&lt;br /&gt;
The manual lists &amp;lt;code&amp;gt;continuation-graft&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continuation-capture&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;continuation-return&amp;lt;/code&amp;gt; but doesn't describe them.  The REPL debugger, and possibly other things, use them.  See Marc Feeley's paper ''A Better API for First-Class Continuations''.&lt;br /&gt;
&lt;br /&gt;
=== REPL ===&lt;br /&gt;
&lt;br /&gt;
The REPL has some fairly interesting functions and variables, especially for hackers.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
;&amp;lt;code&amp;gt;##repl-location-relative&amp;lt;/code&amp;gt;&lt;br /&gt;
:Should the REPL give relative or absolute pathnames.  '''Note:''' When using emacs with gambit, it is useful to set it to #f, especially if you change the current-directory.&lt;br /&gt;
 &lt;br /&gt;
==== Functions ====&lt;br /&gt;
;&amp;lt;code&amp;gt;##cmd-&amp;lt;/code&amp;gt;''x''&lt;br /&gt;
:where ''x'' is a REPL command letter (typed after a comma from the REPL).  Executes that command as if it was executed inside of the REPL.  For instance &amp;lt;code&amp;gt;##cmd-b&amp;lt;/code&amp;gt; displays a backtrace.&lt;br /&gt;
&lt;br /&gt;
===Record system===&lt;br /&gt;
&lt;br /&gt;
That is, &amp;lt;code&amp;gt;define-type&amp;lt;/code&amp;gt;.  Based on SRFI-9, but extensions not documented. This email provides the best explanation [https://webmail.iro.umontreal.ca/pipermail/gambit-list/attachments/20090226/af2ee44c/attachment-0001.txt]&lt;br /&gt;
&lt;br /&gt;
== Compiler ==&lt;br /&gt;
&lt;br /&gt;
[[Category: Internals]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Internal_Documentation</id>
		<title>Internal Documentation</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Internal_Documentation"/>
				<updated>2009-02-26T18:00:53Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;People who want to [[Contributing Patches to Gambit Source Code | 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 here.&lt;br /&gt;
&lt;br /&gt;
== Namespace handling ==&lt;br /&gt;
&lt;br /&gt;
See [[Namespaces]].&lt;br /&gt;
&lt;br /&gt;
== Runtime Library ==&lt;br /&gt;
&lt;br /&gt;
=== Memory Management ===&lt;br /&gt;
&lt;br /&gt;
General notes on internal object storage and memory consumption is on the [[Debugging]] page. Also see [[Notes on Memory Management]].&lt;br /&gt;
&lt;br /&gt;
=== Thread System ===&lt;br /&gt;
&lt;br /&gt;
=== I/O System ===&lt;br /&gt;
&lt;br /&gt;
=== Arithmetic implementation ===&lt;br /&gt;
&lt;br /&gt;
=== Eval ===&lt;br /&gt;
&lt;br /&gt;
====Continuation manipulation====&lt;br /&gt;
&lt;br /&gt;
The manual lists &amp;lt;code&amp;gt;continuation-graft&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;continuation-capture&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;continuation-return&amp;lt;/code&amp;gt; but doesn't describe them.  The REPL debugger, and possibly other things, use them.  See Marc Feeley's paper ''A Better API for First-Class Continuations''.&lt;br /&gt;
&lt;br /&gt;
=== REPL ===&lt;br /&gt;
&lt;br /&gt;
The REPL has some fairly interesting functions and variables, especially for hackers.&lt;br /&gt;
&lt;br /&gt;
==== Variables ====&lt;br /&gt;
;&amp;lt;code&amp;gt;##repl-location-relative&amp;lt;/code&amp;gt;&lt;br /&gt;
:Should the REPL give relative or absolute pathnames.  '''Note:''' When using emacs with gambit, it is useful to set it to #f, especially if you change the current-directory.&lt;br /&gt;
 &lt;br /&gt;
==== Functions ====&lt;br /&gt;
;&amp;lt;code&amp;gt;##cmd-&amp;lt;/code&amp;gt;''x''&lt;br /&gt;
:where ''x'' is a REPL command letter (typed after a comma from the REPL).  Executes that command as if it was executed inside of the REPL.  For instance &amp;lt;code&amp;gt;##cmd-b&amp;lt;/code&amp;gt; displays a backtrace.&lt;br /&gt;
&lt;br /&gt;
===Record system===&lt;br /&gt;
&lt;br /&gt;
That is, &amp;lt;code&amp;gt;define-type&amp;lt;/code&amp;gt;.  Based on SRFI-9, but extensions not documented. This email provides the best explanation [https://webmail.iro.umontreal.ca/pipermail/gambit-list/2009-February/003196.html]&lt;br /&gt;
&lt;br /&gt;
== Compiler ==&lt;br /&gt;
&lt;br /&gt;
[[Category: Internals]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009</id>
		<title>Summer Of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009"/>
				<updated>2009-01-25T18:49:22Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''IDEAS'''&lt;br /&gt;
&lt;br /&gt;
Please list your ideas for Summer of Code projects below:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* Finish an implementation of [http://smyles.com/projects/r6gambit R6RS on Gambit Scheme] . Difficulty level: 3 Mentorship offered by Arthur Smyles&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009</id>
		<title>Summer Of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009"/>
				<updated>2009-01-25T18:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''IDEAS'''&lt;br /&gt;
&lt;br /&gt;
Please list your ideas for Summer of Code projects below:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* Finish an implementation of [http://smyles.com/projects/r6gambit R6RS on Gambit Scheme] . Requires skills in Scheme, Gambit, understanding of R6RS. Difficulty level: 3 Mentorship offered by Arthur Smyles&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009</id>
		<title>Summer Of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009"/>
				<updated>2009-01-25T18:47:35Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''IDEAS'''&lt;br /&gt;
&lt;br /&gt;
Please list your ideas for Summer of Code projects below:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Finish an implementation of [http://smyles.com/projects/r6gambit R6RS on Gambit Scheme] . Requires skills in Scheme, Gambit, understanding of R6RS. Difficulty level: 3 Mentorship offered by Arthur Smyles&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009</id>
		<title>Summer Of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009"/>
				<updated>2009-01-25T18:46:50Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''IDEAS'''&lt;br /&gt;
&lt;br /&gt;
Please list your ideas for Summer of Code projects below:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Finish an implementation of [R6RS on Gambit Scheme http://smyles.com/projects/r6gambit] . Requires skills in Scheme, Gambit, understanding of R6RS. Difficulty level: 3 Mentorship offered by Arthur Smyles&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009</id>
		<title>Summer Of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Summer_Of_Code_2009"/>
				<updated>2009-01-25T18:46:16Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: Ideas page for Summer of Code projects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''IDEAS'''&lt;br /&gt;
&lt;br /&gt;
Please list your ideas for Summer of Code projects below:&lt;br /&gt;
&lt;br /&gt;
Finish an implementation of [R6RS on Gambit Scheme http://smyles.com/projects/r6gambit] . Requires skills in Scheme, Gambit, understanding of R6RS. Difficulty level: 3 Mentorship offered by Arthur Smyles&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/User:Atsmyles</id>
		<title>User:Atsmyles</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/User:Atsmyles"/>
				<updated>2009-01-25T18:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; [[Summer Of Code 2009]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/User:Atsmyles</id>
		<title>User:Atsmyles</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/User:Atsmyles"/>
				<updated>2009-01-25T18:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: New page: [SummerofCode2009 Summer Of Code]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[SummerofCode2009 Summer Of Code]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds</id>
		<title>Dumping Grounds</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds"/>
				<updated>2008-10-23T20:00:06Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you will find packages of Gambit code contributed by users.  This page is meant as a simple repository where random code snippets as well as complex systems can easily be stored so that other users can get to them.  This is not a substitute for a repository that is closely coupled with the Gambit system's module system (which is under development).  It is meant to foster the sharing of code by making it extremely easy to publish code in a publicly accessible place.  Sharing a piece of code that is incomplete, undocumented, and unreliable is better than not sharing it, because others can correct the deficiencies, learn from the code, or avoid the bugs.  Hence the name '''Dumping Grounds''' for this page.&lt;br /&gt;
&lt;br /&gt;
The code need not follow a specific structure.  It could simply be a Scheme source file (with a '''.scm''' extension).  However, if you are packaging your code specifically for storing it here, it is best if the name of the package contains a revision number (so that many revisions can be stored) and is a gzip compressed tar file ('''.tgz''' extension) containing the code and documentation (for example file '''Sort-r1.tgz''' containing the files '''Sort-r1/Sort.scm''' and possibly '''Sort-r1/Sort.html''' and other related files).  For some reason the wiki insists on the package name starting with an upper-case letter.  The code is assumed to be in the public domain unless you add licensing information in the package itself or the documentation.&lt;br /&gt;
&lt;br /&gt;
To add a new package you must add an entry for it to this page (copy-paste an existing entry), update the file name in the &amp;lt;nowiki&amp;gt;[[media:Sort-r1.tgz|Sort-r1.tgz]]&amp;lt;/nowiki&amp;gt; link, save the page and click on the link to upload your file.  If you upload a new revision don't forget to change the revision number, and keep the link to the old revisions.&lt;br /&gt;
&lt;br /&gt;
A list of the packages and other files with statistics is available here: [[Special:Imagelist]]&lt;br /&gt;
&lt;br /&gt;
==Packages==&lt;br /&gt;
&lt;br /&gt;
# '''Sort''': Provides a simple sorting procedure for lists and vectors.  The mergesort algorithm is used.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Sort-r1.tgz|Sort-r1.tgz]]&lt;br /&gt;
# '''Pi''': Compute pi to arbitrary precision.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Pi-r3.tgz|Pi-r3.tgz]] (old: [[media:Pi-r2.tgz|Pi-r2.tgz]]) (old: [[media:Pi-r1.tgz|Pi-r1.tgz]])&lt;br /&gt;
# '''Oops''': Object Oriented Programming for Scheme -- Dylan/Clos-like but different&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:oops34.tgz|oops34.tgz]]&lt;br /&gt;
# '''TinyTalk''': Self-like object system with selector [Smalltalk like] dispatch.&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:gambitTT.tgz|gambitTT.tgz]]&lt;br /&gt;
# '''MySQL FFI''': FFI for mysql.  Unsure about thread-safety, and needs more work&lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/mysql/&lt;br /&gt;
# '''Bunny Test''': A simple unit testing framework.  &lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/test/&lt;br /&gt;
# '''Octave''': A simple plotting interface using octave and gnuplot.&lt;br /&gt;
#: Author: Pierre-Alexandre Fournier&lt;br /&gt;
#: Package: (web page) http://carretechnologies.com/scheme/octave/octave.html&lt;br /&gt;
# '''Jss''': JavaScriptScheme: a multithreaded Scheme to JavaScript compiler&lt;br /&gt;
#: Author: Marc Feeley and Catherine Gaudron&lt;br /&gt;
#: Package: [[media:Jss-r1.tgz|Jss-r1.tgz]]&lt;br /&gt;
# '''Schemeray''': A simple (and as of yet, unoptimized) raytracer&lt;br /&gt;
#: Author: James Long&lt;br /&gt;
#: Package: [[media:schemeray-0.2.tgz|schemeray-0.2.tgz]]&lt;br /&gt;
# '''Mparser''': A combinatorial parser (added expression parser) (parser language rewrite)&lt;br /&gt;
#: Author: Francesco Bracchi&lt;br /&gt;
#: Package: [[media:Mparser-r3.tgz|Mparser-r3.tgz]] (old: [[media:Mparser-r1.tgz|Mparser-r1.tgz]], [[media:Mparser-r2.tgz|Mparser-r2.tgz]])&lt;br /&gt;
# '''Opengl FFI''': A simple opengl, glu and glut ffi which supports opengl up to version 1.1.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Opengl-ffi-r1.tgz|Opengl-ffi-r1.tgz]]&lt;br /&gt;
# '''Perlin Noise''': A simple opengl demonstration of a sub-optimal 2d Perlin noise implementation.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Perlin-noise-2d-r1.tgz|Perlin-noise-2d-r1.tgz]]&lt;br /&gt;
# '''R6RS on Gambit''':Allows R6RS programs to be run on Gambit. &lt;br /&gt;
#: Maintainer: Arthur Smyles&lt;br /&gt;
#: Package: (web page) http://smyles.com/projects/r6gambit/&lt;br /&gt;
# '''BLAS''': Thin wrapper for level 1, 2 and 3 BLAS linear algebra routines for the Gambit Scheme system.&lt;br /&gt;
#: Author: Pierre-Alexandre Fournier&lt;br /&gt;
#: Package: (web page) http://carretechnologies.com/scheme/blas/blas.html&lt;br /&gt;
# '''FFTW3''': A wrapper for some FFTW3 functions for the Gambit Scheme system. (real, complex, multi-dimensional FFT functions)&lt;br /&gt;
#: Author: Pierre-Alexandre Fournier&lt;br /&gt;
#: Package: (web page) http://carretechnologies.com/scheme/fftw3/fftw3.html&lt;br /&gt;
# '''SSAX-SXML''': SSAX-SXML library packaged for Gambit-C&lt;br /&gt;
#: Author: Kirill Lisovsky (updated by Dominique Boucher)&lt;br /&gt;
#: Package: (web page) [[media:ssax-sxml-gambit-20080402.tgz|ssax-sxml-gambit-20080402.tgz]]&lt;br /&gt;
# '''Intelligent WTF''': Intelligent acronym decoder based on ''wtf'' from BSD Games&lt;br /&gt;
#: Author: Joel J. Adamson &lt;br /&gt;
#: Package: (web page) http://www.unc.edu/~adamsonj/software.html&lt;br /&gt;
# '''GUI-Toy''': Simple Direct Media Layer prototype code with examples in the raw and using TinyTalk and Oops object systems.&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:GUI-Toy.tgz|GUI-Toy.tgz]]&lt;br /&gt;
# '''Space-Invaders''': Space Invaders classical arcade game remake in scheme over either glut or SDL.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Space-invaders-src-v1.0.tgz|Space-invaders-src-v1.0.tgz]]&lt;br /&gt;
# '''Web Server''': a web server with sessions cookies and server pages.&lt;br /&gt;
#: Author: Francesco Bracchi&lt;br /&gt;
#: Package: [[media:WebServer-r1.tgz|WebServer-r1.tgz]]&lt;br /&gt;
# '''SQLite3''': a minimalistic interface to SQLite3.&lt;br /&gt;
#: Author: Marco Benelli&lt;br /&gt;
#: Package: [[media:SQLite3-r1.tgz|SQLite3-r1.tgz]]&lt;br /&gt;
# '''Postgresql''': A socket level client for Postgresql&lt;br /&gt;
#: Author: Francesco Bracchi&lt;br /&gt;
#: Package: [[media:Postgresql-r1.tgz|Postgresql-r1.tgz]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-08-19T19:25:46Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in Gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The Gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
There are some general differences:&lt;br /&gt;
 * You can't use Gambit's extended lambda syntax. Instead use srfi-89&lt;br /&gt;
 &lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs programs)&lt;br /&gt;
 (rnrs arithmetic fixnums)&lt;br /&gt;
 (rnrs arithmetic bitwise)&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs eval)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs records procedural)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs arithmetic flonums)&lt;br /&gt;
  (rnrs)&lt;br /&gt;
  &lt;br /&gt;
R6RS libraries missing:&lt;br /&gt;
  (rnrs records syntactic (6))&lt;br /&gt;
  (rnrs hashtables (6))&lt;br /&gt;
  (rnrs enums (6))&lt;br /&gt;
&lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
  * Finish importing all gambit api into gambit libraries.&lt;br /&gt;
  * Implement all R6RS api&lt;br /&gt;
  * Remove warnings when loading the R6RS compiled library&lt;br /&gt;
  * Create a error handler that prints R6RS conditions in repl.&lt;br /&gt;
  * Integrate gambit and r6rs repl&lt;br /&gt;
  * Create R6RS mode for Gambit that loads this library&lt;br /&gt;
  * Implement a compile-library and compile-program functions.&lt;br /&gt;
  * Implement a packaging standard&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-04-28T13:56:12Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in Gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The Gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
There are some general differences:&lt;br /&gt;
 * You can't use Gambit's extended lambda syntax. Instead use srfi-89&lt;br /&gt;
 &lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs programs)&lt;br /&gt;
 (rnrs arithmetic fixnums)&lt;br /&gt;
 (rnrs arithmetic bitwise)&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs eval)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs arithmetic flonums)&lt;br /&gt;
  (rnrs)&lt;br /&gt;
  &lt;br /&gt;
R6RS libraries missing:&lt;br /&gt;
  (rnrs records syntactic (6))&lt;br /&gt;
  (rnrs hashtables (6))&lt;br /&gt;
  (rnrs enums (6))&lt;br /&gt;
&lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
  * Finish importing all gambit api into gambit libraries.&lt;br /&gt;
  * Implement all R6RS api&lt;br /&gt;
  * Remove warnings when loading the R6RS compiled library&lt;br /&gt;
  * Create a error handler that prints R6RS conditions in repl.&lt;br /&gt;
  * Integrate gambit and r6rs repl&lt;br /&gt;
  * Create R6RS mode for Gambit that loads this library&lt;br /&gt;
  * Implement a compile-library and compile-program functions.&lt;br /&gt;
  * Implement a packaging standard&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-04-07T21:01:22Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on Gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in Gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The Gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
There are some general differences:&lt;br /&gt;
 * You can't use Gambit's extended lambda syntax. Instead use srfi-89&lt;br /&gt;
 &lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs programs)&lt;br /&gt;
 (rnrs arithmetic fixnums)&lt;br /&gt;
 (rnrs arithmetic bitwise)&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs eval)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs arithmetic flonums)&lt;br /&gt;
  (rnrs)&lt;br /&gt;
  &lt;br /&gt;
R6RS libraries missing:&lt;br /&gt;
  (rnrs records syntactic (6))&lt;br /&gt;
  (rnrs hashtables (6))&lt;br /&gt;
  (rnrs enums (6))&lt;br /&gt;
&lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
  * Finish importing all gambit api into gambit libraries.&lt;br /&gt;
  * Implement all R6RS api&lt;br /&gt;
  * Create a error handler that prints R6RS conditions in repl.&lt;br /&gt;
  * Integrate gambit and r6rs repl&lt;br /&gt;
  * Create R6RS mode for Gambit that loads this library&lt;br /&gt;
  * Implement a compile-library and compile-program functions.&lt;br /&gt;
  * Implement a packaging standard&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-23T14:17:59Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
There are some general differences:&lt;br /&gt;
 * You can't use Gambit's extended lambda syntax. Instead use srfi-89&lt;br /&gt;
 &lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs programs)&lt;br /&gt;
 (rnrs arithmetic fixnums)&lt;br /&gt;
 (rnrs arithmetic bitwise)&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs eval)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs arithmetic flonums)&lt;br /&gt;
  (rnrs)&lt;br /&gt;
  &lt;br /&gt;
R6RS libraries missing:&lt;br /&gt;
  (rnrs records syntactic (6))&lt;br /&gt;
  (rnrs hashtables (6))&lt;br /&gt;
  (rnrs enums (6))&lt;br /&gt;
&lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
  * Finish importing all gambit api into gambit libraries.&lt;br /&gt;
  * Implement all R6RS api&lt;br /&gt;
  * Create a error handler that prints R6RS conditions in repl.&lt;br /&gt;
  * Integrate gambit and r6rs repl&lt;br /&gt;
  * Create R6RS mode for gambit that loads this library&lt;br /&gt;
  * Implement a compile-library and compile-program functions.&lt;br /&gt;
  * Implement a packaging standard&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:34:07Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
There are some general differences:&lt;br /&gt;
 * You can't use Gambit's extended lambda syntax. Instead use srfi-89&lt;br /&gt;
 &lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  &lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
  * Finish importing all gambit api into gambit libraries.&lt;br /&gt;
  * Implement all R6RS api&lt;br /&gt;
  * Create a error handler that prints R6RS conditions in repl.&lt;br /&gt;
  * Integrate gambit and r6rs repl&lt;br /&gt;
  * Create R6RS mode for gambit that loads this library&lt;br /&gt;
  * Implement a compile-library and compile-program functions.&lt;br /&gt;
  * Implement a packaging standard&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:30:20Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
There are some general differences:&lt;br /&gt;
 * You can't use Gambit's extended lambda syntax. Instead use srfi-89&lt;br /&gt;
 &lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  &lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
  * Finish importing all gambit api into gambit libraries&lt;br /&gt;
  * Implement all R6RS api&lt;br /&gt;
  * Implement a compile-library and compile-program functions.&lt;br /&gt;
  * Implement a packaging standard&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:22:54Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers; each layer being dependent on the previous layer.&lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  &lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds</id>
		<title>Dumping Grounds</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds"/>
				<updated>2008-03-22T22:21:45Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you will find packages of Gambit code contributed by users.  This page is meant as a simple repository where random code snippets as well as complex systems can easily be stored so that other users can get to them.  This is not a substitute for a repository that is closely coupled with the Gambit system's module system (which is under development).  It is meant to foster the sharing of code by making it extremely easy to publish code in a publicly accessible place.  Sharing a piece of code that is incomplete, undocumented, and unreliable is better than not sharing it, because others can correct the deficiencies, learn from the code, or avoid the bugs.  Hence the name '''Dumping Grounds''' for this page.&lt;br /&gt;
&lt;br /&gt;
The code need not follow a specific structure.  It could simply be a Scheme source file (with a '''.scm''' extension).  However, if you are packaging your code specifically for storing it here, it is best if the name of the package contains a revision number (so that many revisions can be stored) and is a gzip compressed tar file ('''.tgz''' extension) containing the code and documentation (for example file '''Sort-r1.tgz''' containing the files '''Sort-r1/Sort.scm''' and possibly '''Sort-r1/Sort.html''' and other related files).  For some reason the wiki insists on the package name starting with an upper-case letter.  The code is assumed to be in the public domain unless you add licensing information in the package itself or the documentation.&lt;br /&gt;
&lt;br /&gt;
To add a new package you must add an entry for it to this page (copy-paste an existing entry), update the file name in the &amp;lt;nowiki&amp;gt;[[media:Sort-r1.tgz|Sort-r1.tgz]]&amp;lt;/nowiki&amp;gt; link, save the page and click on the link to upload your file.  If you upload a new revision don't forget to change the revision number, and keep the link to the old revisions.&lt;br /&gt;
&lt;br /&gt;
A list of the packages and other files with statistics is available here: [[Special:Imagelist]]&lt;br /&gt;
&lt;br /&gt;
==Packages==&lt;br /&gt;
&lt;br /&gt;
# '''Sort''': Provides a simple sorting procedure for lists and vectors.  The mergesort algorithm is used.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Sort-r1.tgz|Sort-r1.tgz]]&lt;br /&gt;
# '''Pi''': Compute pi to arbitrary precision.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Pi-r3.tgz|Pi-r3.tgz]] (old: [[media:Pi-r2.tgz|Pi-r2.tgz]]) (old: [[media:Pi-r1.tgz|Pi-r1.tgz]])&lt;br /&gt;
# '''Oops''': Object Oriented Programming for Scheme -- Dylan/Clos-like but different&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:oops33.tgz|oops33.tgz]]&lt;br /&gt;
# '''TinyTalk''': Self-like object system with selector [Smalltalk like] dispatch.&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:gambitTT.tgz|gambitTT.tgz]]&lt;br /&gt;
# '''MySQL FFI''': FFI for mysql.  Unsure about thread-safety, and needs more work&lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/mysql/&lt;br /&gt;
# '''Bunny Test''': A simple unit testing framework.  &lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/test/&lt;br /&gt;
# '''Octave''': A simple plotting interface using octave and gnuplot.&lt;br /&gt;
#: Author: Pierre-Alexandre Fournier&lt;br /&gt;
#: Package: (web page) http://carretechnologies.com/scheme/octave/octave.html&lt;br /&gt;
# '''Jss''': JavaScriptScheme: a multithreaded Scheme to JavaScript compiler&lt;br /&gt;
#: Author: Marc Feeley and Catherine Gaudron&lt;br /&gt;
#: Package: [[media:Jss-r1.tgz|Jss-r1.tgz]]&lt;br /&gt;
# '''Schemeray''': A simple (and as of yet, unoptimized) raytracer&lt;br /&gt;
#: Author: James Long&lt;br /&gt;
#: Package: [[media:schemeray-0.2.tgz|schemeray-0.2.tgz]]&lt;br /&gt;
# '''Mparser''': A combinatorial parser&lt;br /&gt;
#: Author: Francesco Bracchi&lt;br /&gt;
#: Package: [[media:Mparser-r1.tgz|Mparser-r1.tgz]]&lt;br /&gt;
# '''Opengl FFI''': A simple opengl, glu and glut ffi which supports opengl up to version 1.1.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Opengl-ffi-r1.tgz|Opengl-ffi-r1.tgz]]&lt;br /&gt;
# '''Perlin Noise''': A simple opengl demonstration of a sub-optimal 2d Perlin noise implementation.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Perlin-noise-2d-r1.tgz|Perlin-noise-2d-r1.tgz]]&lt;br /&gt;
# '''R6RS on Gambit''':Allows R6RS programs to be run on Gambit. See [[R6RS]] for more information&lt;br /&gt;
#: Maintainer: Arthur Smyles&lt;br /&gt;
#: Package: [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's [http://www.het.brown.edu/people/andre/macros syntax-case &amp;amp; library system] on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers. &lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  &lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:14:11Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's syntax-case &amp;amp; library system on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers. &lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
 (gambit debug)&lt;br /&gt;
 (gambit bytevectors)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries (incomplete):&lt;br /&gt;
  (rnrs unicode)&lt;br /&gt;
  (rnrs io ports)&lt;br /&gt;
  (rnrs io simple)&lt;br /&gt;
  (rnrs bytevectors)&lt;br /&gt;
  &lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-2)&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:06:34Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's syntax-case &amp;amp; library system on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers. &lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;br /&gt;
 (srfi-89)&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS</id>
		<title>R6RS</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/R6RS"/>
				<updated>2008-03-22T22:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Andre van Tonder's syntax-case &amp;amp; library system on gambit&lt;br /&gt;
&lt;br /&gt;
There is a R6RS distribution located at [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]. There is a compile script written in gambit scheme that will compile all the libraries together into a loadable library. The libraries are divided into 3 layers. &lt;br /&gt;
&lt;br /&gt;
 1. The gambit libraries are where all the extensions to r5rs are put&lt;br /&gt;
 2. the standard and base libraries.&lt;br /&gt;
 3. The srfi's that are implemented by gambit.&lt;br /&gt;
&lt;br /&gt;
Gambit libraries:&lt;br /&gt;
 (gambit threads)&lt;br /&gt;
 (gambit exceptions)&lt;br /&gt;
 (gambit extensions)&lt;br /&gt;
 (gambit files)&lt;br /&gt;
 (gambit io)&lt;br /&gt;
 (gambit io readtable)&lt;br /&gt;
 (gambit programs)&lt;br /&gt;
 (gambit time)&lt;br /&gt;
 (gambit will)&lt;br /&gt;
&lt;br /&gt;
R6RS libraries implemented:&lt;br /&gt;
 (rnrs syntax-case)&lt;br /&gt;
 (rnrs r5rs)&lt;br /&gt;
 (rnrs sorting)&lt;br /&gt;
 (rnrs mutable-strings)&lt;br /&gt;
 (rnrs mutable-pairs)&lt;br /&gt;
 (rnrs arithmetic ...)&lt;br /&gt;
 (rnrs conditions)&lt;br /&gt;
 (rnrs exceptions)&lt;br /&gt;
 (rnrs control)&lt;br /&gt;
 (rnrs files)&lt;br /&gt;
 (rnrs lists)&lt;br /&gt;
 (rnrs base)&lt;br /&gt;
 (rnrs records procedural)&lt;br /&gt;
 (rnrs records inspection)&lt;br /&gt;
&lt;br /&gt;
SRFI libraries:&lt;br /&gt;
 (srfi-4)&lt;br /&gt;
 (srfi-6)&lt;br /&gt;
 (srfi-8)&lt;br /&gt;
 (srfi-9)&lt;br /&gt;
 (srfi-18)&lt;br /&gt;
 (srfi-21)&lt;br /&gt;
 (srfi-23)&lt;br /&gt;
 (srfi-27)&lt;br /&gt;
 (srfi-39)&lt;br /&gt;
 (srfi-88)&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/File:Gambit-r6rs.tgz</id>
		<title>File:Gambit-r6rs.tgz</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/File:Gambit-r6rs.tgz"/>
				<updated>2008-03-22T22:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds</id>
		<title>Dumping Grounds</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds"/>
				<updated>2008-03-22T22:01:58Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: /* Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you will find packages of Gambit code contributed by users.  This page is meant as a simple repository where random code snippets as well as complex systems can easily be stored so that other users can get to them.  This is not a substitute for a repository that is closely coupled with the Gambit system's module system (which is under development).  It is meant to foster the sharing of code by making it extremely easy to publish code in a publicly accessible place.  Sharing a piece of code that is incomplete, undocumented, and unreliable is better than not sharing it, because others can correct the deficiencies, learn from the code, or avoid the bugs.  Hence the name '''Dumping Grounds''' for this page.&lt;br /&gt;
&lt;br /&gt;
The code need not follow a specific structure.  It could simply be a Scheme source file (with a '''.scm''' extension).  However, if you are packaging your code specifically for storing it here, it is best if the name of the package contains a revision number (so that many revisions can be stored) and is a gzip compressed tar file ('''.tgz''' extension) containing the code and documentation (for example file '''Sort-r1.tgz''' containing the files '''Sort-r1/Sort.scm''' and possibly '''Sort-r1/Sort.html''' and other related files).  For some reason the wiki insists on the package name starting with an upper-case letter.  The code is assumed to be in the public domain unless you add licensing information in the package itself or the documentation.&lt;br /&gt;
&lt;br /&gt;
To add a new package you must add an entry for it to this page (copy-paste an existing entry), update the file name in the &amp;lt;nowiki&amp;gt;[[media:Sort-r1.tgz|Sort-r1.tgz]]&amp;lt;/nowiki&amp;gt; link, save the page and click on the link to upload your file.  If you upload a new revision don't forget to change the revision number, and keep the link to the old revisions.&lt;br /&gt;
&lt;br /&gt;
A list of the packages and other files with statistics is available here: [[Special:Imagelist]]&lt;br /&gt;
&lt;br /&gt;
==Packages==&lt;br /&gt;
&lt;br /&gt;
# '''Sort''': Provides a simple sorting procedure for lists and vectors.  The mergesort algorithm is used.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Sort-r1.tgz|Sort-r1.tgz]]&lt;br /&gt;
# '''Pi''': Compute pi to arbitrary precision.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Pi-r3.tgz|Pi-r3.tgz]] (old: [[media:Pi-r2.tgz|Pi-r2.tgz]]) (old: [[media:Pi-r1.tgz|Pi-r1.tgz]])&lt;br /&gt;
# '''Oops''': Object Oriented Programming for Scheme -- Dylan/Clos-like but different&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:oops33.tgz|oops33.tgz]]&lt;br /&gt;
# '''TinyTalk''': Self-like object system with selector [Smalltalk like] dispatch.&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:gambitTT.tgz|gambitTT.tgz]]&lt;br /&gt;
# '''MySQL FFI''': FFI for mysql.  Unsure about thread-safety, and needs more work&lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/mysql/&lt;br /&gt;
# '''Bunny Test''': A simple unit testing framework.  &lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/test/&lt;br /&gt;
# '''Octave''': A simple plotting interface using octave and gnuplot.&lt;br /&gt;
#: Author: Pierre-Alexandre Fournier&lt;br /&gt;
#: Package: (web page) http://carretechnologies.com/scheme/octave/octave.html&lt;br /&gt;
# '''Jss''': JavaScriptScheme: a multithreaded Scheme to JavaScript compiler&lt;br /&gt;
#: Author: Marc Feeley and Catherine Gaudron&lt;br /&gt;
#: Package: [[media:Jss-r1.tgz|Jss-r1.tgz]]&lt;br /&gt;
# '''Schemeray''': A simple (and as of yet, unoptimized) raytracer&lt;br /&gt;
#: Author: James Long&lt;br /&gt;
#: Package: [[media:schemeray-0.2.tgz|schemeray-0.2.tgz]]&lt;br /&gt;
# '''Mparser''': A combinatorial parser&lt;br /&gt;
#: Author: Francesco Bracchi&lt;br /&gt;
#: Package: [[media:Mparser-r1.tgz|Mparser-r1.tgz]]&lt;br /&gt;
# '''Opengl FFI''': A simple opengl, glu and glut ffi which supports opengl up to version 1.1.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Opengl-ffi-r1.tgz|Opengl-ffi-r1.tgz]]&lt;br /&gt;
# '''Perlin Noise''': A simple opengl demonstration of a sub-optimal 2d Perlin noise implementation.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Perlin-noise-2d-r1.tgz|Perlin-noise-2d-r1.tgz]]&lt;br /&gt;
# '''R6RS on Gambit''':Allows R6RS programs to be run on Gambit.&lt;br /&gt;
#: Maintainer: Arthur Smyles&lt;br /&gt;
#: Package: [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	<entry>
		<id>http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds</id>
		<title>Dumping Grounds</title>
		<link rel="alternate" type="text/html" href="http://dynamo.iro.umontreal.ca/wiki/index.php/Dumping_Grounds"/>
				<updated>2008-03-22T22:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;Atsmyles: /* Packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you will find packages of Gambit code contributed by users.  This page is meant as a simple repository where random code snippets as well as complex systems can easily be stored so that other users can get to them.  This is not a substitute for a repository that is closely coupled with the Gambit system's module system (which is under development).  It is meant to foster the sharing of code by making it extremely easy to publish code in a publicly accessible place.  Sharing a piece of code that is incomplete, undocumented, and unreliable is better than not sharing it, because others can correct the deficiencies, learn from the code, or avoid the bugs.  Hence the name '''Dumping Grounds''' for this page.&lt;br /&gt;
&lt;br /&gt;
The code need not follow a specific structure.  It could simply be a Scheme source file (with a '''.scm''' extension).  However, if you are packaging your code specifically for storing it here, it is best if the name of the package contains a revision number (so that many revisions can be stored) and is a gzip compressed tar file ('''.tgz''' extension) containing the code and documentation (for example file '''Sort-r1.tgz''' containing the files '''Sort-r1/Sort.scm''' and possibly '''Sort-r1/Sort.html''' and other related files).  For some reason the wiki insists on the package name starting with an upper-case letter.  The code is assumed to be in the public domain unless you add licensing information in the package itself or the documentation.&lt;br /&gt;
&lt;br /&gt;
To add a new package you must add an entry for it to this page (copy-paste an existing entry), update the file name in the &amp;lt;nowiki&amp;gt;[[media:Sort-r1.tgz|Sort-r1.tgz]]&amp;lt;/nowiki&amp;gt; link, save the page and click on the link to upload your file.  If you upload a new revision don't forget to change the revision number, and keep the link to the old revisions.&lt;br /&gt;
&lt;br /&gt;
A list of the packages and other files with statistics is available here: [[Special:Imagelist]]&lt;br /&gt;
&lt;br /&gt;
==Packages==&lt;br /&gt;
&lt;br /&gt;
# '''Sort''': Provides a simple sorting procedure for lists and vectors.  The mergesort algorithm is used.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Sort-r1.tgz|Sort-r1.tgz]]&lt;br /&gt;
# '''Pi''': Compute pi to arbitrary precision.&lt;br /&gt;
#: Author: Marc Feeley&lt;br /&gt;
#: Package: [[media:Pi-r3.tgz|Pi-r3.tgz]] (old: [[media:Pi-r2.tgz|Pi-r2.tgz]]) (old: [[media:Pi-r1.tgz|Pi-r1.tgz]])&lt;br /&gt;
# '''Oops''': Object Oriented Programming for Scheme -- Dylan/Clos-like but different&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:oops33.tgz|oops33.tgz]]&lt;br /&gt;
# '''TinyTalk''': Self-like object system with selector [Smalltalk like] dispatch.&lt;br /&gt;
#: Author: Ken Dickey&lt;br /&gt;
#: Package: [[media:gambitTT.tgz|gambitTT.tgz]]&lt;br /&gt;
# '''MySQL FFI''': FFI for mysql.  Unsure about thread-safety, and needs more work&lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/mysql/&lt;br /&gt;
# '''Bunny Test''': A simple unit testing framework.  &lt;br /&gt;
#: Author: Jonathan Arkell&lt;br /&gt;
#: Package: (svn repository) http://bunny.jonnay.net/zengarden/trunk/lib/test/&lt;br /&gt;
# '''Octave''': A simple plotting interface using octave and gnuplot.&lt;br /&gt;
#: Author: Pierre-Alexandre Fournier&lt;br /&gt;
#: Package: (web page) http://carretechnologies.com/scheme/octave/octave.html&lt;br /&gt;
# '''Jss''': JavaScriptScheme: a multithreaded Scheme to JavaScript compiler&lt;br /&gt;
#: Author: Marc Feeley and Catherine Gaudron&lt;br /&gt;
#: Package: [[media:Jss-r1.tgz|Jss-r1.tgz]]&lt;br /&gt;
# '''Schemeray''': A simple (and as of yet, unoptimized) raytracer&lt;br /&gt;
#: Author: James Long&lt;br /&gt;
#: Package: [[media:schemeray-0.2.tgz|schemeray-0.2.tgz]]&lt;br /&gt;
# '''Mparser''': A combinatorial parser&lt;br /&gt;
#: Author: Francesco Bracchi&lt;br /&gt;
#: Package: [[media:Mparser-r1.tgz|Mparser-r1.tgz]]&lt;br /&gt;
# '''Opengl FFI''': A simple opengl, glu and glut ffi which supports opengl up to version 1.1.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Opengl-ffi-r1.tgz|Opengl-ffi-r1.tgz]]&lt;br /&gt;
# '''Perlin Noise''': A simple opengl demonstration of a sub-optimal 2d Perlin noise implementation.&lt;br /&gt;
#: Author: David St-Hilaire&lt;br /&gt;
#: Package: [[media:Perlin-noise-2d-r1.tgz|Perlin-noise-2d-r1.tgz]]&lt;br /&gt;
#: Package: [[media:gambit-r6rs.tgz|gambit-r6rs.tgz]]&lt;br /&gt;
# '''R6RS on Gambit''':Allows R6RS programs to be run on Gambit.&lt;br /&gt;
#: Maintainer: Arthur Smyles&lt;/div&gt;</summary>
		<author><name>Atsmyles</name></author>	</entry>

	</feed>