<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for rotty</title>
    <link>http://www.advogato.org/person/rotty/</link>
    <description>Advogato blog for rotty</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Thu, 23 May 2013 13:43:15 GMT</pubDate>
    <item>
      <pubDate>Wed, 12 Aug 2009 18:12:00 GMT</pubDate>
      <title>Docs, features and babbling</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=7</link>
      <guid>http://rotty.yi.org/blog/archives/2009/08/12/docs-features-and-babbling</guid>
      <description>&lt;content type="xhtml"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div&gt;&lt;h4&gt;sbank Tutorial&lt;/h4&gt;&lt;p&gt;
  There's now
  a &lt;a href="http://rotty.yi.org/software/sbank/tutorial.html" &gt;tutorial&lt;/a&gt;
  for &lt;a href="http://rotty.yi.org/software/sbank/" &gt;sbank&lt;/a&gt;; this is
  work-in-progress, but I'd be happy about any suggestions on how to
  expand it and what to focus on.
&lt;/p&gt;&lt;h4&gt;New IRClogs features&lt;/h4&gt;&lt;p&gt;
  Also, I've been brushing up
  my &lt;a href="http://rotty.yi.org/irclogs/" &gt;IRClogs webapp&lt;/a&gt;
  recently; it now features:
  &lt;ul&gt;&lt;li&gt;&lt;p&gt;Showing a configurable amount of context around search hits,
        so you can make more sense of search results without having to
        go back to the page for that day.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Matching phrases in the search results are now
        highlighted.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Each search result entry now links directly to the
        corresponding day-page entry.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
  
  See &lt;a href="http://rotty.yi.org/irclogs/freenode/%23scheme/?q=(nick rotty) (base-date &amp;quot;2009-08-07&amp;quot;) IRClogs&amp;amp;c=5" &gt;this
  link&lt;/a&gt; for an example that shows off the features listed above. On
  the non-user-visible side, there's now support for gzipped logs,
  which saves a considerable amount of space, just &lt;code&gt;gzip
  -9&lt;/code&gt; the older log files &amp;#x2014; this should also work while
  the IRClogs server is running.
&lt;/p&gt;&lt;h4&gt;Ruby babbling&lt;/h4&gt;&lt;p&gt;
  I'm using &lt;a href="http://home.gna.org/feed2imap/" &gt;feed2imap&lt;/a&gt; to
  get all those RSS and Atom feeds into
  my &lt;a href="http://www.gnus.org/" &gt;beloved MUA&lt;/a&gt;. As I run spam
  filtering, and split incoming email
  into &lt;a href="http://en.wikipedia.org/wiki/Maildir" &gt;Maildir&lt;/a&gt;
  folders on a small server at home (in a setup
  involving &lt;a href="http://spamassassin.apache.org/" &gt;SpamAssassin&lt;/a&gt;,
  &lt;a href="http://www.postfix.org/" &gt;Postfix&lt;/a&gt;
  and &lt;a href="http://0xcc.net/scmail/index.html.en" &gt;scmail&lt;/a&gt;) and
  serve those folders over IMAP
  (using &lt;a href="http://www.dovecot.org/" &gt;Dovecot&lt;/a&gt;), I've decided
  to add Maildir support to feed2imap, so I no longer have to place my
  IMAP password in feed2imap's plain-text configuration file. 
&lt;/p&gt;&lt;p&gt;
  As feed2imap is implemented
  in &lt;a href="http://www.ruby-lang.org/en/" &gt;Ruby&lt;/a&gt;, this has
  provided me the opportunity to get my feet wet (or rather moist) in
  this language. Having a good grip on Python and Scheme, my one-word
  summary so far would be: &lt;em&gt;Unsurprising!&lt;/em&gt;.  
&lt;/p&gt;&lt;p&gt;
  If you're interested in the patch, have a watch
  on &lt;a href="https://gna.org/bugs/index.php?14113" &gt;the bug report&lt;/a&gt;
  &amp;#x2014; I'll attach it there once it's in a reasonable shape.
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/content&gt;</description>
    </item>
    <item>
      <pubDate>Sun, 12 Jul 2009 14:17:51 GMT</pubDate>
      <title>Shiny New Blog</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=6</link>
      <guid>http://rotty.yi.org/blog/archives/2009/07/03/shiny-new-blog</guid>
      <description>&lt;content type="xhtml"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div&gt;&lt;p&gt;
While I had a &lt;a href="http://wordpress.org/" &gt;WordPress&lt;/a&gt;-based blog
quite some time ago (which I rarely made use of), I was never quite
content with it; I wanted something more simple, something that does
not need a
whole &lt;acronym title="Linux/Apache/MySQL/PHP"&gt;LAMP&lt;/acronym&gt; stack,
doesn't require tinkering with &lt;em&gt;mod_rewrite&lt;/em&gt;, and ideally has a
codebase that I'd want to hack on (which definitely rules out
WordPress, which is written in PHP).
&lt;/p&gt;&lt;h4&gt;Tekuti in R6RS clothing&lt;/h4&gt;&lt;p&gt;
Well,
meet &lt;a href="http://wingolog.org/software/tekuti/" &gt;Tekuti&lt;/a&gt;. It's a
lean blogging engine using Git as storage (so you get hot-backup and
versioning for free), and, best of all, it's written in
&lt;a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)" &gt;Scheme&lt;/a&gt;. Since
I already have a Scheme HTTP server running
for &lt;a href="http://rottyforge.yi.org/irclogs/" &gt;IRClogs&lt;/a&gt;, I decided
to hack Tekuti so it could run in the same process; this involved
porting Tekuti to R6RS and adding code to interface with the
web-server (the original Tekuti only provides its services via
the &lt;em&gt;mod_lisp&lt;/em&gt; protocol). I must say that working with the
Tekuti code was a joy; after getting it running using the mod_lisp
protocol under &lt;a href="http://www.ikarus-scheme.org" &gt;Ikarus&lt;/a&gt;
and &lt;a href="http://code.google.com/p/ypsilon/" &gt;Ypsilon&lt;/a&gt;, I could
add the HTTP integration without touching the rest of the code at
all. Kudos to &lt;a href="http://wingolog.org" &gt;Andy Wingo&lt;/a&gt; for writing
this nice piece of code.
&lt;/p&gt;&lt;h4&gt;Yet another Scheme Web server&lt;/h4&gt;&lt;p&gt;
To avoid code duplication, I re-factored the
ad-hoc &lt;a href="http://live.gnome.org/LibSoup" &gt;libsoup&lt;/a&gt;-based web
server that drove the IRClogs application
into &lt;a href="http://dev.dawgmatix.com/cgi-bin/darcsweb.cgi?r=spenet;a=tree;f=/libraries" &gt;
its own library&lt;/a&gt;. The interface provided by the library is very
much inspired by
the &lt;a href="http://www.scsh.net/resources/sunet.html" &gt;SUnet&lt;/a&gt; Web
Server and hides libsoup entirely.
&lt;/p&gt;&lt;p&gt;
So, how does my script for running IRClogs and Tekuti inside the
SPEnet HTTPd look like? Well, leaving out the customization and
library imports, like this:

