3 ms·
Personally, I think chicken is the least interesting of the 3 (bigloo, gambit and chicken) scheme->c compilers. Bigloo has the best FFI, hands down, it's simpl
by NikkiA 17y ago
Personally, I think chicken is the least interesting of the 3 (bigloo, gambit and chicken) scheme->c compilers.
Bigloo has the best FFI, hands down, it's simple, it offers mapping, and doesn't require you write chunks of C for each definition. It's also slightly easier to call from, and embed in, C, in my experiments.
Bigloo has better potential performance, due to the strict typing abilities.
Gambit has the best performance, this is probably debatable though, at least according to the benchmarks I've seen.
Gambit also has the best portability, bigloo and chicken only 'mostly' work on win32 - bigloo's socket support has some annoying bugs on win32, for example, and I've had problems with chicken even compiling properly on win32, often failing to find compilers, etc.
Whether Chicken or Bigloo has the best built-in module system is debatable, personally I'd prefer bigloo's over the two. Gambit's lack of a built-in module system is offset by 'black hole' which is progressing nicely, and is possibly better than both bigloo's and chicken's, in the long term.
License wise, Gambit is dual (LGPL and Apache), Chicken is BSD and Bigloo is LGPL. All are pretty much equal, really, from an end-user's point of view and none of them should impart any restrictions on any programs you create with them, as far as I can tell.
Edit: I knew I forgot something, I didn't mention the '4th' option - JazzScheme. Which is really just a version of Gambit with an integrated IDE, a module system similar to bigloo's, and a bunch of pre-built library mappings (Gtk, OpenGL, and a bunch more, iirc). It has potential, but for me, I don't like to have to use a provided IDE, I prefer emacs, and the 'command line' version of jazz isn't really finished yet.
- morphir 17y agowhen I play around with Gambit (gsi) I often end up with bus errors. This implies the word: 'half-assed' to me. So that is directly annoying and will guaranteed put new users off. Crashing is never good.
- stuntmouse 17y agoThat's extremely surprising. I'm sure the maintainers would be eager to hear about your experiences. Care to provide example code which triggers a crash with a little detail about version and platform? The best place to post would be the mailing list [1] or the bug tracker [2]. [1] https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-lis... [2] http://www.iro.umontreal.ca/~gambit/bugzilla/ http://www.iro.umontreal.ca/~gambit/bugzilla/
- morphir 17y ago3> (define x (lambda (y) (* 2 y))) * WARNING -- defining global variable: x 3> x Bus error Gambit v4.5.2 OSX 10.5 Of course, I do know that x should not be evaluated. For that have to type (x 3). But its still annoying, and very unnecessary. In DrScheme/PLT I get a: > x #<procedure:x> Explicitly telling me its a procedure.
- stuntmouse 17y agoI've reproduced your crash. The issue is that you're using define within a nested REPL, which isn't supported [1]. However, a segfault is really not acceptable. I'll file a report for this. [1] http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#Debugging http://www.iro.umontreal.ca/~gambit/doc/gambit-c.html#Debugg... Relevant section: "Note that some special forms (define in particular) can only be evaluated in the global interaction environment."
- NikkiA 17y agoI'm fairly sure that the nested repl 'define' being allowed at all is a fairly recent change, I seem to recall just getting an error when trying to define in a nested repl in 4.4.x.
- stuntmouse 17y agoRight, it looks like a regression in 4.5.*. 4.4.4 is fine.
- NikkiA 17y agoI've had these crashes, and I can tell you exactly what it is that is causing it... You're not at the top level of the repl, for some reason, defining things at a lower nesting level of the repl sometimes produces crashes, it's annoying yes, but it's not a huge disaster :) if you use ",t" to get back to the top level after an error, you shouldn't see those crashes.
- stuntmouse 17y ago
- morphir 17y agothanks for the heads up JazzScheme. I am gonna give that IDE a try.