[gambit-list] Libraries for day-to-day projects ?

mikel evins mevins at me.com
Wed Jul 9 12:39:48 EDT 2014

On Jul 9, 2014, at 11:23 AM, Eric Parent <eric at eparent.info> wrote:

> Any particular reason why you prefer Gambit over Chicken ?
> Performance ? More standard compliant ?

It might be hard to answer that question. I've used both of them for many years. I like them both a lot.

I might use Gambit more often because a few years ago I was writing some apps on iOS and OS X and found it easier to make Gambit work with iOS than to make Chicken work with it. Once I started building some apps using Gambit, it became a sort of self-reinforcing proposition, since I soon knew more about how to make Gambit do what I wanted than about how to make Chicken do it. That may be all there is to it.

I still always consider Chicken, and sometimes I choose it--particularly if I want to do something relatively small and Chicken has good libraries to support it.

In general, there are more likely to be supporting libraries for a given task in Chicken, simply because its library ecosystem is huge. It's a good implementation and I'm never sorry to use it.

But I also really like Gambit, and I've learned my way around it well enough to make it an attractive choice in a lot of cases. For one thing, I hacked its innards a few times successfully to make it do new things, and that makes me confident I can do it again.

Its chief disadvantage is that it doesn't have Chicken's vast cornucopia of libraries.

I think Gambit usually comes out ahead in benchmarks, but not so far ahead that it should make a difference in choosing between them in  most cases; both of them are good compilers that generate good code for a variety of interesting platforms.

On the other hand, if there were a Scheme that compiled to native code--or even efficient bytecode--in RAM, that supported saving and loading images, that worked on at least OS X, Linux, and Windows, and that  had a foreign function interface capable of dynamic linking to foreign libraries without wrapping them in Scheme-specific glue code, I'd probably switch to that in an instant. WIll Clinger's MacScheme had all those features except platform portability, and I miss it. Heck, it even knew how to compile different functions to bytecode or native code and run both kinds of functions from the same runtime.

Environments like that are getting harder to come by lately.

More information about the Gambit-list mailing list