Still, it just occurred to me that one could use integration with scm like git or mercurial to get the same kind of benefit as the Smalltalk change log+image.
What if every change to a function was snapshotted, and the developer could easily scroll/flip through these snapshots? Merging the change back to a main branch would then be like image saving in Smalltalk. This would give developers the ability to try really risky development, since they would always be able to quickly get back to a previous state.
(This can already be done, but by making the integration really seamless, it has a synergistic effect with development.)