Mathematica >
Mathematica Tutorial

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 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 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 xElementy now has built-in evaluation rules.
  • The symbols I and E are now output in StandardForm as ImaginaryI (\[ImaginaryI]) and ExponentialE (\[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 SkeletonIndicatorGraphicsSkeletonIndicator.
  • $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.
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team