Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
SBCL 1.2.0 Released with ARM support (sbcl.org)
148 points by enduser on May 27, 2014 | hide | past | favorite | 49 comments


FYI, SBCL is a high-performance open source compiling implementation of Common Lisp. All SBCL code is either released into the public domain or available with the FreeBSD license. Rumor has it that the next release of SBCL will support calling SBCL from Java on Android.


SBCL on Android will be really great. There is mocl there already, but SBCL is a bit more mature... And it's a full Common Lisp, no limitations.


But you won't be allowed to post those apps on the Play Market, because apparently compiling code at runtime isn't okay.


Really? I thought eval was not allowed on iOS only.


> Rumor has it that the next release of SBCL will support calling SBCL from Java on Android.

I would have thought that ABCL (Armed Bear CL) would be a more suitable candidate for porting to Android. It's already written in Java.


Some people care about performance, and ABCL is nowhere near SBCL in this regard.

I also don't know if ABCL's compiler is offline (generating class files from CL code) or on-demand (likely using OW2 ASM). While it is no longer impossible to do, it remains tricky to generate Dalvik bytecode at runtime, and the performance hit is significant (look at Clojure on Android).


I hope so, then I will just have a reason to do it - running lisp code in production would be a rare badge.


From what I've gathered, it's run in production, just not the production environments this community usually hears about. There is pretty much no web ecosystem in Common Lisp, which is what I'm trying to fix, but in other domains it fits just fine.


> There is pretty much no web ecosystem in Common Lisp

Hunchentoot and Drakma rock.


Hunchentoot is just a web application server. Compare that the the ecosystem in Ruby or even Node.js.


Well, it's a little more than that. But you are right generally speaking. I also gave up on Lisp for web dev. Just not worth it.


I guess tomjen3 was thinking about a badge for himself :)


I noticed that ARM binaries aren't yet provided. Does this just mean they haven't gotten around to it yet or that ARM isn't suitable for production at this time?

I'd really like to experiment with SBCL on the beaglebone. :)


