# Incompatible Changes since Mathematica Version 7?

There is documentation of the incompatible changes made to Mathematica with each major release:

Unfortunately that documentation simply stopped with version 7. Therefore I ask:

## What incompatible changes have been made since Mathematica 7?

There are other questions on the subject but I wish to make this an exhaustive index for easy reference.

-
I would delete the "interoperability" tag , since it does not apply here, and add the "version-10" tag. Would you agree? –  magma Aug 6 at 9:23
@magma I removed interoperability but I don't think adding version-10 is appropriate. –  Mr.Wizard Aug 16 at 18:35

# Between Versions 7 and 8

Hash now gives the hash of a raw sequence of characters when applied to Strings. In past versions the string characters (quotation marks) were included in the calculation of the hash. (Reference)

• Use "\"" <> string <> "\"" before hashing if you want output to match older versions.

\[Dash], \[LongDash] and \[Hyphen] may no longer be used as part of Symbol names. (Reference)

# Between Versions 8 and 9

Image expressions are now Atomic; data cannot be extracted using Part.

Interpolation of an unstructured grid is in V8 possible for more than 3 dimensions (linear interpolation only). In V9 and higher Interpolation in more than 3 dimensions is not possible (see post (59919)).

• 3rd party realizations of unstructured grid interpolations are available here, here, here, and here ( using different approaches and with different performance).

TeXForm no longer works properly with Row expressions, whether by design or oversight.

# Between Versions 9 and 10

Slot: in V10 #x and #"x" now parse as Slot["x"] and is interpreted as key name x for use with Association. In prior versions these were parsed as multiplication: #1 * x and #1 * "x".

• Add something to act as a separator or use #1 form: # x, #*x, #1x, (#)x

Dispatch expressions are now Atomic and cannot be manipulated with Part or patterns.

DateDifference now returns a Quantity expression.

• Use DayCount instead or use QuantityMagnitude to strip the units.

• Alternatively, using SetSystemOptions["DataOptions" -> "ReturnQuantities" -> False] will restore the old DateDifference behavior (see Possible Issues section of the DateDifference documentation).

DateRange now returns lists with year, month and day regardless of what the increment is.

• The change and possible workarounds are further discussed here.

GeoDistance and GeoDirection now return a Quantity expression.

• Use QuantityMagnitude to strip out the units.
(This solution applies to any function that now returns a Quantity instead of a value.)

Klingon character support has been removed. \[KlingonA] etc. are no longer recognized as valid input syntax.

LogPlot and family no longer provide standard log plot gridlines when Automatic is specified.

PlotTheme changes the fundamental style of most plots and overrides BaseStyle and GraphicsBoxOptions settings.

PlotLegends -> "Expressions" does not generate a legend when used with a single plot function.

• Use PlotLegends -> "AllExpressions" instead.

ParallelNeeds defaults to the System context when loading packages which introduce symbols outside the package context. In previous versions (and Needs) these symbols are in the Global context. This has been confirmed by Wolfram support as a design decision, not a bug.

• Create global symbols within package files in the Global context explicitly, as in Globalx.

NSolve returns the same solution several times to indicate its multiplicity. Before V10 it returned a solution with multiplicity only once. Reference.

• Use DeleteDuplicates@NSolve[...]

-
Klingon character support has been removed: that's because Klingons do not respect the Galactic Copyright Treaty –  magma Aug 6 at 9:29
Writing #x and #"string" in versions < 10 to mean # x and # "string" respectively is bad form anyway (a habit propagated by the Church of the Tersists, no doubt ;)). Such code deserves to be broken :P –  rm -rf Aug 6 at 16:18
@rm-rf The interactive editor would previously auto-space such things just as it still does when you type 3x. (I don't mean that it enters a literal space but rather shows the expression with spacing.) Do you always type a space between such things? I have not as it seemed like wasted effort. –  Mr.Wizard Aug 6 at 16:27
@eldo, I think the Inset thing is a bug rather than a deliberate change, so it doesn't belong in this list in my opinion. –  Simon Woods Aug 12 at 21:08
@Szabolcs The original report was filed online, I did not keep a copy. Below is a copy of the reply from support: Thanks for contacting Wolfram Technical Support. Regarding the issue you reported, it seems this is an intentional design change. We have internal discussions on this and the argument from the developer is that "Setting $Context to $System on subkernels is necessary to make sure (new) system symbols arrive in the correct context on subkernels, because despite the MathLinkPrintFullSymbolName` settings, system symbols do not have their context attached". –  Daniel W Aug 20 at 0:52