MATLAB Answers

Table of Matlab release features

101 views (last 30 days)
Jan on 23 Nov 2019
Edited: Jan on 3 Feb 2021 at 12:00
After reading Rik's comment I looked for a list of Matlab releases and their corresponding features. Wiki: Matlab contains an exhaustive list, but what about having a lean version directly in the forum?
If this is useful, feel free to expand the list and to insert additions. Thank you.

  1 Comment

Rik on 25 Nov 2019
Nice, I wish I had had this idea myself, have an upvote from me.

Sign in to comment.

Answers (2)

Jan on 23 Nov 2019
Edited: Jan on 3 Feb 2021 at 12:00
Version Release Notes
1 1984
2 1986
3 1987
3.5 1990, DOS, >= 386 processor
4 1992, Windows 3.1x and Mac
4.2c 1994, math coprocessor required
5 Volume 8 1996, One release for all platforms
5.1 Volume 9 1997
5.1.1 R9.1
5.2 R10 1998, Last version on classic Macs
5.2.1 R10.1
5.3 R11 1999
5.3.1 R11.1
6 R12 2000, bundled JVM
6.1 R12.1 2001
6.5 R13 2002, JIT acceleration, <=63 characters for identifiers,
&& and ||
6.5.1 R13SP1 2003
6.5.2 R13SP2 Last release for IBM/AIX, Alpha/TRU64, SGI/IRIX
7 R14 2004, anonymous and nested functions, MacOS X
7.0.1 R14SP1
7.0.4 R14SP2 2005, memory-mapped files
7.1 R14SP3 64-bit version for WinXP/64
7.2 R2006a fopen(UTF8)
7.3 R2006b HDF5-based MAT-files
7.4 R2007a Java 1.5.0_07, bsxfun
7.5 R2007b new P-code, Last release for Win2k and PoweMac
License Server support for Vista
7.6 R2008a Enhanced OOP, namespaces with packages
7.7 R2008b Java 1.6.0_04, new Map data structure
upgrades to random number generators
7.8 R2009a Windows7 32&64, new .NET interface
7.9 R2009b Java 1.6.0_12, ~: ignore arguments in function calls
Intel 64-bit Mac, last for Solaris SPARC,
7.9.1 R2009bSP1 bug fixes
7.1 R2010a Last release for Intel 32-bit Mac
7.11 R2010b Java 1.6.0_17, enumeration
7.11.1 R2010bSP1 bug fixes and updates
7.11.2 R2010bSP2 bug fixes
7.12 R2011a rng
7.13 R2011b Access variables directly in MAT-files
Parallel Computing Toolbox: max 12 local workers
7.14 R2012a Last version with 32-bit Linux support
8 R2012b Toolstrip interface, Apps, redesigned documentation
8.1 R2013a New unit testing framework
8.2 R2013b Java 1.7.0_11, JRE version 7, table
8.3 R2014a Simplified MEX setup, USB Webcams,
Parallel Computing: unlimited number of local workers
8.4 R2014b HG2, datetime, tcpclient, histcounts, histogram,
improved user toolbox packaging and help files
animatedline, tabbing in GUI, Git-Subversion in IDE,
big data with MapReduce, new py package and Python
interface, webread (RESTful web services with JSON/XML)
8.5 R2015a Java 1.7.0_60, Last release supporting XP and Vista
8.5 R2015aSP1
8.6 R2015b New execution engine "LXE"
graph/digraph classes, MinGW-w64 on Windows
Last 32-bit version
9 R2016a Live Scripts, App Designer, Pause button
9.1 R2016b local functions in scripts, auto-expanding of dimensions,
tall arrays, string type, new JSON functions,
official Engine API for Java
9.2 R2017a MATLAB Online (desktop in web browser),
double-quoted strings, memoize, heatmap
expanded object properties validation,
mocking framework for unit testing,
MEX targets 64-bit by default
install FEX submissions with Add-On Manager
9.3 R2017b Java 1.8.0_121
9.4 R2018a Java 1.8.0_144, mlapp format changed, new MEX interface
9.5 R2018b Java 1.8.0_152, Mouse-over axes toolbar
9.6 R2019a Java 1.8.0_181
9.7 R2019b arguments block, dot indexing of function outputs
9.8 R2020a default file encoding: UTF-8, datetime InputFormat
restrictions, box plot in base Matlab with boxchart(),
matlab.lang.OnOffSwitchState data type for properties
like obj.Visible, MuPad removed.
9.9 R2020b patterns (regex-lite), implicit expansion for time-related
data types, AVX2-related improvements for AMD CPUs
For a complete and exhaustive list of changes see:


