On 12/03/14 23:50, Walter Bright wrote:
The trouble, however, was illuminated most recently by the std.json regression
that broke existing code. The breakage wasn't even intentional; it was a
mistake. The user fix was also simple, just a tweak here and there to user code,
and the compiler pointed out where each change needed to be made.
But we nearly lost a major client over it.
I think for clarity it might be good to understand: was this near-loss because
the client felt the language might have breaking changes in future, or because
this breaking change had happened suddenly and with no warning?
A well-signposted and well-policed deprecation path is after all very different
from what happened with std.json.
So, there's the solution that has been proposed before:
!final
!pure
!nothrow
etc.
These sound nice to have for themselves, whatever is decided about
final-by-default.