Slow Ruby 1
Joel Spolsky describes why he thinks Ruby is slow, it’s all about method dispatch and late binding. Avi Bryant describes a technique for making that faster, and links to Strongtalk which I mentioned yesterday.
Back in the day when I was a Smalltalk programmer we would implement everything in Smalltalk, go figure. When a method was found to be too slow, I mean really really slow, we would replace it with C. The interesting thing about this was the way the Smalltalk environment handled it. At the beginning of the method, I maybe remembering this completely wrong, you would tell the VM that there is a native implementation available, if it could find it through a shared library it would use it, otherwise it would just execute the existing smalltalk. This had the added advantage where deploying to a new platform where the library wasn’t available wouldn’t stop the application working, it would just use the slower implementation, although I never got into this situation.
In the end we would get the developer productivity from using Smalltalk, but also have the power of making something work fast when needed. It was a very powerful technique, unfortunately I can’t find any reference to it right now.

You’re remembering right. Squeak and VisualWorks, at least, still do things this way.