Breaking changes are typically thought of as modifications which alter a public
API’s surface area. For example, changing a method name from Foo()
to Bar()
, or
otherwise changing it’s signature, such as adding a required parameter.
Anything else is simply implementation fodder, subject to change as more
efficient and/or appropriate means to compute the same result become available,
yes?
Those perf architects are usually right. For instance, when they recommend that you provide an explicit override implementation of the Equals(object) method for your value types, it’s a good idea to listen. Unless you intend to never compare your instances for memberwise equivallence, that is.
Microsoft Research has a number of very interesting programming languages currently baking in the oven. I find most of them extremely interesting, and will probably be babbling on about some of them in the coming weeks. Here’s a quick breakdown of what appears to be available: