# 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 12—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, or syntax changes and option specifications for that function may have changed, affecting its use.

In addition, to maintain the overall coherence of Mathematica, some features that existed in earlier versions have gradually been dropped—first becoming undocumented, and later generating warning messages if used. Furthermore, it has been necessary in some cases to make changes to particular functions that are not compatible with their earlier operation.

### 12.1 to 12.2

- ValueQ has been redesigned to test for the presence of a definition regardless of whether the definition is used. Old behavior can be restored by specifying "Legacy" as the method.
- The keyboard shortcut for underscript is now + + , . The old shortcut ( + + 4) now belongs to the T
_{E}X assistant. - NDSolve sparsity specification for the Jacobian has been changed. See Finite Element Programming for in-depth information.
- GPU computation using CUDA is no longer supported on macOS.
- The default element for Import[file,"PDF"] has been changed from Graphics to Image. Previous behavior can be accessed by specifying "PageGraphics" upon import.
- Import[file,"MP4"] and Import[file,"Ogg"] now use Audio or Video elements, depending on whether a video track exists.
- VideoTrim now trims all tracks. VideoTracks, AudioTracks, SubtitleTracks, etc. options have been deprecated.
- VideoFrameList and VideoExtractFrames now extract from the first track. The VideoTracks option has been deprecated.
- SpeechSynthesize now uses GeneratedAssetLocation to set storage location instead of Method.
- AtomQ of Molecule objects now returns True.
- AtomList, AtomCount, BondList, BondCount and MoleculeValue now use All as the default value for the option IncludeHydrogens. Old behavior can be restored by specifying "ExplicitOnly" as the option value.
- If a Graphics object has an ImageSizeMultipliers value other than 1, ImageSize → Automatic will not automatically resize the object when horizontally resizing the notebook window.
- A copy of the file commons-collections-3.1.jar is no longer included in DatabaseLink`.

### 12.0 to 12.1

- QuantityArray and SymmetrizedArray no longer return StructuredArray objects.
- Graphics3D and derived functions now use False as the default value for ControllerLinking.
- ControllerMethod was removed as an option for Graphics3D and derived functions, while Manipulate and derived functions use ControllerMethod→None as the default specification.
- VectorScale has been deprecated in favor of the options VectorScaling, VectorAspectRatio and VectorSizes for VectorPlot.
- The Properties option for custom Graph properties has been deprecated in favor of AnnotationRules, and PropertyValue has been deprecated in favor of AnnotationValue.
- URL has superseded GraphStore`IRI.
- CurryApplied and OperatorApplied have superseded the experimental function Curry.
- Most functions from the "PacletManager`" context are now in the "System`" context and fully documented, and the "PacletManager`" context is no longer on the $ContextPath.
- "Ogg" is now a video format, and the previously registered audio format has been renamed to "OggVorbis".
- "QuickTime" and "AVI" files now import as Video objects instead of a list of frame indices.
- ImageFileApply and ImageFileFilter now store their results in $WolframDocumentsDirectory/Image by default instead of in the current working directory.
- AudioCapture, AudioRecord and SpeechSynthesize now store their results in $WolframDocumentsDirectory/Audio by default instead of in $UserDocumentsDirectory.
- The symbol Splice has a new definition; its previous functionality can be accessed with FileTemplate.
- The default value of SphericalRegion in Graphics3D is now Automatic rather than False.
- A Molecule object constructed from a "SMILES" string will only explicitly contain those hydrogen atoms explicitly included in the input.
- Graph3D now sets the Method suboption "ShrinkWrap" to True rather than False.

### 11.3 to 12.0

- FinancialData now returns Quantity and TimeSeries objects by default. Old behavior can be restored by specifying "Legacy" as the method.
- Tetrahedron[] no longer autoevaluates and now gives a regular tetrahedron.
- PolyhedronData with the "Faces" property now returns a GraphicsComplex representation of faces, suitable for visualization using Graphics3D.
- GraphPlot, GraphPlot3D, LayeredGraphPlot and TreePlot have a new default plot theme.
- The operator precedence of of < - > was changed to match the precedence of (\[ TwoWayRule]).
- "CSV" and "TSV" export a full array now by default. Old behavior can be restored by specifying False for the option "FillRows".
- Importing "FITS" file types now returns an Association by default for both single- and multi-dataset files.
- Image switched from "Real64" to "Real32" as the default type.
- Total no longer works on expressions with an arbitrary Head.
- SkinStyle has been renamed to AnatomySkinStyle, and AnatomyForm has been renamed to AnatomyStyling.
- "MXNet" has deprecated the following import options: "RawArrayAssociation", "RawArrayList".
- Syntax changes to GraphPlot, GraphPlot3D, LayeredGraphPlot and TreePlot. Options specified with the older syntax have been deprecated.
- EdgeLabeling, EdgeRenderingFunction, Method, PackingMethod, VertexCoordinateRules, VertexLabeling and VertexRenderingFunction options for GraphPlot have been deprecated.
- CompanyData has deprecated the property "TotalFunding" and renamed the property "Revenue" to "TotalRevenue".

### 11.2 to 11.3

- Numerical calculations with machine-precision numbers no longer automatically switch to arbitrary-precision numbers in cases of underflow. The "CatchMachineUnderflow" system option has been removed.
- Input criterion and syntax for FindFaces has changed, and it now returns Rectangle objects.

### 11.1 to 11.2

- Rasterize now returns an Image by default.
- TwoWayRule () is parsed as \[ TwoWayRule] instead of UndirectedEdge for symbols other than Graph.
- TaskObject has superseded ScheduledTaskObject and SessionSubmit has superseded CreateScheduledTask.

### 11.0 to 11.1

- Graphics primitives are now more strict with regard to the depth of their location specification.

- Over 550 new functions added.
- The syntax of MovingMap has changed.
- Default font for input and output cells has changed to Source Code Pro on Mac, Consolas on Windows, and Bitstream Vera Sans Mono on Linux distributions.
- Splice has been superseded by FileTemplate.

- 700 new functions have been added.
- #x and #"x" now parse as Slot["x"] instead of #1*x and #1*"x", respectively.
- Dispatch objects are now atomic.
- DateDifference now returns a Quantity expression instead of a Real.
- GeoDistance and GeoDirection now return a Quantity expression.
- WeatherData returns a Quantity expression.
- Klingon character support has been removed.
- NSolve returns the same solution several times to indicate its multiplicity.
- Majority of Combinatorica functionality package is built into the Wolfram System.
- Default Plot styling has been updated with new colors.

- Image objects are now atomic.
- Solve can now return ConditionalExpression objects, rather than just one particular branch of the inverse.
- Legend functionality has been overhauled.
- Ordering of Permute has changed to follow standard conventions.

- 500 new functions have been added.
- Hash no longer includes quotation marks when calculating hashes of strings.

- 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 import and export 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.

- Over 800 completely new built‐in objects have been added, some of whose names may conflict with names already being used.
- 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`.
- 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.
- 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.
- ListPlot now aggregates lists of points into a single Point primitive.
- The MeshRange option has been superseded by DataRange.
- 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 graphics primitive PostScript is no longer supported.
- The options RenderAll and PolygonIntersections are no longer supported.
- Rectangle[{x
_{min},y_{min}},{x_{max},y_{max}},graphics] has been superseded by Inset. - StyleForm and StylePrint have been superseded by Style.
- TextStyle has been superseded by the general BaseStyle mechanism.
- SequenceForm has been superseded by Row.

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

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

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

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