New in Mathematica 10

For Existing Users

Building on Mathematica's rich paradigms, Version 10 introduces a host of new ideas that not only extend the domain of Mathematica, but also streamline and make more efficient many existing patterns of usage.

New Headline Features »

Highlights of the Rest:

Interactive Conveniences

Computation-aware multiple undo

The problem of multiple undo in Mathematica has been solved!

Visual hinting of computation dependency

When you edit an input line, its corresponding output goes gray to indicate that it's not connected anymore.

Hovering help box

Whenever you type a function, help on it is just one easy click away

Inline natural language input

Use Ctrl + = to insert entity names and much more in natural language

Access more styles with Tab

Just press Tab before you type content in a cell to go from section to subsection to...

Autocompletion Everywhere

Option value autocompletion

Context-sensitive autocompletion that suggests detailed settings for options

Instant autocompletion wizards

When you need to pick a file or a color, there's always a wizard to help

String autocompletion

Autocomplete millions of entity names, properties, etc. when they appear in functions

Iconic preview autocompletion

See visual previews of fonts, plot themes, styles, and more

Code/text/string/etc. input autoconversion

Just start to type, and a heuristic suggests creating a code, text, string, or other cell

New Core Data Structures

Key-value associations

Introducing <| ... |>: highly efficient key-value associations deeply integrated into the system

It's SQL, it's NoSQL—it's Dataset

Introducing a new way to handle relational and hierarchical structured data

Entities for knowledge representation

Countries, chemicals, movies: there are built-in symbolic entities for all of them

Inactivate and manipulate!

Make any part of any expression completely inert, for formal manipulation, code transformation, etc.

Geometric region objects

As part of the large-scale geometry system, there's now a uniform way to represent and use any geometric region

Language Conveniences & Functional Programming

Many more currying and operator forms

Select[criterion][list] is Select[list, criterion]—and lots of other functions have operator forms, too

The "Key" family

Lots of functions for handling key-value pairs—as well as lists of rules

The "First" family

FirstPosition, FirstCase, SelectFirst: no need to check and select first parts anymore

Functional Boolean operations

AllTrue, AnyTrue, NoneTrue: apply a function and test

Functions that return associations

PositionIndex, Count, etc.: where, how many, etc., given as associations

The "By" family

MaximalBy, CountsBy, GroupBy: lots of "adverb-like" forms of functions

Leveraging Association for lists of rules

When it makes sense, what works for Association also works for lists of rules

New Syntax

<| ... |> — Association

Key-value associations: for example, <|a->1, b->2|>

#x — named arguments

#x is Part[#, "x"] to make it easy to use values from an association

