On Sunday, September 04, 2011 02:49:40 Marco Leise wrote: > Am 04.09.2011, 00:57 Uhr, schrieb Andrej Mitrovic > > <andrej.mitrov...@gmail.com>: > > Also, changing structs to classes is gonna *massively* break code > > everywhere. Why inheritance instead of a predicate like isInputStream > > = is(typeof(T t; t.put; t.close)), you know the drill.. > > Wasn't this overhaul _meant_ to break existing code by offering a new API? > Still that's a serious issue of course, but not too surprising. I'm > ambivalent on the inheritance vs predicate debate. Interfaces are the way > it is meant to be done and actually ensure correct types. Predicates work > with structs as well. I don't know if this would be important.
Any overhaul of existing functionality needs to improve on existing functionality. Changes just to change aren't valuable. So, changes should generally avoiding breaking backwards compatibility unless we gain something from it. So, as long as these changes are an overall improvement, then we'll just have to deal with the code breakage. However, if the code breakage doesn't actually gain us anything, then we should avoid it. So, complaints about code breakage are valid, but they aren't deal breaking. - Jonathan M Davis