Incompatible Changes since Mathematica 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 7though it will often run considerably faster.

One inevitable problem, however, is that if a program uses names that begin with uppercase letters, then it is possible that since the version when the program was first written, builtin 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 droppedfirst 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 builtin 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 builtin 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 builtin rules before userdefined 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 builtin 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.
  • $Letters and $StringOrder now have builtin values only, but these handle all possible Mathematica characters.
  • StringByteCount is no longer supported.
  • Arbitraryprecision 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 builtin objects have been added, some of whose names may conflict with names already being used.
  • N[0] now yields a machineprecision zero rather than an exact zero.
  • Element[x,y] or xy now has builtin 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 builtin 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 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 builtin 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 builtin 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.