@* and /* — Composition and RightComposition

Making it easier and easier to do serious functional programming

Templates for Everything

Templates for strings

It's now so easy to generate strings from templates...

Templated document generation

So much easier than notebook programming: just use templates to create documents

Templates for the web

Just a few special tags in your HTML, and you've got a powerful computable template

Notebook templates

As easy as making a notebook—but now it's a template for making other notebooks

Construct and Pluralize

Write templates with Pluralize to make words plural when necessary

More Time & Place

Symbolic date objects

Date and time objects allowing arithmetic, interaction with units, etc.

ARCH, GARCH, and friends

Lots of powerful time series analysis, modeling, and forecasting

Here, Now, Tomorrow, etc.

It's so easy to read code when it simply says "Here" or "Now"

Rise, set, etc. for Sun, Moon

Convenient immediate astronomical computation

Geoposition objects

There's now a built-in way to represent every point on the Earth (or Moon etc.)

"What time is it?" anywhere

LocalTime and new time zone handling

Time and event series

Time series are now part of the core of the system

Geo everything

Geo computations—and geo maps of everywhere on the Earth—and beyond

Yet More Pure & Applied Math

Additional special functions

Four more Dirichlet functions, a couple of Fresnels... not to mention Farey sequences or fibonorials

Finite elements!

Finite elements have arrived—after nearly a decade of development

Mandelbrot and Julia sets

Efficient functions for computing and visualizing Mandelbrot and Julia sets

Hidden Markov models

Another piece in the whole framework of random processes and modeling

Math Conveniences

DSolveValue and friends

Get just the main result from solving an equation...

Matrix predicates

Test if matrices are orthogonal, positive semidefinite, antihermitean, etc.

Everything over regions

Solve, reduce, integrate, optimize, etc. all now work with arbitrary geometric regions

Carry units when you do calculus

DSolve, Integrate, Interpolate, and many more now handle quantities with units

Sigmoid, PowerRange, ...

Yet more functions to make mathematical code convenient and readable

For Math Classes & More

Display math unevaluated

Use Inactive to maintain inactive versions of math expressions, for manipulation, display, etc.

All the plane and solid geometry you need

Areas, volumes, distances to figures, etc.—all built in and symbolic

Function domains and ranges

Full symbolic representations of domains and ranges (and periods) for all sorts of functions

Manipulate implicit math

Differentiate a formal sum, operate under an integral—do formal operations on unevaluated math

Curve computations

Curvature, arc length, Frenet, and more

Triangle math

Use SASTriangle etc. to specify a triangle, then solve for anything about it

Number-line plots

Beyond 2D and 3D plotting; this is 1D plotting—of points, intervals, etc.

Bigger, Faster, Better Computations

Faster bignums, linear algebra, and more

New optimizations for new machine architectures, new algorithms, etc.

1,000x speed-up in polynomial reduction

Reduce and solve systems of exact polynomial equations much faster

Lots more sums and products

New "functional telescoping" algorithms—significantly expanding the universe of doable sums and products

100,000+ numerical solutions

A major new algorithm for solving numerical systems of polynomial equations

Faster nearest neighbors

A new algorithm finds nearest neighbors faster in high dimensions

Reduced memory usage

Optimizations in several core data structures reduce memory usage by factors of 2 or more

Breaking the complexity barrier for TSP

Traveling Salesman Problems with 1,000+ points are now easy

Hybrid symbolic differential equations

For the first time ever: symbolically solve ODEs with delays and discrete events

Shared library optimization

The kernel now runs as a shared library, cutting the code space needed to run multiple kernels

Elegant New Looks—and Capabilities

A fresh look for visualization

Completely redesigned and modernized look for visualization

Get back the classic look...

Just set a plot theme to get back the classic look for all visualizations

Colors display as swatches

Now you can immediately see what RGBColor[1,.7,.8] is: it just displays as a swatch

Legends for any visualization

Automated algorithms for creating legends, including quantities and units if needed

Visual summaries of symbolic objects

InterpolatingFunction, NearestFunction, InputStream, etc. now display in a consistent format with drill-down

Plot themes: one option to pick everything

Minimal, web, business, scientific, sparkline...: pick a theme to automatically set graphics options

Multicolumn output

Automatically format anything into multiple (perhaps ragged) columns

A few new characters...

... and of course,

Interacting with the Outside World

Interpreters for everything

500+ built-in string interpreters—for everything from cities to cat breeds

URL manipulation

Encoding, decoding, shortening, calling like functions, etc.: all kinds of URL operations

Touch-device support

TouchPosition for touchscreens

Two-way interaction with external processes

Start an external process, and do repeated I/O with it

Sending tweets, etc.

Tweet, update status, etc. from inside any program

More sophisticated DLL communication

Send images, sparse arrays, and more through LibraryLink to DLLs, and get called back too

Simple string I/O gets simpler

ReadString, ReadLine, etc.: exactly what you need for low-level string I/O

More robust image capture

Better support for the zoo of camera connections that exist on computers

Modernized SQL connectivity

New drivers and more streamlining come to DatabaseLink

Now with WebP, MP3, OGG

Adding new and popular image and sound formats