# Incompatible Changes since *Mathematica* Version 1

Introduction | Between Versions 4 and 5 |

Between Versions 1 and 2 | Between Versions 5 and 6 |

Between Versions 2 and 3 | Between Versions 6 and 7 |

Between Versions 3 and 4 |

## 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.

- 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.

- 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.

- ResetMedium has been subsumed in SetOptions, and $$Media has been superseded by Streams.

- StartProcess has been superseded by Install and by WSTP.

## 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 2+2=5.

- The operator precedence for . and ** has been changed so as to be below ^. This has the consequence that expressions previously written in InputForm as a.b^n must now be written as (a.b)^n. 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 ∖^A for inputting control characters.

- In
*Mathematica*notebooks, several built‐in*Mathematica*functions are now output by default using special characters. Example: x->y is output as xy in StandardForm.

- More sophisticated definite integrals now yield explicit If constructs unless the option setting GenerateConditions->False is used.

- 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,{g
_{2},g_{3}}] now takes g_{2}and g_{3}in a list.

- $Letters and $StringOrder now have built‐in values only, but these handle all possible
*Mathematica*characters.

- 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 digits*^exponent in InputForm.

- HomeDirectory[ ] has been replaced by $HomeDirectory.

- $PipeSupported and $LinkSupported 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 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.

## 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.

- FullOptions has been superseded by AbsoluteOptions, which yields results in the same form as Options.

- Element[x,y] or x∈y 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,{x
_{0},x_{1}}}] 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 Wolfram Symbolic Transfer Protocol (WSTP) LinkProtocol option when connecting different computer systems is now "TCPIP" rather than "TCP".

## Between Versions 5 and 6

The graphics functionality has significantly changed. For compatibility purposes, use <<Version5`Graphics` to restore graphics capabilities from *Mathematica* 5. To restore the *Mathematica* 6 graphics capabilities, use <<Version6`Graphics`.

- 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 ⁃Graphics⁃.

- $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.

- 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,x
_{min},x_{max}},{y,y_{min},y_{max}}]: 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.

- 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 options RenderAll and PolygonIntersections are no longer supported.

- StyleForm and StylePrint have been superseded by Style.

- 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 ActionDelay has been renamed TooltipDelay. The usage is unchanged.