On 17 Jan '06, at 6:48 AM, Lisa Parratt wrote:
It could occur to someone trying to use library A and library B together, but not having written either library. It's hard to write that off as their problem. From their perspective it just makes Lua look flaky.
Exactly what I was going to say. Lua seems to take the approach that that backward compatibility can be sacrificed, since any program that uses it will embed its own copy of Lua; so that the developer is in control of which version of Lua to use, and how to customize it, and can iron out compatibility problems before release. This is reasonable, given that Lua's code size is tiny and it is used in a lot of embedded systems.
But it does have the consequence of making a shared system-wide Lua engine (e.g. /usr/bin/lua) problematic. Upgrading that engine could cause an unknown number of clients that use it to break, if there are incompatible changes between the two versions of Lua. That's not going to be acceptable to end users or to the developers of those clients. (Imagine the reaction of users, Adobe and Apple if an upgrade to the next release of OS X caused Lightroom to break.)
I bring this up because, some people at the Lua Workshop last year, when they learned I work at Apple, were curious whether Apple might ship Lua in OS X. It seems unlikely, for this reason. Binary compatibility is very, very important to us, and we don't want new versions of the OS to break applications. In the case of apps that are mission-critical to large numbers of users (Office, Photoshop, World Of Warcraft...), incompatibilities become show-stoppers that force us to add kludges to the OS to keep them running. Such are the rigors of working on an end-user-oriented operating system whose users don't build things from source.