Incompatible Changes since Mathematica Version 1
Introduction
Every new version of Mathematica contains many new features. But careful design from the outset has allowed nearly total compatibility to be maintained between all versions. As a result, almost any program written, say, for Mathematica Version 1 in 1988 should be able to run without change in Mathematica Version 7—though it will often run considerably faster.
One inevitable problem, however, is that if a program uses names that begin with upper-case letters, then it is possible that since the version when the program was first written, built-in functions may have been added to Mathematica whose names conflict with those used in the program.
In addition, to maintain the overall coherence of Mathematica a few functions that existed in earlier versions have gradually been dropped—first becoming undocumented, and later generating warning messages if used. Furthermore, it has in a few rare cases been necessary to make changes to particular functions that are not compatible with their earlier operation.
Between Versions 1 and 2
260 new built-in objects have been added, some of whose names may conflict with names already being used.
Accumulate has been superseded by FoldList; Fold has been added.
Condition (
) can now be used in individual patterns as well as in complete rules, and does not evaluate by default.
The functionality of Release has been split between Evaluate and ReleaseHold.
Compose has been superseded by Composition.
Debug has been superseded by Trace and related functions.
Power no longer automatically makes transformations such as Sqrt[x^2]→x.
Limit now by default remains unevaluated if it encounters an unknown function.
Mod now handles only numbers; PolynomialMod handles polynomials.
CellArray has been superseded by Raster and RasterArray.
FontForm takes a slightly different form of font specification.
Framed has been superseded by Frame and related options.
ContourLevels and ContourSpacing have been superseded by Contours.
Plot3Matrix has been superseded by ViewCenter and ViewVertical.
FromASCII and ToASCII have been superseded by FromCharacterCode and ToCharacterCode respectively.
Alias has been superseded by $PreRead.
ResetMedium has been subsumed in SetOptions, and $$Media has been superseded by Streams.
StartProcess has been superseded by Install and by MathLink.
Between Versions 2 and 3
259 new built-in objects have been added, some of whose names may conflict with names already being used.
N[expr, n] now always tries to give n digits of precision if possible, rather than simply starting with n digits of precision.
All expressions containing only numeric functions and numerical constants are now converted to approximate numerical form whenever they contain any approximate numbers.
Many expressions involving exact numbers that used to remain unevaluated are now evaluated. Example: Floor[(7/3)^20].
Plus and Times now apply built-in rules before user-defined ones, so it is no longer possible to make definitions such as
.
The operator precedence for
and
has been changed so as to be below
. This has the consequence that expressions previously written in InputForm as
must now be written as
. V2Get[file] will read a file using old operator precedences.
is now an operator used to generate a superscript. Raw octal codes must be used instead of
for inputting control characters.
In Mathematica notebooks, several built-in Mathematica functions are now output by default using special characters. Example:
is output as
in StandardForm.
More sophisticated definite integrals now yield explicit If constructs unless the option setting GenerateConditions->False is used.
HeldPart[expr, i, j, ...] has been superseded by Extract[expr, {i, j, ...}, Hold].
Literal[pattern] has been replaced by HoldPattern[pattern]. Verbatim[pattern] has been introduced. Functions like DownValues return their results wrapped in HoldPattern rather than Literal.
ReplaceHeldPart[expr, new, pos] has been superseded by ReplacePart[expr, Hold[new], pos, 1].
ToHeldExpression[expr] has been superseded by ToExpression[expr, form, Hold].
Trig as an option to algebraic manipulation functions has been superseded by the explicit functions TrigExpand, TrigFactor and TrigReduce.
AlgebraicRules has been superseded by PolynomialReduce.
The option LegendreType has been superseded by an additional optional argument to LegendreP and LegendreQ.
WeierstrassP[u, {g2, g3}] now takes
and
in a list.
and
now have built-in values only, but these handle all possible Mathematica characters.
is no longer supported.
Arbitrary-precision approximate real numbers are now given by default as digits`prec in InputForm. This behavior is controlled by $NumberMarks.
Large approximate real numbers are now given by default as
in InputForm.
HomeDirectory[ ] has been replaced by $HomeDirectory.
Dump has been superseded by DumpSave.
and
are now obsolete, since all computer systems support pipes and links.
LinkOpen has been superseded by LinkCreate, LinkConnect, and LinkLaunch.
Subscripted has been superseded by RowBox, SubscriptBox, etc.
Subscript and Superscript now represent complete subscripted and superscripted quantities, not just subscripts and superscripts.
FontForm and DefaultFont have been superseded by StyleForm and TextStyle.
In the notebook front end, changes that were made include:
The file format for notebooks has been completely changed in order to support new notebook capabilities.
Notebook files are now by default given .nb rather than .ma extensions; .mb files are now superfluous.
The front end will automatically ask to convert any old notebook that you tell it to open.
The kernel command NotebookConvert can be used to convert notebook files from Version 2 to Version 3 format.
The default format type for input cells is now StandardForm rather than InputForm.
The organization of stylesheets, as well as the settings for some default styles, have been changed.
Some command key equivalents for menu items have been rearranged.
Between Versions 3 and 4
61 new built-in objects have been added, some of whose names may conflict with names already being used.
N[0] now yields a machine-precision zero rather than an exact zero.
has been superseded by AbsoluteOptions, which yields results in the same form as Options.
Element[x, y] or
now has built-in evaluation rules.
The symbols I and E are now output in StandardForm as
(\[ImaginaryI]) and
(\[ExponentialE]) respectively.
A new second argument has been added to CompiledFunction to allow easier manipulation and composition of compiled functions.
Between Versions 4 and 5
44 completely new built-in objects have been added, some of whose names may conflict with names already being used.
Precision and Accuracy now return exact measures of uncertainty in numbers, not just estimates of integer numbers of digits.
Precision now returns the symbol MachinePrecision for machine numbers, rather than the numerical value $MachinePrecision.
N[expr, MachinePrecision] is now used for numerical evaluation with machine numbers; N[expr, $MachinePrecision] generates arbitrary-precision numbers.
ConstrainedMin and ConstrainedMax have been superseded by Minimize, Maximize, NMinimize, and NMaximize.
SingularValues has been superseded by SingularValueList and SingularValueDecomposition. SingularValueDecomposition uses a different and more complete definition.
LUBackSubstitution has been superseded by the use of the more general LinearSolveFunction.
FindRoot[f, {x, {x0, x1}}] is now used to specify a starting vector value for x, rather than a pair of values. The same is true for FindMinimum.
DSolveConstants has been superseded by the more general option GeneratedParameters.
TensorRank has been replaced by ArrayDepth.
$TopDirectory has been superseded by $InstallationDirectory and $BaseDirectory.
The default setting for the MathLink LinkProtocol option when connecting different computer systems is now
rather than
.
Between Versions 5 and 6
The graphics functionality has significantly changed. For compatibility purposes, use
to restore graphics capabilities from Mathematica 5. To restore the Mathematica 6 graphics capabilities, use
.
Over 800 completely new built-in objects have been added, some of whose names may conflict with names already being used.
The output form of a Graphics or Graphics3D object is now the rendered graphic rather than an output such as
.
$DisplayFunction is now set to Identity, so that no side effect happens by default when evaluating a graphic. To produce a side effect similar to Version 5 output, you can use the Print function to print the graphic.
The default font in graphics has changed from Courier to Times.
GraphicsArray has been superseded by GraphicsGrid and Grid.
The default for AspectRatio in Graphics and ParametricPlot is now Automatic.
The PlotDivision option for Plot has been superseded by MaxRecursion.
The PlotJoined option for ListPlot has been superseded by ListLinePlot.
Plot3D[{f, s}, {x, xmin, xmax}, {y, ymin, ymax}]: the shading specification s has been superseded by MeshShading.
The option HiddenSurface->False has been superseded by PlotStyle -> FaceForm[ ].
ContourGraphics has been superseded by ListContourPlot and GraphicsComplex.
DensityGraphics has been superseded by ListDensityPlot and GraphicsComplex.
Plot3D and other 3D plotting functions now emit GraphicsComplex rather than a raw list of Polygon primitives.
ListPlot now aggregates lists of points into a single Point primitive.
The MeshRange option has been superseded by DataRange.
DensityPlot and ListDensityPlot by default now do not draw meshes.
ListPlot3D[array, shades] has been superseded by MeshShading.
SurfaceColor in 3D graphics has been superseded by explicit color and the directives Specularity and Glow.
Lighting now supports a syntax for specifying different kinds of light sources, including spotlights, point light sources, directional lighting and ambient lighting.
The graphics primitive
is no longer supported.
The options RenderAll and PolygonIntersections are no longer supported.
Rectangle[{xmin, ymin}, {xmax, ymax}, graphics] has been superseded by Inset.
StyleForm and StylePrint have been superseded by Style.
TextStyle has been superseded by the general BaseStyle mechanism.
SequenceForm has been superseded by Row.
Between Versions 6 and 7
Over 400 completely new built-in objects have been added, some of whose names may conflict with names already being used.
For raster image formats, Import[file] now returns Image[...] instead of Graphics[Raster[...]] to take advantage of the new image processing functionality. Use Import[file, "Graphics"] to import file as a Graphics expression.
For more precise expression structure, Import[file, "XML"] and Export[file, "XML"] now always imports and exports symbolic XML expressions only. Import["file.xml"] will still determine the XML format automatically as in Mathematica 6.
To allow for more diverse interactive controls, the option
has been renamed TooltipDelay. The usage is unchanged.