lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


> - i.e. any releases are either bug fixes; or, genuinely new features being
> tried out for the next major release and which do not interfere with
> existing mature code.

Even in C, the introduction of the C++-style comment in C99 can break
existing code:

  int x = 5 //* strange construction */ + 5
  + 5;

(x will be 6 in old-style ANSI C, but 10 if the compiler
accepts '//' for comments.)

In a trully dynamic language, any change can interfere with existing
mature code, because the code could assume that something did not
exist or was invalid. For instance, the introduction of the '%' operator
in Lua breaks this program:

  assert(not loadstring("x = 4 % 5"))

So, "do not interfere" (or "incompatible") is something relative, not
absolute. The above examples are clearly artificial, but they show that
it is far from clear where to draw the line.

-- Roberto