ARM systems are so diverse that, unless you define a specific operating system, ABI plus floating point calling convention, and CPU type (see http://blog.alexrp.com/2014/02/18/android-hard-float-support... for a tangentially related example I found in a quick search), a binary either doesn't do you any good, or doesn't take advantage of the SIMD CPU features of your platform.


There is currently only working support for VFP hardware floating point in SBCL so the build options are reduced a bit. I think the only choice to make for a binary release would be whether to build against Debian, Ubuntu or something else.


I can't answer authoritatively, but I do know they're not really good at updating the downloads page for anything other than AMD64 Linux and the source tarball (and of course the Git repo). Usually I just build from source.

The catch, of course, is that building from source requires a pre-existing SBCL to bootstrap.

My guess is the only way to get it running on ARM right now is to get it for a non-ARM platform they have for download, bootstrap to 1.2.0, and then cross compile to ARM.


One of SBCL's claims to fame is that it doesn't necessarily require a previous copy of itself to bootstrap; it can in theory use CLISP or Clozure CL. (In practice it isn't always tested and working, and I don't know if it would work on ARM if you tried it today.)


Regarding building from source requires a pre-existing SBCL to bootstrap, it is actually true that building from source requires a pre-existing Lisp to bootstrap.


There are ARM binaries available now.


It isn't difficult to cross-compile if you don't want to wait for official binaries.


Yay, good news. By the time Apple uses ARM instead of Wintel CPUs for OS X, I hope that SBCL will be ready for ARM in at least the same quality it now has for x86_64.

BTW, are there any comparisons between SBCL's “Python” compiler and an LLVM backend (mocl seems to have one)?


I haven't seen any published mocl performance data. One significant difference between the two is that SBCL's compiler is online (available at all times) whereas mocl's is only available on the development machine. So mocl is an implementation of Common Lisp the language, but not a complete Common Lisp environment.


I browsed through Common Lisp GitHub repos, but it didn't really answer my question. Are there any known, much used applications, frameworks, libraries, whatsoever? Something to see the structure of big projects? Something that possibly shows there are also bigger companies interested into LISP?


Sure, check out pgloader (this guy re-wrote a Python program into Common Lisp and wrote about the experience), the European Lisp Symposium ( http://www.european-lisp-symposium.org/content-programme-ful... ), it's used by Google (ITA, air fairing system), it was used by Naughty Dog for their PS1 and PS2 games (they still use Lisp for scripting), it's been used by NASA, DART ( https://en.wikipedia.org/wiki/Dynamic_Analysis_and_Replannin... ), Cyc, there's a European company I can't remember the name of that uses Common Lisp for its train scheduling system. There's this new Swedish music company that uses Common Lisp for their software.

If you want to see much used applications in the Common Lisp community then check out all of Edi Weitz' software http://weitz.de/

Most Common Lisp that you use is in stuff you don't see, there're no Ruby hipsters here.

EDIT: Oh, or why not something like StumpWm? Really, thre's a lot of cool Common Lisp software out there.


Lisp was popular back when the "interesting" apps were things like compilers, AI systems, mathematics systems, GUI's, etc. See: http://en.m.wikipedia.org/wiki/Category:Common_Lisp_software


It's a bummer compilers out of vogue now. For example, lackluster compiler tech is the reason GPU computing is still stuck in rare niches.


what do you consider interesting nowadays?


I mean "interesting" in the sense that those were areas of active research and development. I think the equivalent today would be things like control software for self-driving cars and drones, the software that does StreetView, etc.


Not on github, but, IIRC, Catia is written mostly in Lisp.


You're probably thinking of AutoCAD, which isn't written in Lisp, but scriptable using Autodesk's variant of Lisp.



Yes, it was PTC. I couldn't remember it. Thanks.


StumpWM window manager, the successor to Ratpoison. Both are awesome (obvious disclaimer: I use both).

Not on Github per se, but still awesome.



I'm not too knowledgable about lisp, but what should I focus learning, Clojure or Steel Bank ? If I understand properly, SB Common lisp doesn't run on a VM ... ?


FYI, your question reads roughly like "I'm not too knowledgable about C, but which should I learn, Java or g++?"

There hasn't been a single language called "lisp" for at least 30 years. Lisp is now used to describe an entire family of language based upon syntax similarities.

Common Lisp is one language, Clojure is another. Steel Bank is an implementation of Common Lisp (like g++ is an implementation of C++). The two languages are about as similar as C++ and java, that is to say the syntax is quite similar, and they share some conceptual history, but to someone who knows either, the differences are greater than the similarities.

Now, to actually answer your question, I use common lisp (mostly SBCL, but also some other implementations) a lot and like it quite a bit. I can suggest http://gigamonkeys.com/book/ as a good start for learning it.

Also #lisp or #lispcafe on freenode are good places to ask questions.


The best choice depends on your reasons for learning Lisp. If it's to work through Structure and Interpretation of Computer Programs or just learning in general, then Racket is the way to go. Teaching Lisp is embedded in its culture.

On the other hand, if you are hard core all day with the JVM, then Clojure. But I would not recommend Clojure as a first Lisp. Its community is very much organized around being a better JVM language, somewhat around teaching people Clojure in that context, and not really around introducing people to Lisp. It's more about providing Lisp to the JVM programmer and JVM to the Common Lisp programmer.

As for learning Common Lisp, if you're plan is to work your way through Graham's On Lisp or Hoyte's Let Over Lambda then it makes sense.

Of course any of them make sense if it's for work.


> But I would not recommend Clojure as a first Lisp. Its community is very much organized around being a better JVM language

You can say that again. If you don't have a background in Java, it's a lot to swallow.


What about ClojureScript?


I'd never suggest it as a good starting point for learning Lisp. Clojure's design inherits some implementation details from Java and the JVM. ClojureScript has amother layer of limitations based on ECMAscript's specification. They make sense If one understands Clojure as a response to the JVM and has a similar understanding of JavaScript's specification. Without that it's going to be hard to have an intuitive feel for the ways in which it's been ported. And given its lack of standalone documentation the a programmer is even more on their own.


Personally, I haven't found Clojure to be an improvement over Common Lisp. Java interop is not important to me, so the only benefit of using Clojure over Common Lisp is better-looking library websites.


I recommend SBCL when you need excellent math performance and Clozure (not Clojure) CL for a good environment on OS X. You can't go wrong with either.


Last I checked, clisp had the best math performance as far as the lisp numeric stack for open-source lisps (obviously something like maxima is different). The best numeric benchmarks for sbcl all seem to be FFI to gmp (which happens to be the library used by clisp).


CLISP doesn't use GMP; it has its own, very nice, bignum library. If you want to use GMP on SBCL, the SB-GMP contrib has been around for approximately one year; it'll hook transparently in SBCL's bignums, at runtime. However, I think the grandparent was referring to performance on typical numerical computing workloads: machine integer or floating point arithmetic, mixed with a fair amount of array indexing.


Ah, that makes a lot of sense; sbcl does a good job of open-coding machine integer arithmetic with fairly minimal type declarations.


Slightly off-topic, but is clisp still being developed? The last release seems to be from around 2010.


I guess the reason there is not too much new CLISP development going on is that it's really a mature product. The ANSI standard of Common Lisp was published in 1994 and there was no amendments or additions since then. CLISP has implemented it awhile ago. Also, CLISP is written in C and doesn't compile to machine code like, for example, SBCL, so no need for an extra work to target new platforms. Again, that's my guess.


I suspect it's more a lack of resources (time, energy, interest) than maturity. CLISP has bugs. Some bugs are fixed in version control. It would be nice to have a new release.


Last commit was earlier this month: http://sourceforge.net/p/clisp/clisp/commit_browser




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: