The larger problem of 'language drift' seems inevitable- C++ from 15 years ago will have auto_ptr's sprinkled throughout, Common Lisp (compared to Scheme) has had stuff added and added to it, Java has more stuff tacked on as it grows... but it only really causes a problem when you have something like a dynamic language because you're using one interpreter (usually) for the whole project, and so anything breaking backwards compatibility causes huge problems. (Add to that that interpreted languages tend to have more changes in syntax more quickly than compiled languages).
Could dynamic languages avoid this by having (say) a byte-code compiled backwards compatibility module? I would imagine it looking something like this for Lua:
luac -version=5.0 module.lua -o module.o
and then call into whatever functions you need from module.o in the rest of the project, using the new interpreter for whatever doesn't need to use legacy features.
Could dynamic languages avoid this by having (say) a byte-code compiled backwards compatibility module? I would imagine it looking something like this for Lua:
luac -version=5.0 module.lua -o module.o
and then call into whatever functions you need from module.o in the rest of the project, using the new interpreter for whatever doesn't need to use legacy features.