14 ms·
Chicken Scheme
- sigzero 14y agoWhat about it?
- muuh-gnu 14y agoAdvertisment.
- pmelendez 14y agoChicken scheme had been around for 12 years... How did this make the front page?
- profquail 14y agoOnly brand-new links are allowed on the front page?
- Jtsummers 14y agoHopefully that's never the rules. However, the title could be more informative, apparently there was a minor version release 3 days ago.
- ams6110 14y agoI found it informative. I'd never heard of Chicken Scheme.
- profquail 14y agoI believe there was also a major version release (4.8.0) fairly recently. I read some development notes a while back and one of the key features planned for 4.8.0 was a new optimizer based on flow-directed lightweight closure conversion; this is the same technique used in STALIN Scheme, which is widely considered to be one of the fastest known Scheme implementations (i.e., it produces the fastest compiled code). More info on this, for anyone who's interested: http://stackoverflow.com/questions/8859486/other-references-to-how-the-stalin-compiler-brutally-optimizes http://stackoverflow.com/questions/8859486/other-references-...
- DASD 14y agoI submitted a link approximateley 5 months ago for the 4.8 release which received 2 upvotes. Shows the hit-or-miss nature of Hacker News.
- pmelendez 14y agoNo, but it is hardly news if it had been around for more than a decade. If the poster finds that there is something new about it, a link to the specific item would be more helpful. For instance: https://news.ycombinator.com/item?id=2241015 https://news.ycombinator.com/item?id=2241015 https://news.ycombinator.com/item?id=3440777 https://news.ycombinator.com/item?id=3440777 https://news.ycombinator.com/item?id=3297071 https://news.ycombinator.com/item?id=3297071
- scott_s 14y agoI find it much more tiresome when people complain that something is not news.
- pmelendez 14y agoI am not complaining about the link not being news. I am complaining about the lack of explanation about why it is relevant today. This is similar to if somebody would post stuff like: Mono C# compiler [http://www.mono-project.com/CSharp_Compiler http://www.mono-project.com/CSharp_Compiler] Pypy [http://pypy.org/ http://pypy.org/] Those are interesting implementations for well known languages that aren't new. If I post them without explanation of why I found them interesting and relevant now, then I would mislead people and they might conclude that it is advertising. Am I alone with this?
- klrr 14y agoIts community is great.
- elrzn 14y agoI second this. Chicken's community is the friendliest and least toxic I can think of.
- gbaygon 14y agoI'm considering a lisp dialect for a personal project (REST Api w/sqlite embedded in an ARM device running linux). I'm evaluating racket, clojure, even IronScheme over mono. Do you recommend using Chicken Scheme, what are his advantages/disadvantages over the other languages mentioned earlier?
- profquail 14y agoChicken Scheme is purportedly very fast (which might be important for your project) and has a friendly, knowledgeable community behind it. It's also BSD-licensed -- not so important for a personal project, but nice if you want to build a commercial product in Scheme. Gambit Scheme also has this (it's available under the Apache 2.0 license).
- kyllo 14y agoI've never used Chicken Scheme (only Racket), but I've read a few articles about it and the advantages seem to be: -Compiles to C, so it's highly portable and you get the performance optimization benefits of whichever C compiler you're using -Lots of libraries -Good packaging system, with packages that are cutely referred to as "eggs" (similar to Ruby's "gems" system) Racket is great too, though, and DrRacket is an excellent IDE with minimal install/configuration difficulty. It just works. I'm not really sure what tools exist for Chicken Scheme. With Clojure, you're probably going to need to configure emacs or another text editor for syntax highlighting and REPL. I write Clojure in Sublime Text 2 with SublimeREPL but that requires some config and isn't technically free. There are Eclipse and NetBeans plugins, but I dislike Java IDEs for their enormous memory footprint.
- gbaygon 14y agoI've been trying clojure in IntelliJ with La Clojure plugin and it works pretty well.
- emidln 14y agoI write for Chicken Scheme inside vim and tmux with some minor plumbing to send my selections/buffers to evaluate in another tmux pane that contains my repl. This is basically the same thing you do for every other language when using vim/tmux. Feel free to replace vim/tmux with $EDITOR/$TERMINALMUXER of your choice here, outside of emacs, which kinda does this already as long as you don't care about updating your repl buffer at the same time as you are editing code (say, whatever code you send doesn't return immediately because it's doing something time-consuming). vim+conque has this same issue as emacs, making $EDITOR/$TERMINALMUXER the only alternative if you want to use the repl to hack/dispatch big jobs.
- tsewlliw 14y agoThe absolute most interesting thing about Chicken Scheme is the way it does allocations and garbage collection. I've wanted for a long time to make the time to add a always-on cpu and memory profiler to Chicken Scheme that just tallys the "return" addresses during the gc, meaning at each cg cycle you have a pretty darn good tracing profiler, and keeps the "return" addresses in cells when they are moved off stack, so at any moment you can blame your memory usage on particular code. Clearly you could do this sort of thing with a lot of runtimes, but Chicken's design really lends itself to it.
- pmelendez 14y agoIt really does. This dissertation explores the differences with other implemantations [PDF] http://www.cs.indiana.edu/~dyb/papers/3imp.pdf http://www.cs.indiana.edu/~dyb/papers/3imp.pdf
- tsewlliw 14y agoI'm totally going to read that. Also, I'm really interested in the debug-ability of Chicken. Instead of a stacktrace, which sort of captures "where you're going", a stacktrace in Chicken captures "how you got here", which in conjunction with using immutable data structures would make the most absolutely amazing blob of data to be sent back by a customer - you could potentially restart execution with their data and step thru.
- pi18n 14y agoChicken allocations and GC are a really great compromise between heap and stack memory. I've been looking into GC implementations recently and it's one of the most interesting. Another one I think is interesting is Lua's with the "upvalues" -- objects are on the stack unless they survive the frame they live in, in which case they are moved to the heap. But they implement it with a double dereference, so it has its own downside.
- hga 14y agoChicken Scheme and it's use of Baker's "Cheney on the M.T.A." allocation and GC is intensely neat ... but correct me if my analysis was wrong: isn't it inherently single threaded? (No problem for a lot of people, but my particular area of interest is making SMP/ccNUMA systems sing. In Lisp. :-)
- melling 14y agoIt's nice that Scheme garners some attention on HN. It's more useful, however, when someone explains how they used it to build a business. Also, there are lots of Schemes and Lisps. Where does Chicken fit as far as libraries and support? Racket is the Scheme that I hear the most about. http://en.wikipedia.org/wiki/Racket_(programming_language) http://en.wikipedia.org/wiki/Racket_(programming_language) Are these compatible?
- pmelendez 14y agoIf by compatible you mean that the code are portable between them, the answer is maybe. Strict R5RS code that don't use eggs (chicken libraries) has good chances to run on Racket. But note that Racket support stuff that is not even Scheme, hence the change of name from PLT Scheme
- thecombjelly 14y agoI have built numerous businesses and websites with chicken scheme. It rocks. The largest one is a basic CRM for a small niche. It runs super fast and development was a breeze. I run it compiled with a number of optimizations enabled.[0] My personal website is also built in chicken scheme and runs fast even though it is running in interpreted mode.[1] [0] https://a.keeptherecords.com/demo https://a.keeptherecords.com/demo, source code: https://github.com/ThomasHintz/keep-the-records https://github.com/ThomasHintz/keep-the-records [1] http://thintz.com?hn=t http://thintz.com?hn=t
- geoffhill 14y agoRacket supports running multiple (sometimes incompatible) dialects of Scheme through the use of a #lang directive. If you prefix your program with "#lang racket", you get the definitions for the full Racket language, with all of the extensions and libraries that Racket provides. But if you want to preserve compatibility with the standard and with other implementations, you can prefix your program with "#lang r5rs". It derives from the same base language as Racket. http://docs.racket-lang.org/r5rs/r5rs-mod.html http://docs.racket-lang.org/r5rs/r5rs-mod.html
- tehwalrus 14y agoWhat's the difference between Chicken and Gambit[1]? I've been reading about/playing with the latter for a few weeks, because of its interop with C (and therefore potential for integration with other C-friendly code, which is why there is an iPhone app that runs the repl.) My interest is that I'd like to write an application core in Scheme, and then write a GUI for iPhone, OS X, Linux and Windows, and I figured Gambit was best for this. If I should be playing with Chicken instead, tell me why! :) [1] http://gambitscheme.org/wiki/index.php/Main_Page http://gambitscheme.org/wiki/index.php/Main_Page
- csl 14y agoOne thing is the relatively large number of packages available for Chicken, especially for C libraries on UNIX. Therefore many use Chicken for systems and desktop programming on UNIX. A list of packages (called "eggs") is available at http://wiki.call-cc.org/chicken-projects/egg-index-4.html http://wiki.call-cc.org/chicken-projects/egg-index-4.html (Disclaimer: I don't know much about Gambit, and cannot comment on their respective implementation capabilities.)
- MatthewPhillips 14y agoGambit is extremely fast, that's its main benefit over the competition. It's ecosystem is... very rough, though.
- mark_l_watson 14y agoTrue enough. I have used Gambit for several apps in the last 10 years or so, but always for things that don't need a lot of 3rd party libraries. I wrote an article a long time ago on using Gambit for command line utilities and other small apps.
- bitwize 14y agoGambit also has (imho) a much easier FFI. (Once you get used to all the ___arg1 and ___result stuff.) So it really is easy to bolt on C -- and even C++ and Objective-C -- code to a Gambit app.
- paines 14y agoFor anyone who still has a GP2X lying around: I uploaded a Puyopuyo clone to http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,25,2919 http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,25,2919 a week ago, written in Chicken + SDL. My first ever Scheme/Lisp project...
- profquail 14y agoThe Chicken website has some good information for programmers coming from other languages: Chicken for Ruby programmers: http://wiki.call-cc.org/chicken-for-ruby-programmers http://wiki.call-cc.org/chicken-for-ruby-programmers Chicken for Python programmers: http://wiki.call-cc.org/chicken-for-python-programmers http://wiki.call-cc.org/chicken-for-python-programmers Chicken for PHP programmers: http://wiki.call-cc.org/chicken-for-php-programmers http://wiki.call-cc.org/chicken-for-php-programmers Chicken for C programmers: http://wiki.call-cc.org/language-comparison http://wiki.call-cc.org/language-comparison
- miloshadzic 14y agoEvery time Racket or some other Scheme-like language is on HN I wonder why they aren't used more. It's probably just an illusion of the bubble I live in.
- whatshisface 14y agoLanguages are a lot like startups, they take forever to gain traction.
- thecombjelly 14y agoI would highly recommend chicken scheme for most projects. It isn't as mature as other ecosystems, but it is getting there fast and is already quite mature and practical. I've used it to build multiple web apps/sites.[0][1] Learn more about the features it provides: http://wiki.call-cc.org/man/4/Getting%20started http://wiki.call-cc.org/man/4/Getting%20started An index of the many libs it supports: http://wiki.call-cc.org/chicken-projects/egg-index-4.html http://wiki.call-cc.org/chicken-projects/egg-index-4.html Why another lisp? http://wiki.call-cc.org/man/4/faq#why-yet-another-scheme-implementation http://wiki.call-cc.org/man/4/faq#why-yet-another-scheme-imp... Getting good performance: https://news.ycombinator.com/item?id=5381472 https://news.ycombinator.com/item?id=5381472 [0] http://thintz.com?hn=t http://thintz.com?hn=t [1] https://a.keeptherecords.com/demo https://a.keeptherecords.com/demo
- peatmoss 14y agoChicken, together with its eggs system has always struck me as very professional feeling. Plus, bind (dead simple ffi for C stuff) seems like a huge win where C is required. That all said, I've become quite enamored of Clojure's various data types. Does anyone know if there has been an attempt to create things like immutable maps, vectors, and whatnot for scheme (esp Chicken Scheme)? I found a blog post a while back that talks about FSet for common lisp, but have failed to find an analogue for scheme. http://blog.thezerobit.com/2012/07/21/immutable-persistent-data-structures-in-common-lisp.html http://blog.thezerobit.com/2012/07/21/immutable-persistent-d...
- jones7 14y ago"The disadvantage is that execution of Scheme code on multiple processor cores is not available." So you're throwing away most of the computing power of a modern CPU. But other than that it's totally awesome I'm sure, after all who needs computing power. Sounds more like a toy to me.
- ZaneA 14y agoIn some ways it just encourages a different style of development. There is more emphasis on forking processes and communicating between them, which some may consider to be a better practice anyway. It all depends on your domain. On the other hand, there's nothing stopping you from binding to pthreads and seeing how far you get with that (and from a quick search it appears that people have had some success with it, especially if you're calling into a lot of C libraries).