18 ms·
Chez Scheme is now free
- FraaJad 11y agoIIRC, this was a high performance scheme developed at Indiana University that was closed source for a long time. Good on Cisco for open sourcing it. I'm interested to hear what regular scheme programmers feel about this news.
- hga 11y agoAnd aside from the JVM implementations and some works in progress the last time I checked, the only one with native instead of green threading.
- dfox 11y agoWell, dfsch is currently not work in progress, because there is no meaningful progress :) But it was originally intended as scheme interpreter with native threading without GIL. Last version has GIL-style global lock, but interpreter threads can run user code without ever acquiring that lock. (In essence: the lock protect structures that cannot be proven to not be shared between threads, which are not required to interpret output of dfsch's compiler for most inputs)
- davexunit 11y agoGNU Guile has pthreads.
- groovy2shoes 11y agoI know Gauche uses pthreads because I got a linker error about it one time ;) Also, does Gambit not support native threads? That's surprising considering Marc Feeley did quite a bit of research on multiprocessing in Scheme, and he wrote the SRFI for threads.
- jbclements 11y agoRacket has native threads, called "places".
- hga 11y agoNot in the shared memory way I mean (which I did not make clear), per http://docs.racket-lang.org/guide/parallelism.html http://docs.racket-lang.org/guide/parallelism.html The racket/place library provides support for performance improvement through parallelism with the place form. The place form creates a place, which is effectively a new Racket instance that can run in parallel to other places, including the initial place. The full power of the Racket language is available at each place, but places can communicate only through message passing—using the place-channel-put and place-channel-get functions on a limited set of values—which helps ensure the safety and independence of parallel computations. Compare to current Guile, where the documentation says sharing a hash table without using a mutex will not corrupt memory, but probably won't give you the results you desire.
- mathattack 11y agoIt's massively strange that this was closed source while at a public university, and open source under a public company.
- brudgers 11y agoUS universities have entire departments devoted to technology licensing. The default to secrecy may be an artifact of their historic reliance on defense agency funding for technical projects and the bureaucratic staffing for paperwork heavy processes. On the other hand, there's an intellectual idea that for many companies, existing software should perhaps be seen as a liability in double entry accounting due to it's need for ongoing maintenance, upgrades, potential for catastrophic failure, and the cost associated with alterations for new business processes. Companies offload some of those costs by open sourcing and allowing developers to happily "give back" to their bottom line.
- jordigh 11y agoCan you explain that a bit more? How does a company offload costs by freeing their software? Surely they're not expecting to rely on public contributions to reduce maintenance costs, are they?
- brudgers 11y agoEven at its most basic, an arbitrary developer filing a bug report is potentially less costly to handle than a customer experiencing a failure...it can be ignored and maybe the developer submits a patch. On a longer timeline, hiring developers experienced in the technology from the open source community saves on the cost of training them for a proprietary code base. Ideally, the open source community develops new features, identifies and patchs bugs, writes tests and libraries, etc. adding value realized by the company's paying customers. In the meantime the company still can devote staff to its business priorities and ignore those of the larger community: e.g. no `map` in go-lang and no `react new myapp` at the CLI for React. To put it another way, why would a business open source code for anything other than business reasons?
- 11y ago
- sesquipedalian 11y agoI'm very excited about this. I've been using Chez as my performance benchmark target for my own Scheme implementation.
- groovy2shoes 11y agoScheme user here. I'm very excited about this, and I think I just changed my vacation plans for next week :D
- kkylin 11y agoCan't say (yet). I've used a number of implementations: Gambit, MIT Scheme, PLT/Racket, and played around with Chicken. But never Chez, because it wasn't free.
- xenophonf 11y agoIt's about time! Although I'm curious---how did Cisco end up owning it?
- brianobush 11y agoIf you look at scheme.com, you will see Copyright © 2011 Cadence Research Systems. Cisco bought Cadence back in 2012.
- blaket 11y agoah, thanks!
- iheartmemcache 11y ago(Cadence for those who don't know are basically the equivalent of SolidWorks for anything in EE. They are the only company (maybe Synopsis or Mentor, but I think there are a few holes here and there) on the planet that lets you go from designing something as simple and low level as an analog jellybean op-amp (with state of the art EM and S-param simulation) and verification, to RTL design (full power simulation and everything), to piecing together TSMC[edit: learn2proof-read, self]-based fab designs on their 28nm processes (ASICs or SoCs), to laying out boards at the Altium level. You're paying around 100k/yr/seat for all this but if you're actually using the whole feature set it's worth every cent. Other than Solidworks (which has everything from industrial machining stock cold-rolled steel and the finite-element analysis of your components all the way to computational fluid dynamics of anything your engineering heart could desire) I've never seen a company cover such an industry so thoroughly, so well[1].) [1] Maybeeee Adobe has equal coverage re: for vector work with Illustrator/image manipulation with PS/page layout and typesetting with PageMaker/Indesign and doing post on Video with After Effects and such. And I don't think anyone would disagree, the degree of complexity for this genre of software is on a different tier. edit: Haha. Confused Cadence Design Systems with Cadence Research Systems. Thanks for correcting me. Mea culpa. Keeping this up just for continuity sake. Viva la Scheme though! Have an upvote, @beering ;)
- cm3 11y ago
- dschiptsov 11y agoThis is good news. The code is worth reading. It is as good as MIT Scheme, and less esoteric than Gambit.)
- webkike 11y agoMaking fast scheme interpreters is something I always come back to, a timeless exercise that makes for a great way to decompress over a week (wow I'm a nerd). I'm excited to find some nuggets of micro-optimized gold!
- j-pb 11y agoCompiler. Chez scheme is compiled with a nano-pass compiler. https://www.youtube.com/watch?v=Os7FE3J-U5Q https://www.youtube.com/watch?v=Os7FE3J-U5Q
- webkike 11y agoCompiler what? I simply said that I enjoyed writing fast scheme interpreters.
- deleted 11y ago[deleted]
- j-pb 11y agoYou said it again. It's a compiler, not an interpreter.
- kenko 11y agoS/He's saying that s/he enjoys writing interpreters. That is not related to the fact that Chez Scheme is a compiler.
- sesquipedalian 11y agoIts both a compiler and an interpreter. Read up on Petite Chez Scheme.
- j-pb 11y agoYeah most compiled lisps need to do some interpretation in case an unsuspecting eval comes around ^^
- abc_lisper 11y agoWhy should I be interested in this - given there are many free high quality implementations for Scheme like Racket, Gambit etc?
- rntz 11y agoChez is known for being very fast, and for using state-of-the-art compiler technology.
- abc_lisper 11y agoAny numbers?
- soegaard 11y agoLook at Clinger's benchmarks for Larceny.
- Athas 11y agoWhat kind of compiler technology? I've seen it mentioned that it uses a nanopass design, but that's more of a development strategy than something that results in performant code or low compile times.
- Johnny_Brahms 11y agoLooking forward to having this integrated in geiser/emacs. I worked with chez recently, and it is really a high quality scheme implementation.
- dman 11y agoAny details on what you were using it for? What did you like about it vs something like Racket?
- Johnny_Brahms 11y agoWe have a macro expander for pascal written in scheme (quick and dirty draft made by me that worked so well it stayed). We had some performance problems with some crazy recursive macros (it generates a _lot_ of code. Don't ask, I am not allowed to talk much about it), so I investigated porting it to chez. Instead I just switched to guile (scheme implementation) trunk and got a 3x speedup. Did some optimizing work and it ended up at 4x, which is good enough.
- davexunit 11y agoWhat Scheme implementation did the code originally use?
- Johnny_Brahms 11y agoThe Guile 2.0 branch. I don't know what magic optimisation dust they sprinkled over the upcoming 2.2, but it sure is fast. We thought about using chicken, but it depends quite a lot on using syntax-case to deconstruct everything, and I didn't want to learn their implicit renaming stuff. Apparently the 2.2 branch has full elisp support. Can't wait for Emacs to run on it.
- davexunit 11y agoAh, that makes sense! Guile 2.2 has a completely rewritten compiler and virtual machine. I'm happy to see some real-world instances of it greatly improving performance.
- lispm 11y agoCisco prices from 2013 SP-SW-LMIX0CH0 SP BASE Chez Scheme Dev Env for Wind, Per Unit $65.00 SP-SW-LMIX0CHL SP BASE Chez Scheme Dev Env for Linux, Per 10 $325.00 SP-SW-LMIX0CHW SP BASE Chez Scheme Dev Env for Wwind, Per 10 $325.00 SP-SW-LMIX0CH1 SP BASE Chez Scheme Dev Env for Apple Mac,Per 10 $325.00 SP-SW-LMIX0CHA SP BASE Chez Scheme Developm $65.00 SP-SW-LMX01CHL SP BASE Chez Scheme Developm $65.00
- mayoff 11y agoChez Scheme price schedule I received in 2002: Chez Scheme Version 6 Software License Fee Schedule V60901f Supported machine types: Intel 80x86 Linux 2.x Intel 80x86 Windows 95/98/ME/NT/2000 Silicon Graphics IRIX 6.x Sun Sparc Solaris 2.x Classification License fee (USD) ----------------------------------------------------------------- Single Machines first machine per machine type $4000 each additional machine 3000 ----------------------------------------------------------------- Site first machine type 9000 two machine types 14000 three or more machine types 19000 ----------------------------------------------------------------- Academic Site (for qualified academic institutions) first machine type 4500 two machine types 7000 three or more machine types 9500 ----------------------------------------------------------------- Corporate each machine type 24500
- longwaydown 11y agoThe $65-per-seat price was listed by a third-party Cisco vendor. There's never been any explanation as to how they came up with that price, nor whether anyone tried to purchase it that way. It was fun to tell people to get a license, especially given the normal prices (which someone else posted).
- dmpk2k 11y agoWhat is the library ecosystem like? This is ultimately what limits all other Scheme implementations.
- kkylin 11y agoThat is indeed a great question. Anyone know? I used to use Scheme for prototyping numerical code, etc., but have switched to Julia. Partly because Julia is more convenient in some ways, but mainly because of access to libraries, both native Julia libraries and Python libraries (via PyCall). I personally still prefer Scheme as a language, but missing libraries is a real problem.
- mark_l_watson 11y agoVery cool! I had trouble building it on Linux if I tried to set --installprefix= to a non-standard location, it built fine using the defaults. Nice! On OS X, I have a clang version of gcc installed and perhaps because of that my build broke.
- mark_l_watson 11y agoUPDATE: building on OS X: I installed gcc-5 using brew, set "alias gcc=gcc-5", and then ./configure ; sudo make install worked fine.
- amttc 11y agoWow, I never thought they'd open source Chez. This is really cool.
- blaket 11y agoanyone know how this became cisco's to release?
- detaro 11y agohttps://news.ycombinator.com/item?id=11572733 https://news.ycombinator.com/item?id=11572733
- rrnewton 11y agoI used Chez Scheme for many years and loved its lightning fast compile times. For example, I'm not aware of any other full-scale compiler that can compile itself as fast as Chez can.
- PeCaN 11y agoOberonSystem can build the whole compiler, OS, and applications in around 3 seconds.
- yinwang0 11y agoThat's a myth. Show the evidence please.
- jnbiche 11y ago>OberonSystem can build the whole compiler, OS, and applications in around 3 seconds. I'm not usually given to short, low-content comments here on HN, but: wow!
- iswim 11y agoStaying on the low-content theme . . . that's just how awesome Wirth et al are.
- NotRustAgain 11y agoFast compile times are cool, but I've never heard anyone say they liked programming in a language that Wirth created. The possible exception is Delphi as a Pascal derivative, but that has very little to do with wanting to program in Pascal.
- PeCaN 11y agoPascal was the language of choice for Windows development for quite some time even before Delphi. Also, for what it's worth, Ada has quite a few Wirthisms and I personally quite enjoy it. But it technically isn't a Wirth language.
- agumonkey 11y agoPretty great, always wanted to look at the implementation.
- sheepleherd 11y agoFor people interested in the legalities of licenses, it's released under the Apache License 2.0 which is a "free software" opensource license that is compatible when combined with GPL3, but not with GPL 1 or 2. the Apache 2.0 license includes not just copyright but patent licensing, so the software will contain no hidden patent restrictions for patents owned by the creators and contributors.
- jordigh 11y agoWhy did you quote free software but not opensource? I am curious to know what the difference in your writing intended to convey.
- TuringTest 11y agoThat may be because "free software" is still an ambiguous term, while open source is relatively unambiguous. I prefer to use Free Software as my disambiguator of choice, but I understand the GP using the other form, and occasionally use it myself.
- jordigh 11y agoIn my experience, people frequently think that "open source" means a bunch of different things, such as "visible source code" (and nothing more) or "opposite of commercial" (i.e. no money allowed) or "inviting public participation" (as in "open source governance").
- dmm 11y ago> while open source is relatively unambiguous In my experience both terms are ambiguous. Many people seem to believe that "open source" simply means the source is available for examination. For example: https://news.ycombinator.com/item?id=3205771 https://news.ycombinator.com/item?id=3205771
- bachmeier 11y agoBoth are ambiguous, as explained here: https://opensource.org/faq#free-software https://opensource.org/faq#free-software If you want to make an unambiguous statement, use "OSI approved license".
- rohwer 11y agoDybvig's compiler course was exemplary. Say what you may about Scheme, you learned so much more in those classes. His Scheme Programming Language book is highly recommended. Especially check out his extended examples chapter: http://www.scheme.com/tspl4/examples.html#./examples:h0 http://www.scheme.com/tspl4/examples.html#./examples:h0
- michel-slm 11y agoPaul is that you?
- dman 11y agoI thought scheme was like the beatles - people universally only had good things to say about it.
- chubot 11y agoI might not be getting a reference here, but FWIW, I had a recent experience with Scheme that was interesting. I did SICP nearly 19 years ago as a freshman, in 1997. And then a few months ago, I ported the metacircular-evaluator -- the "crown" of the course -- to femtolisp (the Lisp implementation underlying Julia). My thoughts were: 1) It sure is awkward to represent struct fields 1 2 3 as (cdr struct), (cadr struct), (caddr), ... Yes this is nice to show that car and cdr are all you need as axiomatic primitives, but for practical purposes it's annoying. You end up with lots of little functions with long names. 2) Scheme code is very imperative! Even the metacircular evaluator uses set-cdr! and so forth. I don't like imperative code with the Lisp syntax. 3) It is awkward to represent environments with assoc lists. I feel that having a language which is really bootstrapped requires some kind of hash table/dictionary. Because you need that to implement scopes with O(1) access rather than O(n). I believe there are experimental lisps that try to fix this. 4) Macros also seem to have a needlessly different syntax than regular functions. There are Lisps with f-exprs rather than s-exprs that try to fix this: https://en.wikipedia.org/wiki/Fexpr https://en.wikipedia.org/wiki/Fexpr I was surprised by #3 and #4 -- it some sense Scheme is less "meta" and foundational than it could be. #2 is also a fundamental issue... at least if you want to call it the "foundation" of computing and build Lisp machines; I think this is evidence that this idea is a fundamentally flawed. #1 just makes it pale into languages like Python or even JavaScript.
- defvar 11y agoWow, such a big news! I have heard so much praise about it and have been always want to use it. Now dream comes to true. Thanks!
- nickpsecurity 11y agoThis is great. I was hoping this would happen. The reason was a paper posted here in the past tracing its development from 8-bit days. I was impressed but knew it needed a community and OSS license. Good.
- bitmadness 11y agoSomeone explain to me: Chez vs Gambit vs Chicken vs Bigloo. Which do I pick? Especially interested in parallel/multithreading abilities, standards compliance, and overall performance.
- jopython 11y agoOut of the four you mentioned, only Chez has true posix threads.
- justinethier 11y agoBigloo has support for posix threads. The only one on the list that absolutely does not have them is Chicken.
- tbirdz 11y agoThis page has a useful comparison between various scheme implementations. It's written by one of the authors of Guile Scheme: https://wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations https://wingolog.org/archives/2013/01/07/an-opinionated-guid...
- niccaluim 11y agoWow, this takes me back. I took intro CS at IU in 1993. At that time they were still teaching Scheme, using George Springer's Scheme and the Art of Programming and something like The Little Schemer (but not that because I guess it didn't come out for another two years). Delightful language with a really clean library. I always found Common Lisp's naming conventions to be—dare I say it?—PHP-esque in their irregularity. Scheme, meanwhile, actually has naming conventions. :)
- anta40 11y agoA quote from BUILDING: "Building Chez Scheme under Windows is currently more complicated than it should be. It requires the configure script (and through it, the workarea script) to be run on a host system that supports a compatible shell, e.g., bash, and the various command-line tools employed by configure and workarea, e.g., sed and ln. For example, the host system could be a Linux or MacOS X machine. The release directory must be made available on a shared filesystem, e.g., samba, to a build machine running Windows. It is not presently possible to copy the release directory to a Windows filesystem due to the use of symbolic links." Maybe someone have managed to build the Windows version?