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.
- Condition (/;) can now be used in individual patterns as well as in complete rules, and does not evaluate by default.
- 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.
- FontForm takes a slightly different form of font specification.
- Framed has been superseded by Frame and related options.
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 x→y in StandardForm.
- More sophisticated definite integrals now yield explicit If constructs unless the option setting GenerateConditions->False is used.
- $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.
- $PipeSupported and $LinkSupported are now obsolete, since all computer systems support pipes and links.
- Subscript and Superscript now represent complete subscripted and superscripted quantities, not just subscripts and superscripts.
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 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.
- 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.
- 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.
- The default setting for the MathLink 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.
- The default font in graphics has changed from Courier to Times.
- Plot3D[{f, s}, {x, xmin, xmax}, {y, ymin, ymax}]: the shading specification s has been superseded by MeshShading.
- ListPlot now aggregates lists of points into a single Point primitive.
- 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 PostScript is no longer supported.
- Rectangle[{xmin, ymin}, {xmax, ymax}, graphics] has been superseded by Inset.
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.