# HG changeset patch # User Kai T. Ohlhus # Date 1551690277 -3600 # Node ID 0b3d9f76c7cd77516e5875d1a783dd5b1f2e3773 # Parent b035f3ca13be00356054eafcf1907c1419b09915 * NEWS-5.1.md: Markdownify. diff -r b035f3ca13be -r 0b3d9f76c7cd NEWS-5.1.md --- a/NEWS-5.1.md Sat Mar 02 09:48:25 2019 +0100 +++ b/NEWS-5.1.md Mon Mar 04 10:04:37 2019 +0100 @@ -1,303 +1,330 @@ --- -layout: default +layout: page +title: Summary of important user-visible changes for version 5 +menu: false --- -
-Summary of important user-visible changes for version 5 (2019-02-23):
---------------------------------------------------------------------
+February 23, 2019
+
+
+* TOC +{:toc} +
- ** The determination of an object's dimensions, size, and shape by the - functions ndims, rows, columns, isscalar, isvector, isrow, iscolumn, - ismatrix, and issquare now fully depends on the function size. - Thus, any user-defined object can ensure correct treatment by the - aforementioned functions by properly overloading the "size" - function. +### General improvements - ** The function randi has been recoded to produce an unbiased (all - results are equally likely) sample of integers. This may produce - different results in existing code. If it is necessary to reproduce - the exact random integer sequence as in previous versions use +- The Octave plotting system now supports high resolution screens, + i.e., those with greater than 96 DPI which are referred to as + HiDPI/Retina monitors. + +- Unicode character support for files and folders in Windows. - ri = imin + floor ((imax - imin + 1) * rand ()); +- A new core function `movfun` will apply a function to a sliding + window of arbitrary size on a dataset and accumulate the results. + Many common cases have been implemented using the naming + scheme `movXXX` where `XXX` is the function that will be applied. + For example, the moving average over a dataset is `movmean`. + New moving window functions: + + `movfun` `movslice` + `movmad` `movmax` `movmean` `movmedian` `movmin` `movprod` + `movstd` `movsum` `movvar` - ** A new core function movfun will apply a function to a sliding - window of arbitrary size on a dataset and accumulate the results. - Many common cases have been implemented using the naming - scheme movXXX where "XXX" is the function that will be applied. - For example, the moving average over a dataset is movmean. - New moving window functions: +- The `fsolve` function has been tweaked to use larger step sizes when + calculating the Jacobian of a function with finite differences. + This leads to faster convergence. - movfun movslice - movmad movmax movmean movmedian movmin movprod - movstd movsum movvar +- The `ranks` function has been recoded for performance and is now 25X + faster. In addition, it now supports a third argument that specifies + how to resolve the ranking of tie values. - ** The functions issymmetric and ishermitian accept an option "nonskew" - or "skew" to calculate the symmetric or skew-symmetric property - of a matrix. Performance has also been increased. +- The function `randi` has been recoded to produce an unbiased (all + results are equally likely) sample of integers. This may produce + different results in existing code. If it is necessary to reproduce + the exact random integer sequence as in previous versions use - ** The function isdefinite now returns true or false rather than - -1, 0, 1. To test for a positive semi-definite matrix (old output - of 0) check whether the following two conditions hold: + `ri = imin + floor ((imax - imin + 1) * rand ());` - isdefinite (A) => 0 - isdefinite (A + 5*TOL, TOL) => 1 +- The function `isdefinite` now returns `true` or `false` rather than + `-1`, `0`, or `1`. To test for a positive semi-definite matrix (old + output of `0`) check whether the following two conditions hold: + + `isdefinite (A) => 0` and `isdefinite (A + 5*TOL, TOL) => 1` - ** The issorted function now uses a direction option of "ascend" or - "descend" to make it compatible with both the sort function and - with Matlab. Change all uses of "ascending" and "descending" in - existing code to the new options. +- The `intmax`, `intmin`, and `flintmax` functions now accept a variable + as input. Existing code to query the range of an existing variable can + be simplified by removing the call to `class` that was previously + required. For example defining the variable `x = int8 (3)` in the + workspace, calls like - ** The strncmp and strncmpi functions now return true if the two input - strings match, even though the number of characters specified by N - exceeds the string length. This behavior more closely matches - common sense and is Matlab compatible. Example: + `range = [ intmin(class(x)), intmax(class(x)) ]` - Octave 5 : strncmp ("abc", "abc", 100) => true - Previously : strncmp ("abc", "abc", 100) => false + can in Octave 5 be simplified to `range = [ intmin(x), intmax(x) ]`. - ** The intmax, intmin, and flintmax functions now accept a variable - as input. This supports a common programming usage which is to - query the range of an existing variable. Existing code can be - simplified by removing the call to "class" that was previously - required. Example: +- The path handling functions no longer perform variable or brace + expansion on path elements and Octave's load-path is no longer + subject to these expansions. - x = int8 (3); - Octave 5 : range = [ intmin(x), intmax(x) ] - Previously : range = [ intmin(class(x)), intmax(class(x)) ] +- A new printing device is available, `"-ddumb"`, which produces ASCII + art for plots. This device is only available with the gnuplot toolkit. + + +### Dependencies - ** The ranks function has been recoded for performance and is now 25X - faster. In addition, it now supports a third argument that - specifies how to resolve the ranking of tie values. +- The GUI requires Qt libraries. The minimum Qt4 version supported is + Qt4.8. Qt5 of any version is preferred. - ** The fsolve function has been tweaked to use larger step sizes when - calculating the Jacobian of a function with finite differences. - This leads to faster convergence. The default solver options have - also changed to be Matlab compatible. This *may* result in existing - code producing different results. +- The OSMesa library is no longer used. To print invisible figures + when using OpenGL graphics, the Qt `QOFFSCREENSURFACE` feature must be + available and you must use the qt graphics toolkit. + +- The FFTW library is now required to perform FFT calculations. + The FFTPACK sources have been removed from Octave. + + +### Matlab compatibility - Option | New Default | Old Default - ------------------------------------------------ - FinDiffType | "forward" | "central" - MaxFunEvals | 100*length(x0) | Inf - TolFun | 1e-6 | 1e-7 - TolX | 1e-6 | 1e-7 - Updating | "off" | "on" +- The determination of an object's dimensions, size, and shape by the + functions `ndims`, `rows`, `columns`, `isscalar`, `isvector`, + `isrow`, `iscolumn`, `ismatrix`, and `issquare` now fully depends + on the function size. Thus, any user-defined object can ensure correct + treatment by the aforementioned functions by properly overloading the + `size` function. - ** The fminsearch function has changed default solver options for - Matlab compatibility. The accuracy option TolFun is now 1e-4 rather - than 1e-7. This *may* result in existing code producing different - results. +- The functions `issymmetric` and `ishermitian` accept an option + `"nonskew"` or `"skew"` to calculate the symmetric or skew-symmetric + property of a matrix. Performance has also been increased. - ** The fminbnd function has changed defaults for Matlab compatibility. - This *may* result in existing code producing different results. +- The `issorted` function now uses a direction option of `"ascend"` + or `"descend"`. Change all uses of `"ascending"` and `"descending"` + in existing code to the new options. + +- The `strncmp` and `strncmpi` functions now return `true` if the two + input strings match, even though the number of characters specified + by `n` exceeds the string length. For Example: - Option | New Default | Old Default - ------------------------------------------------ - MaxFunEvals | 500 | Inf - MaxIter | 500 | Inf - TolX | 1e-4 | 1e-8 + `strncmp ("abc", "abc", 100)` + + returns `true` in Octave 5 and `false` in older versions of Octave. + +- The `str2func` function no longer accepts a second `"global"` argument. + This argument was typically used to allow functions that accept + function names as arguments to avoid conflicts with subfunctions or + nested functions. Instead, it's best to avoid this situation + entirely and require users to pass function handles rather than + function names. - ** The fminunc function has changed defaults for Matlab compatibility. - This *may* result in existing code producing different results. +- Using `clear` with no arguments now removes only local variables + from the current workspace. Global variables will no longer be + visible, but they continue to exist in the global workspace and + possibly other workspaces such as the base workspace. - Option | New Default | Old Default - ------------------------------------------------ - FinDiffType | "forward" | "central" - MaxFunEvals | 100*length(x0) | Inf - TolX | 1e-6 | 1e-7 - TolFun | 1e-6 | 1e-7 + +#### Nonlinear Equations + +Several default solver options have been changed to be Matlab compatible. +This *may* result in existing code producing different results. - ** Using "clear" with no arguments now removes only local variables - from the current workspace. Global variables will no longer be - visible, but they continue to exist in the global workspace and - possibly other workspaces such as the base workspace. - This change was made for Matlab compatibility. +- `fsolve` - ** The Octave plotting system now supports high resolution screens, - i.e, those with greater than 96 DPI which are referred to as - HiDPI/Retina monitors. + Option | New Default | Old Default + ---------------|------------------|------------- + `FinDiffType` | `"forward"` | `"central"` + `MaxFunEvals` | `100*length(x0)` | `Inf` + `TolFun` | `1e-6` | `1e-7` + `TolX` | `1e-6` | `1e-7` + `Updating` | `"off"` | `"on"` - ** Figure graphic objects have a new property "Number" which is - read-only and will return the handle (number) of the figure. - However, if the property "IntegerHandle" has been set to "off" then - the property will return an empty matrix ([]). +- `fminsearch` - ** Patch and surface graphic objects now use the "FaceNormals" property - for flat lighting. + Option | New Default | Old Default + ---------|-------------|------------ + `TolFun` | `1e-7` | `1e-4` + +- `fminbnd` - ** "FaceNormals" and "VertexNormals" for patch and surface graphic - objects are now calculated only when necessary to improve graphics - performance. In order for any normals to be calculated the - "FaceLighting" property must be set to "flat" (FaceNormals) or - "gouraud" (VertexNormals), AND a light object must be present in the - axes. + Option | New Default | Old Default + ---------------|-------------|------------ + `MaxFunEvals` | `500` | `Inf` + `MaxIter` | `500` | `Inf` + `TolX` | `1e-4` | `1e-8` - ** The "Margin" property of text() objects has a new default of 3 - rather than 2. This change was made for Matlab compatibility. +- `fminunc` - ** Printing to raster formats (bitmaps like PNG or JPEG) now uses an - OpenGL-based method by default. The print options "-opengl" - (raster) and "-painters" (vector) have been added ("qt" toolkit - only). The figure property "renderer" specifies which renderer to - use. When the property "renderermode" is "auto" Octave will select - -opengl for a raster output format and -painters for a vector output - format. + Option | New Default | Old Default + ---------------|------------------|------------ + `FinDiffType` | `"forward"` | `"central"` + `MaxFunEvals` | `100*length(x0)` | `Inf` + `TolX` | `1e-6` | `1e-7` + `TolFun` | `1e-6` | `1e-7` - ** A new print option "-RGBImage" has been added which captures the - pixels of a figure as an image. This is similar to screen capture - tools, except that print formatting options can be used to, for - example, change the resolution or display the image in black and - white. + +#### Graphic objects + +- Figure graphic objects have a new property `"Number"` which is + read-only and will return the handle (number) of the figure. + However, if the property `"IntegerHandle"` has been set to `"off"` + then the property will return an empty matrix `[]`. - ** Two new print options for page-based formats (PDF, PostScript) have - been added. The "-fillpage" option will stretch the plot to occupy - the entire page with 0.25 inch margins all around. The "-bestfit" - option will expand the plot to take up as much room as possible on - the page without distorting the original aspect ratio of the plot. +- Patch and surface graphic objects now use the `"FaceNormals"` property + for flat lighting. - ** Printing using the -dtiff output device will now create compressed - images using LZW compression. This change was made for Matlab - compatibility. To produce uncompressed images use the -dtiffn - device. +- `"FaceNormals"` and `"VertexNormals"` for patch and surface graphic + objects are now calculated only when necessary to improve graphics + performance. In order for any normals to be calculated the + `"FaceLighting"` property must be set to `"flat"` (FaceNormals) or + `"gouraud"` (VertexNormals), **and** a light object must be present + in the axes. - ** A new printing device is available, -ddumb, which produces ASCII art - for plots. This device is only available with the gnuplot toolkit. - - ** Specifying legend position with a numeric argument is deprecated and - will be removed in Octave 7.0. Use a string argument instead. +- The `"Margin"` property of `text`-objects has a new default of `3` + rather than `2`. - ** It is now possible to use files and folders containing Unicode - characters in Windows. - - ** The environment variable used by mkoctfile for linker flags is now - LDFLAGS rather than LFLAGS. LFLAGS is deprecated, and a warning - is emitted if is used, but it will continue to work until eventual - removal in Octave 7.0. +- Printing to raster formats (bitmaps like PNG or JPEG) now uses an + OpenGL-based method by default. The print options `"-opengl"` + (raster) and `"-painters"` (vector) have been added ("qt" toolkit + only). The figure property `"renderer"` specifies which renderer to + use. When the property `"renderermode"` is `"auto"` Octave will select + `"-opengl"` for a raster output format and `"-painters"` for a vector + output format. - ** The GUI requires Qt libraries. The minimum Qt4 version supported is - Qt4.8. Qt5 of any version is preferred. +- A new print option `"-RGBImage"` has been added which captures the + pixels of a figure as an image. This is similar to screen capture + tools, except that print formatting options can be used to, for + example, change the resolution or display the image in black and + white. - ** The FFTW library is now required to perform FFT calculations. - The FFTPACK sources have been removed from Octave. +- Two new print options for page-based formats (PDF, PostScript) have + been added. The `"-fillpage"` option will stretch the plot to occupy + the entire page with 0.25 inch margins all around. The `"-bestfit"` + option will expand the plot to take up as much room as possible on + the page without distorting the original aspect ratio of the plot. - ** The OSMesa library is no longer used. To print invisible figures - when using OpenGL graphics, the Qt QOFFSCREENSURFACE feature must be - available and you must use the qt graphics toolkit. +- Printing using the `"-dtiff"` output device will now create compressed + images using LZW compression. To produce uncompressed images use the + `"-dtiffn"` device. + + +### Legacy functions - ** The str2func function no longer accepts a second "global" argument. - This argument was typically used to allow functions that accept - function names as arguments to avoid conflicts with subfunctions or - nested functions. Instead, it's best to avoid this situation - entirely and require users to pass function handles rather than - function names. +The following functions have been declared legacy functions which +means they are obsolete and should not be used in any new code. +Unlike deprecated functions, however, their removal from Octave has +not yet been scheduled. - ** The path handling functions no longer perform variable or brace - expansion on path elements and Octave's load-path is no longer - subject to these expansions. + Function | Replacement + -----------------------|------------------ + `findstr` | `strfind` + `flipdim` | `flip` + `isdir` | `isfolder` or `dir_in_loadpath` + `isequalwithequalnans` | `isequaln` + `isstr` | `ischar` + `setstr` | `char` + `strmatch` | `strncmp` or `strcmp` + `strread` | `textscan` + `textread` | `textscan` - ** New functions added in 5: + +### Deprecated functions and properties - clearvars - isfile - isfolder - matlab.lang.makeUniqueStrings - matlab.lang.makeValidName - movegui - movfun - movie - movmad - movmax - movmean - movmedian - movmin - movprod - movslice - movstd - movsum - movvar - openfig - ordeig - savefig - uitable +The following functions and graphics properties have been deprecated +in Octave 5 and will be removed from Octave 7 (or whatever version +is the second major release after 5): + +- Functions - ** Legacy functions. + Function | Replacement + -------------------------|------------------- + `output_max_field_width` | `output_precision` + `is_keyword` | `iskeyword` + +- Graphics properties + + Object | Property | Value + -----------------|---------------|------------ + `text` | `fontangle` | `"oblique"` + `uibuttongroup` | `fontangle` | `"oblique"` + `uicontrol` | `fontangle` | `"oblique"` + `uipanel` | `fontangle` | `"oblique"` + `uitable` | `fontangle` | `"oblique"` - The following functions have been declared legacy functions which - means they are obsolete and should not be used in any new code. - Unlike deprecated functions, however, their removal from Octave has - not yet been scheduled. +- Specifying `legend` position with a numeric argument is deprecated. + Use a string argument instead. + +- The environment variable used by `mkoctfile` for linker flags is now + `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning + is emitted if is used, but it will continue to work. + + +### Removed functions and properties + +The following functions and properties were deprecated in Octave 4.2 +and have been removed from Octave 5. - Function | Replacement - ---------------------|------------------ - findstr | strfind - flipdim | flip - isdir | isfolder or dir_in_loadpath - isequalwithequalnans | isequaln - isstr | ischar - setstr | char - strmatch | strncmp or strcmp - strread | textscan - textread | textscan +- Functions - ** Deprecated functions. - - The following functions have been deprecated in Octave 5 and will - be removed from Octave 7 (or whatever version is the second major - release after 5): + Function | Replacement + -----------------------|------------------ + `bitmax` | `flintmax` + `mahalanobis` | `mahal` in Octave Forge statistics pkg + `md5sum` | `hash` + `octave_config_info` | `__octave_config_info__` + `onenormest` | `normest1` + `sleep` | `pause` + `usleep` | `pause` + `wavread` | `audioread` + `wavwrite` | `audiowrite` - Function | Replacement - -----------------------|------------------ - output_max_field_width | output_precision - - ** The following functions were deprecated in Octave 4.2 and have been - removed from Octave 5. +- Properties - Function | Replacement - ---------------------|------------------ - bitmax | flintmax - mahalanobis | mahal in Octave Forge statistics pkg - md5sum | hash - octave_config_info | __octave_config_info__ - onenormest | normest1 - sleep | pause - usleep | pause - wavread | audioread - wavwrite | audiowrite + Object | Property | Value + ------------|-------------------|--------- + `axes` | `xaxislocation` | `"zero"` + | `yaxislocation` | `"zero"` + `hggroup` | `erasemode` | + `image` | `erasemode` | + `line` | `erasemode` | + `patch` | `erasemode` | + `patch` | `normalmode` | + `surface` | `erasemode` | + `surface` | `normalmode` | + `text` | `erasemode` | - ** Deprecated graphics properties. - The following properties or allowed corresponding values have been - deprecated in Octave 5 and will be removed from Octave 7 (or - whatever version is the second major release after 5): +### Alphabetical list of new functions added in 5 - Object | Property | Value - ---------------------|-------------------------|------------------- - text | fontangle | "oblique" - uibuttongroup | fontangle | "oblique" - uicontrol | fontangle | "oblique" - uipanel | fontangle | "oblique" - uitable | fontangle | "oblique" - - ** The following properties or allowed corresponding values were - deprecated in Octave 4.2 and have been removed from Octave 5: +- `clearvars` +- `isfile` +- `isfolder` +- `matlab.lang.makeUniqueStrings` +- `matlab.lang.makeValidName` +- `movegui` +- `movfun` +- `movie` +- `movmad` +- `movmax` +- `movmean` +- `movmedian` +- `movmin` +- `movprod` +- `movslice` +- `movstd` +- `movsum` +- `movvar` +- `openfig` +- `ordeig` +- `savefig` +- `uitable` - Object | Property | Value - ---------------------|-------------------------|------------------- - axes | xaxislocation | "zero" - | yaxislocation | "zero" - hggroup | erasemode | - image | erasemode | - line | erasemode | - patch | erasemode | - patch | normalmode | - surface | erasemode | - surface | normalmode | - text | erasemode | + +### Old release news - ** The C++ function is_keyword has been deprecated in favor of - iskeyword. The old function will be removed two versions after 5. - ---------------------------------------------------------- - -See NEWS.4 for old news. -
+- [Octave 4.4.x](NEWS-4.4.html) +- [Octave 4.2.x](NEWS-4.2.html) +- [Octave 4.0.x](NEWS-4.0.html) +- [Octave 3.8.x](NEWS-3.8.html) +- [Octave 3.6.x](NEWS-3.6.html) +- [Octave 3.4.x](NEWS-3.4.html) +- [Octave 3.2.x](NEWS-3.2.html) +- [Octave 3.0.x](NEWS-3.html) +- [Octave 2.x](NEWS-2.html) +- [Octave 1.x](NEWS-1.html)