Folks may also be interested that this version, 6.0, supports Crunch(although Crunch itself has not been declared a 1.0 status, currently @ .993), which is a compiler for a statically typed subset of Scheme R7RS. (https://wiki.call-cc.org/eggref/6/crunch)
CHICKEN is a compiler that translates Scheme source files into C, which in turn can be fed to a C compiler to generate a standalone executable. An interpreter is also available and can be used as a scripting environment or for testing programs before compilation.
I started playing with Chicken over the weekend because I was looking for a scheme that you could build binaries of and that had a lively ecosystem. I've really enjoyed it. So far I've mostly played with web stuff. Built a wrapper around makemkvcon for ripping some dvds I've been meaning to rip that'll do a little bit of automatic naming of output using the tv db.
I was slightly worried that I'd start using v5 and then v6 would come out but it looked like they'd been working on it for a while so I figured I'd have some time on v5. Turns out I was wrong!
By the way, what do you use to postprocess your DVDs? My experience is that DVDs had awful quality and got interlaced unless using a good player (like cyberlink powerdvd) which was always improving with the video greatly and deinterlacing it?
ngl this is a massive update full R7Rs support UTF-8 strings and they finally ditched blobs for bytevectors the closure reuse otpimization sounds interesting too ngl
Uhm. I'm divided. Common Lisp it's the weird cousin, bloated at first but in the end you get SBCL, ECL or CCL and almost everything will work the same. With Scheme, you need to instal SRFI's to complete SICP exercises and then there's R5RS and R7RS.
You have no way to run Hypergiant under Guile. In Common Lisp, tons of packages for QuickLisp/UltraLisp will run on SBCL, CCL and ECL with ease.
In the end Scheme+Dependencies can be more convoluted than a subset of Common Lisp (you can avoid CLOS if you don't need it for instance).
I only used Chicken for a short time, because of a UTF-8 bug it had/has, but I always liked Chicken's docs. They seem to be written with care and often make things understandable. When I look up Scheme things and don't understand something, sometimes I specifically go for the Chicken Scheme docs, to see if I understand its explanation.
Happy to see CHICKEN 6.0 out. Moving to full R7RS and UTF-8 strings was long overdue.
The change from blobs to bytevectors and the process-object API look particularly clean.
Anyone who has already started porting code — any major gotchas so far?
- Strings and symbols passed to foreign code are not copied, they are
passed directly, any mutations done by external code will be visible on the
Scheme side.
- Complex numbers, C structs and unions can now be passed directly as
arguments and returned as results when interfacing to C code.
Those were major bottlenecks for any FFI-heavy Chicken Scheme app, and would often result in brittle and unsafe abstractions to work around. Glad to see this changed.
15 comments
[ 0.24 ms ] story [ 14.5 ms ] threadCHICKEN is a compiler that translates Scheme source files into C, which in turn can be fed to a C compiler to generate a standalone executable. An interpreter is also available and can be used as a scripting environment or for testing programs before compilation.
I was slightly worried that I'd start using v5 and then v6 would come out but it looked like they'd been working on it for a while so I figured I'd have some time on v5. Turns out I was wrong!
Congratulations to the team, Chicken Scheme is a little gem!
You have no way to run Hypergiant under Guile. In Common Lisp, tons of packages for QuickLisp/UltraLisp will run on SBCL, CCL and ECL with ease.
In the end Scheme+Dependencies can be more convoluted than a subset of Common Lisp (you can avoid CLOS if you don't need it for instance).