Live data from Hacker News

Stalin: a global optimizing compiler for Scheme

github.com

61–70 of 75 posts

Re: Stalin: a global optimizing compiler for Scheme

#62
post #59

Does anyone know how this compares to SBCL ? Pity about the name though. It would've been more appropriate to name it on one of the "victorious" tyrants of our age. Perhaps one of "Columbus", "Churchill", "Reagan", or for that touch of infamy "Nixon". Pfft.

SBCL doesn't currently have whole-program optimization. Its focus has been on standard Common Lisp, which is quite dynamic and can't make the kind of closed-world assumption used by whole-program optimization (i.e. we know the entire program at compile-time). It has quite a lot of optimizations, but they operate function-at-a-time.

Its predecessor, CMUCL, did have a mode called "block compilation" that has some similarities: http://common-lisp.net/project/cmucl/doc/cmu-user/compiler-h.... It isn't currently present in SBCL; it was axed as part of the CMUCL->SBCL cleanup. I've occasionally heard suggestions of adding similar functionality to SBCL, but I'm not sure there's any active work on it.

Re: Stalin: a global optimizing compiler for Scheme

#63
post #39

The topic here is seminal work on whole-program compilation. Comments about this work, or about whole-program compilation or Scheme compilation in general, are welcome. Indignation over the name is off-topic. So is indignation about indignation over the name, and so on.

Excuse me a moment. You can say that "indignation about the name is off topic", that doesn't make it so. You are twisting language to suit your whims.

If you had the guts you could say that indignation about the name is not welcome, or will be censored, or is a distraction and an uninteresting subject here on HN. But the project has a name, and the connotations of that name are relevant, as with every project. If the project were named "the impeach obama compiler" or "darren wilson" or "gas the jews" the idea that issues related to the name were "off topic" would be even less tenable than it is now.

I enjoy the maturity of the commenters on HN, and of the mods as well. But please have the intellectual honesty and backbone to be upfront about what you're doing.

Re: Stalin: a global optimizing compiler for Scheme

#64

Earlier quoted context omitted.

Named, I'm assuming, for John Milton? That so-called poet and all-around horrible person that even Samuel Johnson considered an "acrimonious and surly republican"? It's his Paradise Lost we have to thank for the scourge of "blank verse"! Oh, the humanity! Also he supported and served under Cromwell, of all people! Surely we can throw this horribly-named compiler on the dustpile of computer science history!?

Milton never murdered between 20 and 60 million people.

Pretty sure it was a joke.

Re: Stalin: a global optimizing compiler for Scheme

#65
post #55
post #52

Earlier quoted context omitted.

One aggressive optimization that differentiates Stalin (no pun intended, ref StalinGrad) somewhat, is its inlining of callbacks. For example a generic numeric multidimensional integral library would take a callback that implements the function that needs to be integrated. This function is typically computed several hundreds of thousands of times in a very tight hot loop incurring a call overhead on each one. In a C l…

> Had Java been not so broken for numeric stuff I'm curious, what makes Java an especially poor choice for numerically intensive computing? Is the JIT penalty too high, or is it something else entirely?

JIT isn't a penalty, if anything late code generation lets you make faster code because hot code paths are known.

My guess is that there are problems with things like the way all objects are on the heap, and probably other things too.

Re: Stalin: a global optimizing compiler for Scheme

#67
awesome name!

would like to see more of this for hardcore stuff like this:

eternal virgin

smelly neckbeard

aspy social retard

and then, let's make it clearer in case my sarcasm needs a tag :

were nigger, kike, wetback already taken?

yes, words matter you fucking morons. needs to be explained to a profession that relies on precise language aka code to accomplish anything.

Re: Stalin: a global optimizing compiler for Scheme

#68
oh you nerds.

HN doesn't even let me post the alternative names as the post gets autodeleted. so some names are really, really bad - but hey, let's offend people for fun.

as if the whole sexism debate wasn't enough.

as to why it is more offensive than genghis khan, i guess it needs to be explained to the ignorant neckbeard crowd: there are enough people still alive today that suffered due this mass murderer.

if even russia does not use his name for say naming an aircraft carrier (as opposed to g.w.bush) you should know it is bad.

this name was picked on purpose, to offend. not a common name, as some other ignorant shits in here have claimed.

Re: Stalin: a global optimizing compiler for Scheme

#69
post #39

The topic here is seminal work on whole-program compilation. Comments about this work, or about whole-program compilation or Scheme compilation in general, are welcome. Indignation over the name is off-topic. So is indignation about indignation over the name, and so on.

Downvoted for this? Thankless job indeed.

Thank you.

(I will say, substantive discussion for a topic like this seems hard. The people really interested in this are those who haven't heard of it, which means they will have little input. From what I've seen, topics like this usually grow slowly as experienced people post interesting anecdotes or general PL tangents, and others hop on).

Re: Stalin: a global optimizing compiler for Scheme

#70
post #59

Does anyone know how this compares to SBCL ? Pity about the name though. It would've been more appropriate to name it on one of the "victorious" tyrants of our age. Perhaps one of "Columbus", "Churchill", "Reagan", or for that touch of infamy "Nixon". Pfft.

SBCL doesn't currently have whole-program optimization. Its focus has been on standard Common Lisp, which is quite dynamic and can't make the kind of closed-world assumption used by whole-program optimization (i.e. we know the entire program at compile-time). It has quite a lot of optimizations, but they operate function-at-a-time. Its predecessor, CMUCL, did have a mode called "block compilation" that has some simil…

'whole program optimization' is also kind of unpractical, since these compilers are typically very slow.

Lucid CL had two compilers, a fast incremental one and a slow one, capable of block compilation. KCL (the early Lisp to C compiler) used block compilation. LispWorks should also support it in some form.

Usually 'block compilation' in Lisp means compiling a set of functions together, instead of compiling each function individually. This block compilation for example then can reduce function call overhead.

In its more primitive for a single file of source is seen as a block. But compilers also support block compilation of several files together.

Block compilation in Common Lisp was and is used mostly for application delivery, where the program is static and dynamic features can be removed. Thus a delivered program is more static, but also 'faster'.

Post reply on HN