General
Follow


Jan

Table of Matlab release features

Jan on 23 Nov 2019
Latest activity Reply by Steven Lord on 6 Feb 2024

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.
Stephen23
Stephen23 on 11 Jul 2021
@Rik & @Steven Lord: thank you very much for the info and links!
Steven Lord
Steven Lord on 11 Jul 2021
See this entry in the Release Notes for release R2016b for type and size and this entry for release R2017b for curly braces around each cell.
Rik
Rik on 11 Jul 2021
R2016a shows the old format, R2017b shows the new format.
Stephen23
Stephen23 on 11 Jul 2021
Does anyone happen to know when the display format changed? In recent versions it lists the type and size, previous versions just showed the element data without the outermost brackets. For example, for cell arrays:
Rik
Rik on 25 Nov 2019
Nice, I wish I had had this idea myself, have an upvote from me.
James Tursa
James Tursa on 25 Nov 2019
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:
MWSIZE_MAX, MWSIZE_MIN, MWINDEX_MAX, MWINDEX_MIN,
MWSINDEX_MAX, MWSINDEX_MIN
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.
Jan
Jan on 27 Nov 2019
Thank you, James. This is very useful.
Jan
Jan on 23 Nov 2019
Editing by editors are welcome!
Please use ASCII and do not touch %[AUTO... line and final %}:
%[AUTO_EXTRACT:VersionList]
%{
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
1st release supporting Windows 10
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, timetable
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, float to string conversion on Windows shows all
digits when higher precison requested than the floating point
number type (previously: significant digits only & trailing zeros),
affects e.g. num2str(), sprintf(), fprintf().
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
9.10 R2021a Name=Value Syntax
9.11 R2021b backgroundPool, ode78/89, rectangular selection in
editor, live editor features merged into normal editor
9.12 R2022a str2num(str,Evaluation="restricted"), UTF-8 in mex files
on Windows
9.13 R2022b dictionary object, output argument validation
9.14 R2023a documentation not installed by default, pivot
23.2 R2023b
%}
For a the official and complete list of changes see: https://www.mathworks.com/help/matlab/release-notes.html
[EDITED] If you want to use this list off-line, run the code from the comments: it downloads the contents of the above text and inserts it into the local M-file.
Steven Lord
Steven Lord on 6 Feb 2024
In the past, the version number of MATLAB Compiler Runtime was not necessarily the same as the version number of MATLAB. For example, this page lists the MATLAB Runtime version for release R2012a as 7.17 but the Downloads page lists the version number for MATLAB in release R2012a as 7.14.
Yes, this could be confusing at times. Starting in release R2023b, if I recall correctly, MATLAB and other MathWorks products use a new version numbering system. Release R2023b of MATLAB is version 23.2.
version
ans = '23.2.0.2489961 (R2023b) Update 6'
You can see that other products have the same version number:
ver simulink
----------------------------------------------------------------------------------------------------- MATLAB Version: 23.2.0.2489961 (R2023b) Update 6 MATLAB License Number: 0 Operating System: Linux 5.4.233-0504233-generic #202302250651 SMP Sat Feb 25 12:26:27 UTC 2023 x86_64 Java Version: Java 1.8.0_292-b10 with AdoptOpenJDK OpenJDK 64-Bit Server VM mixed mode ----------------------------------------------------------------------------------------------------- Simulink Version 23.2 (R2023b)
as does the MATLAB Compiler Runtime:
[major, minor] = mcrversion
major = 23
minor = 2
So this should hopefully reduce confusion going forward.
Based on the downloads page the version number for the MATLAB included as part of release R2009a was MATLAB 7.8.
raym
raym on 6 Feb 2024
Rik
Rik on 17 Mar 2023
There actually does seem to be a (nearly?) complete list. It isn't hard to parse this JSON file to a usable lookup table.
I have attached two functions. One will replace the named entities with an encoding of the numeric value (the Unicode codepoint), the other will parse the numeric encoding to char.
Jan
Jan on 3 Jun 2021
@Rik: I've inserted the most important codes.
Rik
Rik on 3 Jun 2021
I might want to add something like this in my ifversion function as a fallback (if people use an old version of the function to test against a new release name).
The list I referred to in my comment you quoted still lives in a local file, so I do understand the need for storing such lists locally.
It is a bit surprising to me that there wouldn't be a defnition document with the design of a specific HTML version including a list of all HTML entities. However: wouldn't it be enough to keep a limited list of the few characters that can reasonably be expected to show up (mainly the quotes and nobreakspace)? In one of my functions I use this:
str=strrep(str,'&eacute;',char(233));
str=strrep(str,'&oacute;',char(243));
str=strrep(str,'&iacute;',char(237));
str=strrep(str,'&uacute;',char(250));
str=strrep(str,'&aacute;',char(225));
str=strrep(str,'&agrave;',char(224));
str=strrep(str,'&egrave;',char(232));
str=strrep(str,'&iuml;',char(239));
str=strrep(str,'&auml;',char(228));
str=strrep(str,'&euml;',char(235));
str=strrep(str,'&uuml;',char(252));
str=strrep(str,'&ouml;',char(246));
str=strrep(str,'&quot;','''');
str=strrep(str,'&nbsp;',' ');
str=strrep(str,'&frac12;','.5');%1/2 sign
Jan
Jan on 3 Jun 2021
@Rik: I'm experimenting with this:
function VersionList
%[AUTO_EXTRACT:VersionList]
%}
key = {['%[AUTO_EXTRACT:', 'VersionList]'], '%}'};
W = webread('https://www.mathworks.com/matlabcentral/answers/492752');
W = extractBetween(W(W~=char(13)), key{:});
T = replace(W{1}, {'&quot;', '&lt;', '&gt;', '&amp;'}, ...
{'"', '<', '>', '&'});
me = [mfilename('fullpath'), '.m'];
C = replaceBetween(fileread(me), key{:}, T);
fid = fopen(me, 'w');
assert(fid > 0, 'Cannot write file: %s', me);
fwrite(fid, C, 'char');
fclose(fid);
end
This function updates itself by inserting the parts between "%[AUTO_EXTRACT:VersionList]" and the first following "%}" from the web into its local contents.
Currently I'm struggling with the HTML entities:
8.6 R2015b New execution engine &quot;LXE&quot;
I do not have the Text Analytics Toolobox for decodeHTMLEntities and not really satisfied with FEX: htmlEntities . All browsers contain tools to do this, but how can I access them?
I'm not sure if it is a great benefit to have community contents available off-line. But my phone line broke down repeatedly this year for several days (provider exhausted by online meetings...) and I've missed this list.
Would others have a need for such a tool?
Rik
Rik on 2 Jun 2021
@Jan It looks like you want to use this for some kind of automatic extraction. Can you define the restrictions you were planning to use? Or even better: post the function that does the extraction? That way people editing the answer will not accidentally break your function.
Rik
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).
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
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.