Broken?
monarch_dodra
monarchdodra at gmail.com
Wed Mar 12 03:40:39 PDT 2014
On Wednesday, 12 March 2014 at 03:05:00 UTC, Manu wrote:
> I'm really trying to keep my lid on here...
>
> I'll just remind that in regard to this particular point which
> sounds
> reasonable, it's easy to forgot that *all library code where
> the author
> didn't care* is now unusable by anybody who does. The converse
> would not be
> true if the situation was reversed.
>
> virtual-by-default is incompatible with optimisation, and it's
> reliable to
> assume that anybody who doesn't explicitly care about this will
> stick with
> the default, which means many potentially useful libraries may
> be
> eliminated for use by many customers.
> Also, as discussed at length, revoking virtual from a function
> is a
> breaking change, adding virtual is not. Which means that,
> instead of making
> a controlled breaking change with a clear migration path here
> and now, we
> are committing every single instance of any user's intent to
> 'optimise'
> their libraries (by finalising unnecessarily virtuals) to
> breaking changes
> in their ABI - which *will* occur, since virtual is the default.
> According to semantic versioning, this requires bumping the
> major version
> number... that's horrible!
>
> What's better; implementing a controlled deprecation path now,
> or leaving
> it up to any project that ever uses the 'class' keyword to
> eventually
> confront breaking changes in their API when they encounter a
> performance
> oriented customer?
Case in point:
https://github.com/D-Programming-Language/phobos/pull/1771
"mark std.zip classes as final"
Long story short: MartinNowak decided to make the Zip classes
final, since it made no sense to have any of the functions
virtual, or to have anybody derive from them anyways.
https://github.com/D-Programming-Language/phobos/pull/1771#issuecomment-36524041
Comment from Dav1dde:
"Just to let you know, it broke my code"
More information about the Digitalmars-d
mailing list