A.13 Incompatible Changes
A.13.1 Since Version 1
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 5—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 makes changes to particular functions that are not compatible with their earlier operation.
This section lists all major incompatible changes from Mathematica Version 1 onward.
A.13.2 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.
Additional parts devoted to Mathematica as a programming language, and to examples of Mathematica packages, have been dropped from The Mathematica Book.
A.13.3 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.
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, , ] now takes and in a list.
$Letters and $StringOrder now have built-in values only, but these handle all possible Mathematica characters.
StringByteCount 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 digits*^exponent in InputForm.
HomeDirectory[ ] has been replaced by $HomeDirectory.
Dump has been superseded by DumpSave.
$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 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 style sheets, as well as the settings for some default styles, have been changed.
Some command key equivalents for menu items have been rearranged.
A.13.4 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 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 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.
A.13.5 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.
FindRoot[f, x, , ] 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 "TCPIP" rather than "TCP".