&lt;pre&gt;
(define (rforge-request-handler irclogs)
  (alist-path-dispatcher
   `(("blog" . ,(tekuti-handler))
     ("irclogs" . ,(lambda (path request)
                     (irclogs 'dispatch path request))))
   (rooted-file-handler *static-dir*)))

(let ((irclogs (make-irclogs *irclogs-config*)))
   (httpd (make-httpd-options
           with-port *port*
           with-request-handler (rforge-request-handler irclogs))
          (lambda (httpd)
            (irclogs 'update-state)
            (httpd/add-timeout httpd 60 (lambda ()
                                          (irclogs 'update-state)
                                          #t))))))
&lt;/pre&gt;

Running the above code,
with &lt;code&gt;*port*&lt;/code&gt;, &lt;code&gt;*static-dir*&lt;/code&gt;
and &lt;code&gt;*irclogs-config*&lt;/code&gt; appropriatly defined, will launch a
completely stand-alone web server that will serve IRC logs, run a
Tekuti blog instance, and provide static content
from &lt;code&gt;*static-dir*&lt;/code&gt;.
&lt;/p&gt;&lt;h4&gt;Code&lt;/h4&gt;&lt;p&gt;You can fetch the R6RS port of Tekuti via git:&lt;/p&gt;&lt;pre&gt;
git clone git://gitorious.org/tekuti/tekuti.git
git checkout t/r6rs/do-port
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/content&gt;</description>
    </item>
    <item>
      <pubDate>Sat, 22 Oct 2005 02:02:23 GMT</pubDate>
      <title>22 Oct 2005</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=5</link>
      <guid>http://www.advogato.org/person/rotty/diary.html?start=5</guid>
      <description>My blog is now &lt;a href="http://rottylog.yi.org/" &gt;wordpress-powered&lt;/a&gt;, please adjust URL.</description>
    </item>
    <item>
      <pubDate>Thu, 13 Oct 2005 21:03:20 GMT</pubDate>
      <title>13 Oct 2005</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=4</link>
      <guid>http://www.advogato.org/person/rotty/diary.html?start=4</guid>
      <description>&lt;b&gt;A Guile rant&lt;/b&gt;

&lt;p&gt; I began to program in Scheme using the Guile interpreter. While I knew that its not blazingly fast, its the official GNU extension language, and as feeling quite close to the goals of the GNU project and the FSF, I felt confident it was the right choice, also considering the supreme quality of other GNU software, such as the GNU toolchain (GCC, binutils, gas) and the Gimp, to name just a few.

&lt;p&gt; So, feeling confident with my choice, I started to crank out code and eventually even took over maintainership over a Guile application, namely &lt;a href="http://www.nongnu.org/g-wrap/" &gt;G-Wrap&lt;/a&gt;, after giving it a complete brush-up code-wise. When &lt;a href="http://www.gnuarch.org/" &gt;Tom Lord&lt;/a&gt;, of GNU Arch fame (and coincidently a former Guile maintainer), &lt;a href="http://lists.gnu.org/archive/html/gnu-arch-users/2003-11/msg00470.html" &gt;announced&lt;/a&gt; the Pika project (a from-scratch Scheme implementation, with ambitous goals), I decided to get on the mailing list and lurk, and later got opportunities to contribute a bit. Unfortunatly that project stalled due to time constraints on Tom's side. Anyway it was a very valuable experience, as it opened my eyes to other Scheme implementations, foremost &lt;a href="http://www.s48.org" &gt;Scheme 48&lt;/a&gt;. Looking at its code base was a real eye-opener: as opposed to Guile, it was, except for a tiny amount of glue code, written in Scheme; its virtual machine is written in a subset of Scheme called Pre-Scheme that can be compiled to efficient C code, so you get most of the benefits of Scheme and the speed of C.

&lt;p&gt; Around the same time I discovered Scheme 48, I got involved in &lt;a href="http://home.gna.org/conjure/" &gt;conjure&lt;/a&gt;, a make replacement being written in portable Scheme. I split off the library code from it to form a separate project, &lt;a href="http://community.schemewiki.org/?spells" &gt;spells&lt;/a&gt;. As spells is basically a layer above the individual Scheme implementations which hides away their differences and presents their features (foremost the module system, but also hash tables, file system access, ...) in a portable way, I gained some experience regarding the different module systems and how they compare, and I honstly must say that Guile's is basically &lt;b&gt;unusable&lt;/b&gt; with macros. Here's why:

&lt;p&gt; A decent module system allows for macro code to refer to bindings in the module they are defined in, without requiring these bindings to be also exported; imagine a macro that expands to a call to some helper procedure that should itself should not be visible from outside the module. A real-life example are the reference implementations of &lt;a href="http://srfi.schemers.org/srfi-34/srfi-34.html" &gt;SRFI-34&lt;/a&gt; and &lt;a href="http://srfi.schemers.org/srfi-35/srfi-35.html" &gt;SRFI-35&lt;/a&gt;, which define the helper procedures &lt;tt&gt;guard-aux&lt;/tt&gt; and &lt;tt&gt;type-field-alist-&amp;gt;condition&lt;/tt&gt;, respectively. This deficiency (which is not present in Scheme 48, PLT Scheme, Gauche and probably most other Schemes) is really unfortunate, as it makes modules, when used with macros, a lot less usable. This, besides the total orientation toward interpretation and the codebase that is mostly in C are reasons why I'd recommend Scheme newbies also looking at other options before settling on Guile because it's the "official GNU extension language", as I did ;).</description>
    </item>
    <item>
      <pubDate>Thu, 30 Jun 2005 09:02:19 GMT</pubDate>
      <title>30 Jun 2005</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=3</link>
      <guid>http://www.advogato.org/person/rotty/diary.html?start=3</guid>
      <description>&lt;b&gt;Getting paid for OSS work!&lt;/b&gt;

&lt;p&gt; &lt;p&gt; I'm going to get paid for open source developement! Wooha! More specifically, the company I work for since 2 months is going to switch away from CVS as SCM tool.

&lt;p&gt; &lt;p&gt; We had a look several SCM systems, among them Subversion, GNU Arch and several commercial offerings, including BitKeeper :-0. The final contestants were GNU Arch and AccuRev. Subversion fell flat for its missing features (mediocre merging support, no distribution), and BitKeeper was not considered seriously because they don't even list prices at their site (which indicates a fairly high price tag, normally ;) and due to opposition from myself (for the obvious political reasons).

&lt;p&gt; &lt;p&gt; Well, finally the case was made for GNU Arch, and since it lacks a decent GUI (currently the GUIish guys here use WinCVS), it was decided to develop the GUI in-house, and &lt;b&gt;as an open source project&lt;/b&gt;!. It will probably be developed using Python and GTK+, so it will run also on Windows (which is a requirement). Expect more news, including project announcement soonish.

</description>
    </item>
    <item>
      <pubDate>Sat, 18 Jun 2005 19:43:24 GMT</pubDate>
      <title>18 Jun 2005</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=2</link>
      <guid>http://www.advogato.org/person/rotty/diary.html?start=2</guid>
      <description>&lt;b&gt;Scheme48 fork update&lt;/b&gt;

&lt;p&gt; Mike Sperber finally reviewed my patches; they unfortunatly were not deemed appropriate for the Scheme48 distribution, see &lt;a href="http://thread.gmane.org/gmane.lisp.scheme.scheme48/1498" &gt;this  thread&lt;/a&gt;. Hopefully these issues can be sorted out in the not-to-far future. If you also need the one or other features from my &lt;a href="http://www.advogato.org/person/rotty/diary.html?start=1" &gt;hacks so far&lt;/a&gt;, and are adventurous, you can conact me on #scheme on freenode for help with getting and building my fork.

&lt;p&gt; &lt;b&gt;Writing portable Scheme programs with scmxlate and spells&lt;/b&gt;

&lt;p&gt; For the &lt;a href="http://home.gna.org/conjure" &gt;conjure&lt;/a&gt; project, we are using &lt;a href="http://www.ccs.neu.edu/home/dorai/scmxlate/scmxlate.html" &gt;scmxlate&lt;/a&gt; to make it portable across multiple Schemes. For that purpose, I slightly extended scmxlate and built a kind of meta-module system on top of it. Here is how that looks like:

&lt;p&gt; You write a description of the modules your application or library is made of; this is done in a sightly extended subset of the &lt;a href="http://s48.org" &gt;Scheme48&lt;/a&gt; configuration language. For example (from &lt;a href="http://home.gna.org/conjure/PortabilityFramework.html" &gt;this page&lt;/a&gt;, see there for more details):

&lt;p&gt; &lt;pre&gt;
 (define-structure conjure.foo.bar (export qux baz
					  ((froboz fribnitz)
					  :syntax))
  (open scheme srfi-1 srfi-13 conjure.util.files)
  (dialect (guile (open ice-9.syncase))
           (scheme48 (open extended-ports)))
  (files (foo basic-bar)
         (foo bar)))
&lt;/pre&gt;

&lt;p&gt; This defines the module &lt;tt&gt;conjure.foo.bar&lt;/tt&gt;, which exports the identifiers &lt;tt&gt;qux&lt;/tt&gt; and &lt;tt&gt;baz&lt;/tt&gt;, as well as the macros &lt;tt&gt;froboz&lt;/tt&gt; and &lt;tt&gt;fribnitz&lt;/tt&gt;. The &lt;tt&gt;open&lt;/tt&gt; clause means: this module is written in R5RS Scheme (&lt;tt&gt;scheme&lt;/tt&gt;), plus additionally using &lt;tt&gt;srfi-1&lt;/tt&gt;, &lt;tt&gt;srfi-13&lt;/tt&gt; and the &lt;tt&gt;conjure.util.files&lt;/tt&gt; module. The &lt;tt&gt;dialect&lt;/tt&gt; clause can be used for specifiying additional modules needed for the dialect-specific code for the module. Finally, the files clause tells us that this module consists of the files &lt;tt&gt;foo/basic-bar.scm&lt;/tt&gt; and &lt;tt&gt;foo/bar.scm&lt;/tt&gt;.

&lt;p&gt; This file then gets processed by scmxlate, generating a file with the right module definitions for the selected target dialect, e.g.:

&lt;p&gt; &lt;pre&gt;
(define-module (conjure foo bar)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-13)
  #:use-module (conjure util files)
  #:use-module (ice-9 syncase)

&lt;p&gt;   #:export (qux baz)
  #:export-syntax (froboz fribnitz))

&lt;p&gt; ;; code for foo/basic-bar.scm and foo/bar.scm follows
&lt;/pre&gt;

&lt;p&gt; will be generated for Guile.

&lt;p&gt; We recently split scmxlate and the meta-module systeem out of conjure, see the &lt;tt&gt;scmxlate&lt;/tt&gt; category in the conjure archive, so it is available for other projects. Now the split-out of the general purpose modules into a separate project -- SPELLS, (S)pell's a (P)ortability (E)nvironment (L)ibrary for (L)ots of (S)chemes -- is in preparation. This library will further aid writing portable code, by providing a consistent interface to functionality that has different APIs in different Schemes. These modules are already there:

&lt;p&gt; &lt;ul&gt;
&lt;li&gt;&lt;tt&gt;spells.util.pregexp&lt;/tt&gt;: Dorai Sitaram's portable regular expressions
&lt;li&gt;&lt;tt&gt;spells.util.named-args&lt;/tt&gt;: Conviniently create procedures with named arguments
&lt;li&gt;&lt;tt&gt;spells.util.table&lt;/tt&gt;: Hash tables
&lt;li&gt;&lt;tt&gt;spells.util.condition&lt;/tt&gt;: SRFI 34 and SRFI 35
&lt;li&gt;&lt;tt&gt;spells.system.file&lt;/tt&gt;: Lots of file-related proedures, e.g. &lt;tt&gt;copy-file&lt;/tt&gt;, &lt;tt&gt;directory?&lt;/tt&gt;, ...
&lt;/ul&gt;

&lt;p&gt; All of those are implemented for all of mzscheme, Guile, Scheme48 and Gauche, using native functionality where available. Other modules will surely follow, a project has been requested at &lt;a href="http://www.gna.org" &gt;Gna!&lt;/a&gt; to facilitate contribution. The spells library will also be used by my upcoming port of &lt;a href="http://www.nongnu.org" &gt;G-Wrap&lt;/a&gt; to Scheme48.

</description>
    </item>
    <item>
      <pubDate>Thu, 16 Jun 2005 12:19:26 GMT</pubDate>
      <title>16 Jun 2005</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=1</link>
      <guid>http://www.advogato.org/person/rotty/diary.html?start=1</guid>
      <description>&lt;b&gt;Status of Scheme48 hacking&lt;/b&gt;

&lt;p&gt; Over the last months, I've started several hacks on Scheme48. My interest in Scheme48 was initially sparked by Jivera, who started to &lt;a href="http://community.schemewiki.org/?scheme48-ffi-tng" &gt;bring a Pika-style C API to Scheme48&lt;/a&gt;.

&lt;p&gt; The features/projects I've been working on:

&lt;p&gt; &lt;ul&gt;
&lt;li&gt;The new buildsystem: it is now easily possible to build Scheme48 completely from scratch, bootstrapping it with another Scheme48 installation.
&lt;li&gt;R5RS-compatible keywords (e.g. &lt;tt&gt;#:foo&lt;/tt&gt;). There seems to be some controversy about the usefulness and "good taste" of keywords, but I need them for my GOOPS-compatible TinyCLOS version.
&lt;li&gt;Relaxed string escaping, i.e. allow e.g. &lt;tt&gt;(display "Hello World!\n")&lt;/tt&gt;.
&lt;li&gt;A &lt;tt&gt;scheme48&lt;/tt&gt; executable that allows command-line access to the exec language; you can do 

&lt;p&gt; &lt;pre&gt;
scheme48 -cl packages.scm -o mystructure
&lt;/pre&gt;

&lt;p&gt; which is equivalent to typing:

&lt;p&gt; &lt;pre&gt;
,config ,load packages.scm
,open mystructure
&lt;/pre&gt;

&lt;p&gt; at the Scheme48 prompt.
&lt;li&gt;Some initial work on a PLTish FFI. See &lt;a href="http://repository.readscheme.org/ftp/papers/sw2004/barzilay.pdf" &gt;Foreign Interface for PLT Scheme&lt;/a&gt; for how this FFI looks like. The cool thing about it is that you don't have to delve into C for creating bindings anymore.
&lt;li&gt;Porting &lt;a href="http://community.schemewiki.org/?kali-scheme-revival" &gt;Kali Scheme&lt;/a&gt;. This has just started; so far, I've been able to get the Kali VM to build on top of Scheme48 1.2, but it is probably far from working.
&lt;/ul&gt;

&lt;p&gt; Most of the above is still not polished and not ready for release or even sending patches upstream. I have, however, submitted some very simple patches to the Scheme48 mailing list, and got no response from the maintainers. Should working with them not work out, I might have to create my own fork of Scheme48. In fact I have forked already, but if I can't get (parts) of my stuff into mainline Scheme48, I might start to actively push my fork as "extended Scheme48" or with a new name.</description>
    </item>
    <item>
      <pubDate>Mon, 13 Jun 2005 21:06:39 GMT</pubDate>
      <title>13 Jun 2005</title>
      <link>http://www.advogato.org/person/rotty/diary.html?start=0</link>
      <guid>http://www.advogato.org/person/rotty/diary.html?start=0</guid>
      <description>&lt;b&gt;GNOME for Scheme48&lt;/b&gt;

&lt;p&gt; I've decided to laying the foundation for creating bindings of the &lt;a href="http://developer.gnome.org/doc/API/" &gt;GNOME software stack&lt;/a&gt; for &lt;a href="http://s48.org" &gt;Scheme48&lt;/a&gt;, specifically: create bindings for GLib/GObject. 


&lt;p&gt; &lt;p&gt; At the core of GNOME, there is the GLib Object System (GObject), on top of which GTK+ and the rest of the developer platform are built. Thanks to the header scanning tool h2def.py, which creates a S-Expression representation of the API, you are able to create bindings for any GObject-based library, once you got the core bindings right.

&lt;p&gt; &lt;p&gt; I have a rough plan how to do this; basically I plan to fork &lt;a href="http://www.advogato.org/proj/guile-gnome/" &gt;guile-gnome&lt;/a&gt; and reuse the existing infrastructure (e.g. .defs processing). The Guile-GNOME fork will drive a &lt;a href="http://www.advogato.org/proj/G-Wrap/" &gt;G-Wrap&lt;/a&gt; that's capable of emitting code for the upcoming &lt;a href="http://community.schemewiki.org/?scheme48-ffi-tng" &gt;Scheme48 FFI&lt;/a&gt;. Work on G-Wrap/Scheme48 has already progressed to a degree where it's possible to turn to the GObject bindings and fill out the holes as needed in the process.



&lt;p&gt; &lt;p&gt; The plan is also to make the resulting bindings "mostly compatible", so that programs written for Guile-GNOME will also work with Scheme48-GNOME and vice versa. Since Scheme48 has no built-in object system, and the object system would have to be compatible with GOOPS (Guile's object system) anyway to achieve source-compatibility between the bindings, I started working on a GOOPS-compatible version of &lt;a href="http://community.schemewiki.org/?tiny-clos" &gt;TinyCLOS&lt;/a&gt;. </description>
    </item>
  </channel>
</rss>