Rik on 19 Mar 2020
Maybe I went a bit overboard with the changes for R2020a, but they all seem like they could cause confusion or issues for inexperienced users.
Sean de Wolski
Sean de Wolski on 1 Dec 2020
MATLAB Projects in 19a were the crowning feature of that release in my book.
Rik on 1 Dec 2020
I personally only add things to this list if they are potentially relevant for questions on Answers, but feel free to add it here (and on Wikipedia).

Sign in to comment.

James Tursa
James Tursa on 25 Nov 2019
Edited: James Tursa on 3 Dec 2020
Note that a similar list of version specific mex related features (mxArray changes, API functions, etc.) can be found here in the matlab_version.h header file comments:
And another submission that contains the detailed header layouts in the mxArray_header.h file:
High level summary:
R2006b - First introduction of specific types for integer sizes, etc:
mwSize, mwIndex, mwSignedIndex
And the related macros:
R2007b - The combination BLAS/LAPACK library is split into two libraries.
First introduction of the blas.h and lapack.h header files, but there
are errors in blas.h for complex scalar return values.
R2008a - First introduction of the new classdef OOP and the API functions
mxGetProperty and mxSetProperty first appear.
The API functions mxGetPropertyShared and mxSetPropertyShared
(both undocumented) are available for C++ only (no C export).
R2008b - First version where the Ir and Jc arrays are shared in shared
data copies of sparse matrices.
First version where mxCreateUninitNumericArray is available.
R2009a - Change in the mxArray header definition. The first item used
to be a pointer to a C-style null terminated string containing
the name of the variable. Now this item is NULL until R2011a.
Thus all of the older deprecated API functions that depended
on this become obsolete and are no longer included in the API:
matPutArray, matPutNextArray, matPutArrayAsGlobal,
matGetArray, matGetArrayHeader, matGetNextArray,
matGetNextArrayHeader, matDeleteArray
R2009b - Fixes the BLAS incorrect complex scalar return values in blas.h
R2010b - The struct mxArray_tag definition is removed from matrix.h
R2011a - Change in the mxArray header definition. The first item used
to be NULL (since R2009a) but is now a reverse CrossLink pointer.
R2011b - Change in cell array Pi data pointer. Used to be NULL but now there
is something (unknown) behind it.
Change in struct array Pi data pointer for fieldname information.
Shared data copies of struct variables no longer share Pi.
R2012a - Change in struct array Pi data pointer. The number of variables
sharing the Pi memory block is no longer used. It is 0.
R2012b - Change in struct array Pi data pointer again. Details unknown.
R2014a - First version where the undocumented C mxCreateReference function
is removed from the API library.
R2015a - First version where the previously undocumented API functions
mxCreateUninitNumericMatrix and mxCreateUninitNumericArray
appear in the official documentation (they have been part of
the API library for several years, but now become official).
R2015b - First version where reference copies (sharing the actual mxArray
header struct) are used among top level workspace variables and
the method of passing variables to mex routines changes.
Last version that has 32-bit MATLAB. All later versions are 64-bit.
R2016b - First version where the string class is introduced.
R2017a - First version where the macro TARGET_API_VERSION is defined.
First version where the allocated memory from the mxArrayToString
and mxArrayToUTF8String functions are non-persistent.
R2017b - The macro TARGET_API_VERSION is no longer defined.
R2018a - First version where interleaved complex memory storage is used,
and the macro MX_HAS_INTERLEAVED_COMPLEX is defined as 1 when the
code is compiled with the -R2018 option, defined as 0 otherwise.
The Pi data pointer has been removed from the mxArray header,
and a bit in the flags field now determines if the variable is
complex or not.
Several bits in the flags field are now used to indicate how
large the data areas are in certain cases.
Behavior of multiple API functions has changed as a result.
Multiple type specific API functions added for data access.
First version where the udocumented mxGetPropertyShared and
mxSetPropertyShared functions appear in the C API library.
First version where the several undocumented API functions
are prevented by the mex command from linking with mex code.
First version where the macros R2017b, R2018a are available, and
the macro TARGET_API_VERSION appears again.
R2019a - First version where the CrossLink field in the mxArray header
has been moved next to the reverse CrossLink field.
R2019b - First version where the ndim field in the mxArray header has
been moved on top of the N field in a union and one of the
flags bits is now used to indicate 2D matrix. This results
in several other fields moving location within the header.
ndim is only populated if the appropriate flags bit is
reset to 0. If that flags bit is set to 1, then the union
spot is populated with N.
First version where the half( ) data type is provided. However,
it has been implemented as an opaque class so there is no way
to get at the data pointers inside a mex routine. The mxGetData
function will not work for this.

  1 Comment

Jan on 27 Nov 2019
Thank you, James. This is very useful.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!