# HG changeset patch # User Markus Mützel # Date 1638949355 -3600 # Node ID 0ae85844750817e34ba460e623b3a115a3179882 # Parent 6ad0187ea1754708ecc11c7798906def8d49a26c Add file extension .md to recent NEWS.x files. * etc/NEWS.5.md, etc/NEWS.6.md, etc/NEWS.7.md: Rename from NEWS.5, NEWS.6, NEWS.7. * etc/module.mk: Rename files. * Makefile.am: Adapt build rule for renamed file. diff -r 6ad0187ea175 -r 0ae858447508 Makefile.am --- a/Makefile.am Wed Dec 08 09:49:04 2021 +0100 +++ b/Makefile.am Wed Dec 08 08:42:35 2021 +0100 @@ -393,7 +393,7 @@ .gdbinit: etc/gdbinit $(AM_V_GEN)$(gdbinit-install-rule) -NEWS: etc/NEWS.$(OCTAVE_MAJOR_VERSION) +NEWS: etc/NEWS.$(OCTAVE_MAJOR_VERSION).md $(AM_V_GEN)cp $< $@ .PHONY: NEWS diff -r 6ad0187ea175 -r 0ae858447508 etc/NEWS.5 --- a/etc/NEWS.5 Wed Dec 08 09:49:04 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,443 +0,0 @@ -Summary of bugs fixed for version 5.2.0 (2020-01-31): ----------------------------------------------------- - -See: https://www.octave.org/news/release/2020/01/31/octave-5.2.0-released.html - -For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX - -### Improvements - -- Lock amd and symbfact to avoid segmentation fault with SuiteSparse (bug #57435) -- Fix segfault when calculating patch vertex normals (bug #57353) -- Fix segfault in constructing patch normals for lighting (bug #57353) -- mat2str.m: Fix for logical matrix (add `transpose`). -- improve file equality check for MS Windows (bug #55161) -- ismember.m: Fix second return argument when values are complex (bug #52437) -- findobj.m: Fix typo and correctly handle numeric properties (bug #57030) -- Correctly display integer types with format hex (bug #56966) -- Cast `winqueryreg` `REG_DWORD` types to `DWORD` (bug #56703) -- Fix numerous errors in `audiowrite` / `audioread` (bug #56889) -- print.m: Pass quoted path to `octave-svgconvert` (bug #56768) -- dir.m: Fix occasionally returning incorrect folder field (bug #55448) -- Stop segfault when calling 3-input form of `diag` with cell arrays (bug #56711) -- improve message for setting breakpoint in nonexistent function (bug #56157) -- Use framebuffer object for printing invisible Qt figures on mac (bug #55268) -- Escape backslash characters in `EPS` output (bug #56448) -- Use replacement characters to display non UTF-8 strings in figures (bug #55974) -- inputrc: Add warning about modification (bug #56079) -- documentation.cc (global_search): just return if query string is empty (bug #56388) -- Default (c)transpose for old style class arrays (bug #56323) -- Always reserve at least 1 element of storage for sparse matrices (bug #56232) -- Don't segfault at exit after reading malformed HDF5 file (bug #56149) -- Fix pause() with no arguments called on Windows (bug #55943) -- refactor minimum eigenvalue index search in `qp` (bug #56037) -- qp: fix obscure corner case when calculating `qp` caused by a typo (bug #56037) -- use `std::streampos` instead of `std::ios::streampos` (patch #9782). -- fix `pause` and `kbhit` with glibc 2.28 end-of-file state behavior (bug #55029) -- Fix return of left-handed vectors when inputs are complex (bug #56026) -- waitbar.m: Fix hang when using `createcancelbtn` property (bug #55963) -- shading.m: Fix unexpected error when multiple `hggroups` present (bug #55993) -- dec2base.m: Correctly handle zero matrix input (bug #56005) -- eliminate duplicate graphics callback object stack (bug #55908) -- Improve performance when closing figures (bug #55908) -- Reduce time to process `pkg -forge list` by 30X (bug #39479) -- Feed `fig2dev` with PDF files converted from svg (bug #55906) -- Improve error checking for `iconv_open`. -- poly.m: fix the fix for input of complex conjugate pairs (bug #53897) -- mkoctfile: use the `TMPDIR` environment variable if set (bug #55814) -- line.m: Fix creation of unwanted axes (bug #55840) -- Accept 4-input form for quiver3 (bug #55570) -- pkg.m: restore installing packages from zip archives (bug #55788) -- axis.m: Fix issues with `equal` argument (bug #55619, bug #55614, bug #55574, - bug #55514, bug #54848, bug #53724, bug #53504, bug #53336, bug #51938, bug #50356). -- ordeig.m: Do not fail on 1x1 matrices (bug #55779) - -### GUI - -- fix editors search and replace in selection (bug #56405) -- undo a complete replace all action in the editor (bug #56405) -- fix missing unlock of mutex when gui editor is not present (bug #56097) -- prevent unnamed editor tab from being closed by `rmdir` (bug #55888) -- prevent editor from closing files that are not affected by `rmdir` (bug #55823) -- fix creating keyword files for editor autocompletion (bug #55835) -- fix dock widget position when being dragged out of the main window (bug #55704) - -### Build system / Tests - -- configure: prevent overlinking when SUNDIALS is disabled (bug #55956) -- use QtCore and Qt5Gui modules instead of Qt5OpenGL (bug #55735) -- make building with Qt4 QGLWidget work again (bug #55735) -- build: adapt mk-qthelp.pl to changes in Texinfo 6.7. -- BIST should not rely on the current directory to be writable. -- bp-table.cc: Fix test. -- maint: Make old style class tests Matlab compatible. -- Add BIST tests for `unlink` (bug #56097) - -### Documentation - -- fix many spelling errors (bug #57613) -- help: improve documentation for the `startup.m` user script. -- avoid conflict with @seealso macro in Texinfo 6.6 (bug #55952) -- mk-doc-cache.pk: Also translate `@seealso` here. (bug #55952) -- __makeinfo__.m: Also translate `@seealso` here (bug #55952) -- polar.m: Document that input is expected to be in radians (bug #57052) -- gallery.m: Fix typo in docstring for poisson (bug #56267) -- Add 1024x1024 Octave logo icon (bug #55836) -- add `.editorconfig` for default file encoding and indentation. -- octave.doap: Copy localized (short) description over from appdata (bug #55279) -- org.octave.Octave.appdata.xml: Add German and French description (bug #55279) -- languages/*.ts: updated language files (bug #55772) -- quiver3.m: Fix texinfo typo in docstring from cset f7b10bd40045. -- doc: fix `.` Operator Index entry to build with Texinfo 6.7. -- doc: improve example of using global variables from oct-files. -- doc: Create en-dashes and em-dashes correctly in documentation. -- doc: expand `page_output_immediately` doc string, mention `page_screen_output`. -- doc: Clarify documentation of `history_file` (bug #57027) -- doc: Improve documentation for `get_help_text`, `get_help_text_from_file`. -- doc: Add documentation for `GNUTERM` variable used with gnuplot (bug #56906) -- doc: Improve `contour` docstring example (bug #56849) -- doc: Add example to show limitations of the given BLAS integer size. -- doc: Improve documentation of sparse functions. -- doc: Improve spelling of `bicgstab` (bug #56812) -- doc: Remove `Map` functions `keys`, `values`, `remove` from unimplemented list (bug #56718) -- doc: Add function index entry for alias `inverse` (bug #56629) -- add content rating declaration to AppStream metadata (bug #56466) -- doc: Remove stray semicolons from `pie`, `pie3` calling forms. -- doc: Redo documentation for `rats` function. -- doc: Specify `position` property for text objects is a three-element vector (bug #56303) -- doc: state that Octave can only load HDF5 files created by itself (bug #56148) -- doc: Fix names of options in `issorted` (bug #56087) -- doc: Small fixes to `mat2cell` and `polyeig` docstrings (bug #55985) -- doc: Improve example code for using `-pdflatexstandalone` (bug #55945) -- doc: Refer to "root object" rather than "root figure object". -- doc: Place cross-reference from list of graphics object properties back to object (bug #46076) -- doc: document the newline character in warning messages (bug #49158) -- doc: pkg versions can be more general than "x.y.z" (bug #55798) - - -Summary of important user-visible changes for version 5 (2019-02-23): --------------------------------------------------------------------- - -See: https://www.octave.org/NEWS-5.1.html - -### General improvements - -- 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. - -- 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` - -- 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 `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 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 - - `ri = imin + floor ((imax - imin + 1) * rand ());` - -- 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 `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 - - `range = [ intmin(class(x)), intmax(class(x)) ]` - - can in Octave 5 be simplified to `range = [ intmin(x), intmax(x) ]`. - -- 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. - -- A new printing device is available, `"-ddumb"`, which produces ASCII - art for plots. This device is only available with the gnuplot toolkit. - -- The `msgbox` function has changed in two respects: the default WindowStyle - is now `"non-modal"`, and the default interpreter for the message is now - `"tex"`. Both WindowStyle and Interpreter can be controlled by passing an - option struct argument. - -### Dependencies - -- The GUI requires Qt libraries. The minimum Qt4 version supported is - Qt4.8. Qt5 of any version is preferred. - -- 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 - -- 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 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 `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: - - `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. - -- 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. - - -#### Nonlinear Equations - -Several default solver options have been changed to be Matlab compatible. -This *may* result in existing code producing different results. - -- `fsolve` - - 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"` - -- `fminsearch` - - Option | New Default | Old Default - ---------|-------------|------------ - `TolFun` | `1e-7` | `1e-4` - -- `fminbnd` - - Option | New Default | Old Default - ---------------|-------------|------------ - `MaxFunEvals` | `500` | `Inf` - `MaxIter` | `500` | `Inf` - `TolX` | `1e-4` | `1e-8` - -- `fminunc` - - Option | New Default | Old Default - ---------------|------------------|------------ - `FinDiffType` | `"forward"` | `"central"` - `MaxFunEvals` | `100*length(x0)` | `Inf` - `TolX` | `1e-6` | `1e-7` - `TolFun` | `1e-6` | `1e-7` - - -#### 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 `[]`. - -- Patch and surface graphic objects now use the `"FaceNormals"` property - for flat lighting. - -- `"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. - -- The `"Margin"` property of `text`-objects has a new default of `3` - rather than `2`. - -- 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. - -- 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. - -- 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. - -- 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 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. - - 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` - - -### Deprecated functions and properties - -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 - - 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"` - -- 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. - -- Functions - - 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` - -- Properties - - Object | Property | Value - ------------|-------------------|--------- - `axes` | `xaxislocation` | `"zero"` - | `yaxislocation` | `"zero"` - `hggroup` | `erasemode` | - `image` | `erasemode` | - `line` | `erasemode` | - `patch` | `erasemode` | - `patch` | `normalmode` | - `surface` | `erasemode` | - `surface` | `normalmode` | - `text` | `erasemode` | - - -### Alphabetical list of new functions added in 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` - - -### Old release news - -- [Octave 4.4.x](etc/NEWS.4) -- [Octave 4.2.x](etc/NEWS.4) -- [Octave 4.0.x](etc/NEWS.4) -- [Octave 3.8.x](etc/NEWS.3) -- [Octave 3.6.x](etc/NEWS.3) -- [Octave 3.4.x](etc/NEWS.3) -- [Octave 3.2.x](etc/NEWS.3) -- [Octave 3.0.x](etc/NEWS.3) -- [Octave 2.x](etc/NEWS.2) -- [Octave 1.x](etc/NEWS.1) diff -r 6ad0187ea175 -r 0ae858447508 etc/NEWS.5.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.5.md Wed Dec 08 08:42:35 2021 +0100 @@ -0,0 +1,443 @@ +Summary of bugs fixed for version 5.2.0 (2020-01-31): +---------------------------------------------------- + +See: https://www.octave.org/news/release/2020/01/31/octave-5.2.0-released.html + +For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX + +### Improvements + +- Lock amd and symbfact to avoid segmentation fault with SuiteSparse (bug #57435) +- Fix segfault when calculating patch vertex normals (bug #57353) +- Fix segfault in constructing patch normals for lighting (bug #57353) +- mat2str.m: Fix for logical matrix (add `transpose`). +- improve file equality check for MS Windows (bug #55161) +- ismember.m: Fix second return argument when values are complex (bug #52437) +- findobj.m: Fix typo and correctly handle numeric properties (bug #57030) +- Correctly display integer types with format hex (bug #56966) +- Cast `winqueryreg` `REG_DWORD` types to `DWORD` (bug #56703) +- Fix numerous errors in `audiowrite` / `audioread` (bug #56889) +- print.m: Pass quoted path to `octave-svgconvert` (bug #56768) +- dir.m: Fix occasionally returning incorrect folder field (bug #55448) +- Stop segfault when calling 3-input form of `diag` with cell arrays (bug #56711) +- improve message for setting breakpoint in nonexistent function (bug #56157) +- Use framebuffer object for printing invisible Qt figures on mac (bug #55268) +- Escape backslash characters in `EPS` output (bug #56448) +- Use replacement characters to display non UTF-8 strings in figures (bug #55974) +- inputrc: Add warning about modification (bug #56079) +- documentation.cc (global_search): just return if query string is empty (bug #56388) +- Default (c)transpose for old style class arrays (bug #56323) +- Always reserve at least 1 element of storage for sparse matrices (bug #56232) +- Don't segfault at exit after reading malformed HDF5 file (bug #56149) +- Fix pause() with no arguments called on Windows (bug #55943) +- refactor minimum eigenvalue index search in `qp` (bug #56037) +- qp: fix obscure corner case when calculating `qp` caused by a typo (bug #56037) +- use `std::streampos` instead of `std::ios::streampos` (patch #9782). +- fix `pause` and `kbhit` with glibc 2.28 end-of-file state behavior (bug #55029) +- Fix return of left-handed vectors when inputs are complex (bug #56026) +- waitbar.m: Fix hang when using `createcancelbtn` property (bug #55963) +- shading.m: Fix unexpected error when multiple `hggroups` present (bug #55993) +- dec2base.m: Correctly handle zero matrix input (bug #56005) +- eliminate duplicate graphics callback object stack (bug #55908) +- Improve performance when closing figures (bug #55908) +- Reduce time to process `pkg -forge list` by 30X (bug #39479) +- Feed `fig2dev` with PDF files converted from svg (bug #55906) +- Improve error checking for `iconv_open`. +- poly.m: fix the fix for input of complex conjugate pairs (bug #53897) +- mkoctfile: use the `TMPDIR` environment variable if set (bug #55814) +- line.m: Fix creation of unwanted axes (bug #55840) +- Accept 4-input form for quiver3 (bug #55570) +- pkg.m: restore installing packages from zip archives (bug #55788) +- axis.m: Fix issues with `equal` argument (bug #55619, bug #55614, bug #55574, + bug #55514, bug #54848, bug #53724, bug #53504, bug #53336, bug #51938, bug #50356). +- ordeig.m: Do not fail on 1x1 matrices (bug #55779) + +### GUI + +- fix editors search and replace in selection (bug #56405) +- undo a complete replace all action in the editor (bug #56405) +- fix missing unlock of mutex when gui editor is not present (bug #56097) +- prevent unnamed editor tab from being closed by `rmdir` (bug #55888) +- prevent editor from closing files that are not affected by `rmdir` (bug #55823) +- fix creating keyword files for editor autocompletion (bug #55835) +- fix dock widget position when being dragged out of the main window (bug #55704) + +### Build system / Tests + +- configure: prevent overlinking when SUNDIALS is disabled (bug #55956) +- use QtCore and Qt5Gui modules instead of Qt5OpenGL (bug #55735) +- make building with Qt4 QGLWidget work again (bug #55735) +- build: adapt mk-qthelp.pl to changes in Texinfo 6.7. +- BIST should not rely on the current directory to be writable. +- bp-table.cc: Fix test. +- maint: Make old style class tests Matlab compatible. +- Add BIST tests for `unlink` (bug #56097) + +### Documentation + +- fix many spelling errors (bug #57613) +- help: improve documentation for the `startup.m` user script. +- avoid conflict with @seealso macro in Texinfo 6.6 (bug #55952) +- mk-doc-cache.pk: Also translate `@seealso` here. (bug #55952) +- __makeinfo__.m: Also translate `@seealso` here (bug #55952) +- polar.m: Document that input is expected to be in radians (bug #57052) +- gallery.m: Fix typo in docstring for poisson (bug #56267) +- Add 1024x1024 Octave logo icon (bug #55836) +- add `.editorconfig` for default file encoding and indentation. +- octave.doap: Copy localized (short) description over from appdata (bug #55279) +- org.octave.Octave.appdata.xml: Add German and French description (bug #55279) +- languages/*.ts: updated language files (bug #55772) +- quiver3.m: Fix texinfo typo in docstring from cset f7b10bd40045. +- doc: fix `.` Operator Index entry to build with Texinfo 6.7. +- doc: improve example of using global variables from oct-files. +- doc: Create en-dashes and em-dashes correctly in documentation. +- doc: expand `page_output_immediately` doc string, mention `page_screen_output`. +- doc: Clarify documentation of `history_file` (bug #57027) +- doc: Improve documentation for `get_help_text`, `get_help_text_from_file`. +- doc: Add documentation for `GNUTERM` variable used with gnuplot (bug #56906) +- doc: Improve `contour` docstring example (bug #56849) +- doc: Add example to show limitations of the given BLAS integer size. +- doc: Improve documentation of sparse functions. +- doc: Improve spelling of `bicgstab` (bug #56812) +- doc: Remove `Map` functions `keys`, `values`, `remove` from unimplemented list (bug #56718) +- doc: Add function index entry for alias `inverse` (bug #56629) +- add content rating declaration to AppStream metadata (bug #56466) +- doc: Remove stray semicolons from `pie`, `pie3` calling forms. +- doc: Redo documentation for `rats` function. +- doc: Specify `position` property for text objects is a three-element vector (bug #56303) +- doc: state that Octave can only load HDF5 files created by itself (bug #56148) +- doc: Fix names of options in `issorted` (bug #56087) +- doc: Small fixes to `mat2cell` and `polyeig` docstrings (bug #55985) +- doc: Improve example code for using `-pdflatexstandalone` (bug #55945) +- doc: Refer to "root object" rather than "root figure object". +- doc: Place cross-reference from list of graphics object properties back to object (bug #46076) +- doc: document the newline character in warning messages (bug #49158) +- doc: pkg versions can be more general than "x.y.z" (bug #55798) + + +Summary of important user-visible changes for version 5 (2019-02-23): +-------------------------------------------------------------------- + +See: https://www.octave.org/NEWS-5.1.html + +### General improvements + +- 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. + +- 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` + +- 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 `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 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 + + `ri = imin + floor ((imax - imin + 1) * rand ());` + +- 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 `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 + + `range = [ intmin(class(x)), intmax(class(x)) ]` + + can in Octave 5 be simplified to `range = [ intmin(x), intmax(x) ]`. + +- 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. + +- A new printing device is available, `"-ddumb"`, which produces ASCII + art for plots. This device is only available with the gnuplot toolkit. + +- The `msgbox` function has changed in two respects: the default WindowStyle + is now `"non-modal"`, and the default interpreter for the message is now + `"tex"`. Both WindowStyle and Interpreter can be controlled by passing an + option struct argument. + +### Dependencies + +- The GUI requires Qt libraries. The minimum Qt4 version supported is + Qt4.8. Qt5 of any version is preferred. + +- 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 + +- 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 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 `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: + + `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. + +- 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. + + +#### Nonlinear Equations + +Several default solver options have been changed to be Matlab compatible. +This *may* result in existing code producing different results. + +- `fsolve` + + 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"` + +- `fminsearch` + + Option | New Default | Old Default + ---------|-------------|------------ + `TolFun` | `1e-7` | `1e-4` + +- `fminbnd` + + Option | New Default | Old Default + ---------------|-------------|------------ + `MaxFunEvals` | `500` | `Inf` + `MaxIter` | `500` | `Inf` + `TolX` | `1e-4` | `1e-8` + +- `fminunc` + + Option | New Default | Old Default + ---------------|------------------|------------ + `FinDiffType` | `"forward"` | `"central"` + `MaxFunEvals` | `100*length(x0)` | `Inf` + `TolX` | `1e-6` | `1e-7` + `TolFun` | `1e-6` | `1e-7` + + +#### 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 `[]`. + +- Patch and surface graphic objects now use the `"FaceNormals"` property + for flat lighting. + +- `"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. + +- The `"Margin"` property of `text`-objects has a new default of `3` + rather than `2`. + +- 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. + +- 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. + +- 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. + +- 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 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. + + 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` + + +### Deprecated functions and properties + +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 + + 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"` + +- 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. + +- Functions + + 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` + +- Properties + + Object | Property | Value + ------------|-------------------|--------- + `axes` | `xaxislocation` | `"zero"` + | `yaxislocation` | `"zero"` + `hggroup` | `erasemode` | + `image` | `erasemode` | + `line` | `erasemode` | + `patch` | `erasemode` | + `patch` | `normalmode` | + `surface` | `erasemode` | + `surface` | `normalmode` | + `text` | `erasemode` | + + +### Alphabetical list of new functions added in 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` + + +### Old release news + +- [Octave 4.4.x](etc/NEWS.4) +- [Octave 4.2.x](etc/NEWS.4) +- [Octave 4.0.x](etc/NEWS.4) +- [Octave 3.8.x](etc/NEWS.3) +- [Octave 3.6.x](etc/NEWS.3) +- [Octave 3.4.x](etc/NEWS.3) +- [Octave 3.2.x](etc/NEWS.3) +- [Octave 3.0.x](etc/NEWS.3) +- [Octave 2.x](etc/NEWS.2) +- [Octave 1.x](etc/NEWS.1) diff -r 6ad0187ea175 -r 0ae858447508 etc/NEWS.6 --- a/etc/NEWS.6 Wed Dec 08 09:49:04 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,542 +0,0 @@ -Summary of bugs fixed for version 6.4.0 (2021-10-30) ----------------------------------------------------- - -For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX - -### Improvements and fixes - -- Reduce memory usage in BISTs for `copyobj`, `hgsave` (bug #57591). -- `hgsave.m`, `copyobj.m`: Use `'qt'` graphics toolkit in BISTs. -- `main.cc`: Use `getopt` to parse command line arguments (bug #60886). -- `main.cc`: Remove invalid case (bug #60886). -- Disable `getopt` error reporting in wrapper program (bug #60886). -- `interp1.m`: Don't interpret later numeric input as `xi` (bug #60967). -- `pkg`: Improve similar package name suggestion (bug #61067). -- Store parent name in function object when caching parents in scope (bug #61105). -- Avoid internal error and segfault with `eval` and scripts (bug #61191). -- `rmpath`: Prevent removing the current directory from the load path (bug #61216). - -### GUI - -- Fix missing interpreter event in `octave-scintilla`. -- Fix opening a file in a custom editor (bug #60990). - -### Documentation - -- Improve docstring for `disable_diagonal_matrix`, `disable_diagonal_matrix`, - and `disable_range` (patch #10089). -- `cbrt`: Clarify that function errors for non-real input. -- `dsearchn.m`: Added optional distance output description (bug #61156). -- Add Hungarian translation for project description files. -- Document fsolve output "info" -2 (bug #61310). - -### Build system - -- Correct error message for incompatible CXSparse (bug #61385). - - -Summary of bugs fixed for version 6.3.0 (2021-07-11) ----------------------------------------------------- - -For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX - -### Important notice - -- This bug fix release breaks ABI compatiblity with Octave 6.2.0. Re-build - binaries (like .oct or .mex files) when updating to this version. - -### Improvements and fixes - -- `ls-hdf5.cc`: Avoid throwing inside HDF5 function (bug #60081). -- `ls-hdf5.cc`: Handle non-zero terminated type strings (bug #60081). -- Fix occasional segfault in `symbfact` (bug #60101). -- `fsolve.m`: Fix undefined output error when using `Output` function (bug #60144). -- Fix compilation error with `iconv_t` on Solaris (bug #60162). -- build: Check for `stropts.h` (bug #60163). -- Avoid ambiguous call to `pow` (bug #60169). -- Fix context link when creating handle to nested function. -- `print.m`: Warn when figure is too large to be printed to output page (bug #60236). -- Defer clearing function vars until stack frame is deleted (bug #60137). -- Avoid memory leaks when returning handles to nested functions. -- Hold references to closure frames in anon functions if needed (bug #60237). -- `eigs`: Prevent possible segmentation fault at exit (bug #60311). -- Issue warning when gnuplot graphics toolkit is initialized. -- mpoles.m: Fix detection of pole multiplicity (bug #60384). -- Perform shutdown actions in interpreter destructor (bug #60334). -- build: Make relocation of dependencies with Octave optional (bug #60413). -- `qz.cc`: Return correct number of eigenvalues (bug #60357). -- `qz.cc`: Let test pass with LAPACK 3.9.1 and earlier versions (bug #60357). -- `pkg.m`: Use default prefixes unless otherwise set previously (bug #60472). -- `betaincinv.m`: Correctly handle small inputs (bug #60528). -- `betaincinv.m`: Correctly handle inputs very close to 1.0 (bug #60528). -- `unistd-wrappers.c`: Allocate sufficient memory for `new_argv` (bug #60535). -- Mark system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554). -- Mark compiled system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554). -- Fix error if test suite is run before Octave is installed (bug #60554). -- `lo-array-errwarn.cc`: Include `` (bug #60470). -- Use `std::size_t` and `std::ptrdiff_t` in C++ code (bug #60471). -- Use `std::size_t` in more instances (bug #60471). -- Return proper number of stack frames for `dbstack (N)` call (bug #60531). -- Avoid ambiguous match of overloaded function (bug #60531). -- `lscov.m`: Relax BIST tolerance to pass with OpenBLAS (bug #60552). -- `print`: Fix error when `"px"` word is present in a figure (bug #60641). -- `logm.m`: Fix check for real negative values in complex vector (bug #60738). -- build: Set necessary flags to allow execution on Windows Vista (bug #60746). -- Declare base_parser destructor virtual. -- `hist.m`: Improve handling and docstring for third parameter "norm" (bug #60783). -- `logm.m`: Allow tolerance in check for real negative values in complex vector (bug #60738). -- `expm.m`, `logm.m`: Use function `isdiag` to detect if input is a diagonal matrix (bug #60738). -- tests: Relax tolerance for some tests on macOS. -- `logspace.m`: Mark tests as known to fail on macOS (bug #55538). -- `hist.m`: Use deterministic test (bug #60783). -- `rgb2ind.m`: Reduce memory usage and eliminate randomness in test. -- `logm.m`: Allow larger tolerance for test on macOS. -- build: Use correct path to `octave` binary in build tree on macOS. -- build: Fix typo in folder to libraries when building `.oct` or `.mex` files. -- build: Set DL_LDFLAGS in the build rules for .oct or .mex files. -- `rgb2ind.m`: Suppress output in test. -- Improve documentation for `log2` function (bug #60817). -- `ind2sub`: Fix typo in "see also" section of docstring (bug #60842). -- `mrdivide`, `mldivide`: Document that functions might return minimum norm solutions (bug #60839). -- Fix scoping issue for handles to sibling nested functions (bug #60845). -- `ls-mat5.cc`: Avoid integer overflow in calculation of buffer size for zlib (bug #55427). -- Move top-level REPL from interpreter to evaluator. -- Avoid crash with `dbquit` when executing command in terminal from GUI (bug #60813). - -### GUI - -- Fix calling external editor (bug #60198). -- Fix missing file suffix .m when saving a new script (bug #60214). -- Do not run files that are not saved as Octave files (bug #60214). -- Fix confirm overwrite for native editor file "save as" dialogs (bug #60214). -- Fix crash when GUI tries to restore missing previous Octave dir (bug #60255). -- Fix restoring the horizontal position of docked GUI widgets (bug #59426). -- Prevent floating widgets from re-opening after restart (bug #60279). -- Avoid crash in GUI for `rmdir("")` (bug #60473). -- Fix EOL mode when saving files under new names (bug #60585). -- Fix auto indentation of switch-structure in GUI editor (bug #60649). -- Avoid crash when closing GUI with open editor tabs (bug #60500). -- `octave-qscintilla.cc` (`contextmenu_run`): Fix keyboard command handling. - -### Documentation - -- Improve Differential Equations chapter and example for lsode (bug #57508). -- Clarify usage of "Depends" keyword in package `DESCRIPTION` file (bug #60053). -- Add note that wildcard patterns for `save` are glob patterns (bug #60157). -- Change example for Delaunay triangulation to match the generating code (bug #60216). -- Document single precision issues with OpenGL graphics toolkits (bug #59418). -- Minor changes to documentation of single precision issues with OpenGL (bug #59418). -- Expand on documentation for command syntax (bug #60084). -- `isprop.m`: Document that function only works on graphics objects in Octave 6.X (bug #60295). -- Explain how to write dual-purpose executable scripts and Octave functions (bug #60291). -- Update keyword docstrings (bug #60275). -- Use Texinfo commands to improve `transpose()` docstring rendering. -- `betainc.m`, `betaincinv.m`: Correct non-TeX definition of beta incomplete integral. -- Grammarcheck documentation ahead of 6.3 release. -- Spellcheck documentation ahead of 6.3 release. - - -Summary of bugs fixed for version 6.2.0 (2021-02-19): ----------------------------------------------------- - -See: https://www.octave.org/news/release/2021/02/20/octave-6.2.0-released.html - -For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX - -### Improvements - -- `bicgstab.m`, `cgs.m`: Fix typo in `"iter_min"` variable name (bug #60071). -- Compute with `NA` correctly on MIPS architecture (bug #59830). -- Fix lookup of `"caller"` stack frame (bug #59847). -- Also wait on `main_thread` after interpreter shuts down (bug #56952). -- Fix symbol lookup issue with anonymous functions (bug #55989). -- Line buffer input in `terminal_reader` class. -- `qr`: Error for dense `A` and `B` with three output arguments (bug #58944). -- `strmatch.m`: Always return column vector for Matlab compatibility (bug #59917) -- Avoid crash when `evalin` global variables into existence in script (bug #59937) -- Avoid crash on null statement list (bug #59938). -- Fix ignored output from user function in left side of assignment (bug #59704). -- Temporarily set lvalue list to null (bug #59704). -- `fminbnd.m`: do not ignore `"OutputFcn"` (bug #59901). -- `load-path.cc`: Reduce number of times `"canonicalize_file_name"` is called (bug #59711). -- `interpn.m`: Use `size_equal` for 10X speedup in cset 067b663529bb (bug #59856). -- `interpn.m`: Fix check for scattered point coordinates (bug #59856). -- Avoid `YYUSE` in Octave parser files (see bug #59806). -- `struct2hdl.m`: Set `"units"` property early. -- `load-path.cc`: Avoid copying string for loop variable. -- `pcg.m`: Return correct `FLAG` and correct `RELRES` output (bug #59776). -- Use static keyword on regexp pattern in `file_stat` (bug #59706). -- `stat`: Improve regular expression for UNC roots on Windows (bug #59706). -- `stat`: Use `"make_absolute"` instead of `"canonicalize_file_name"` on Windows (bug #59706). -- Improve `class_simple` function handle function lookup (bug #59661). -- `hdl2struct.m`: store hidden text properties (bug #57241). -- Mark script created with commands from history as modified. -- `replem.m`: Fix operations with sparse matrices (bug #59705). -- `ode_event_handler.m`: Fix mishandling of event edge types and multiple events (bug #59709). -- Increase size of dynamic variable `new_argv` by 1 to avoid indexing out of array. -- Fix incorrect results for set functions with `"legacy"` option (bug #59708). -- `dir.m`: Return folder (not including file) in field `"folder"` (bug #59689). -- Avoid memory leak with function handles (bug #59659). -- Avoid dispatch error if method argument is a function handle (bug #59617). -- Avoid crash due to accessing first element of empty list (bug #59656). -- Don't propagate prevailing `isargout` info through `mexCallMATLAB` (bug #59597). -- Show original error when failing to create a graphics object (bug #59620). -- Fix regression with superclass lookup in classdef constructors (bug #59602). -- Allow Octave class `execution_exception` to catch `std::exception` objects (bug #59592). - -### GUI - -- Fix restoring editor session after having closed all tabs (bug #60051). -- Maybe convert TAB to SPC in GUI terminal pasted text (bug #59916). -- Make bracketed paste mode work in GUI terminal. -- Fix regression in variable editor when printing without selection. -- Avoid gui when octave is launched in non-interactive mode (bug #59628). -- `file-editor-tab.cc` (dtor): do not delete `m_edit_area` (bug #59628). -- Fix error when restoring previous main window layout (bug #59426). -- Improve default sizes of gui dock widgets. -- Clean up constructing main window layout of the gui. -- Fix focus command window after command execution (bug #59609). -- Check object size before plotting from variable editor (bug #56685). -- `documentation.cc`: Include missing header (bug #59553). - -### Build system / Tests - -- Add default value to `OCTAVE_MIPS_NAN` configure macro for cross-compiling (bug #59830). -- tests: Function name should match file name (bug #59704). -- Avoid build errors with Qt4 (bug #59813). -- eigs.m: Make tests that depend on CHOLMOD conditional. -- tests: Make tests that depend on CXSparse conditional. -- build: Use `SPARSE_XCPPFLAGS` in `CPP_FLAGS` for libcorefcn (bug #59806). -- Add test case for bug #59661. -- `hgsave.m`: Allow test to run with qt or gnuplot graphics toolkits (bug #57241). - -### Documentation - -- `embedded.cc`: Fix syntax error interpreter shutdown. -- Update Octave Project Developers copyright for the new year. -- Use the same comment style for copyright headers in .m files and shell scripts. - - -Summary of important user-visible changes for version 6.1.0 (2020-11-26): ------------------------------------------------------------------------- - -### General improvements - -- The `intersect`, `setdiff`, `setxor`, `union`, and `unique` functions - accept a new sorting option `"stable"` which will return output values - in the same order as the input, rather than in ascending order. - -- Complex RESTful web services can now be accessed by the `webread` and - `webwrite` functions alongside with the `weboptions` structure. One - major feature is the support for cookies to enable RESTful - communication with the web service. - - Additionally, the system web browser can be opened by the `web` - function. - -- The `linspace` function now produces symmetrical sequences when the - endpoints are symmetric. This is more intuitive and also compatible - with recent changes made in Matlab R2019b. - -- The underlying algorithm of the `rand` function has been changed. - For single precision outputs, the algorithm has been fixed so that it - produces values strictly in the range (0, 1). Previously, it could - occasionally generate the right endpoint value of 1 (See bug #41742). - In addition, the new implementation uses a uniform interval between - floating point values in the range (0, 1) rather than targeting a - uniform density (# of random integers / length along real number - line). - -- Numerical integration has been improved. The `quadv` function has - been re-written so that it can compute integrands of periodic - functions. At the same time, performance is better with ~3.5X fewer - function evaluations required. A bug in `quadgk` that caused complex - path integrals specified with `"Waypoints"` to occasionally be - calculated in the opposite direction was fixed. - -- The `edit` function option `"editinplace"` now defaults to `true` and - the option `"home"` now defaults to the empty matrix `[]`. Files will - no longer be copied to the user's HOME directory for editing. The old - behavior can be restored by setting `"editinplace"` to `false` and - `"home"` to `"~/octave"`. - -- The `format` command supports two new options: `uppercase` and - `lowercase` (default). With the default, print a lowercase 'e' for - the exponent character in scientific notation and lowercase 'a-f' for - the hex digits representing 10-15. With `uppercase`, print 'E' and - 'A-F' instead. The previous uppercase formats, `E` and `G`, no longer - control the case of the output. - - Additionally, the `format` command can be called with multiple options - for controlling the format, spacing, and case in arbitrary order. - For example: - - format long e uppercase loose - - Note, in the case of multiple competing format options the rightmost - one is used, and, in case of an error, the previous format remains - unchanged. - -- L-value references (e.g., increment (++), decrement (--), and all - in-place assignment operators (+=, -=, *=, /=, etc.)) are no longer - allowed in anonymous functions. - -- New warnings have been added about questionable uses of the colon ':' - range operator. Each has a new warning ID so that it can be disabled - if desired. - - > `Octave:colon-complex-argument` : when any arg is complex - > `Octave:colon-nonscalar-argument` : when any arg is non-scalar - -- The `regexp` and related functions now correctly handle and *require* - strings in UTF-8 encoding. As with any other function that requires - strings to be encoded in Octave's native encoding, you can use - `native2unicode` to convert from your preferred locale. For example, - the copyright symbol in UTF-8 is `native2unicode (169, "latin1")`. - -- The startup file `octaverc` can now be located in the platform - dependent location for user local configuration files (e.g., - ${XDG_CONFIG_HOME}/octave/octaverc on Unix-like operating systems or - %APPDATA%\octave\octaverc on Windows). - -- `pkg describe` now lists dependencies and inverse dependencies - (i.e., other installed packages that depend on the package in - question). - -- `pkg test` now tests all functions in a package. - -- When unloading a package, `pkg` now checks if any remaining loaded - packages depend on the one to be removed. If this is the case `pkg` - aborts with an explanatory error message. This behavior can be - overridden with the `-nodeps` option. - -- The command - - dbstop in CLASS at METHOD - - now works to set breakpoints in classdef constructors and methods. - -#### Graphics backend - -- The use of Qt4 for graphics and the GUI is deprecated in Octave - version 6 and no further bug fixes will be made. Qt4 support will be - removed completely in Octave version 7. - -- The `legend` function has been entirely rewritten. This fixes a - number of historical bugs, and also implements new properties such as - `"AutoUpdate"` and `"NumColumns"`. The gnuplot toolkit---which is no - longer actively maintained---still uses the old legend function. - -- The `axis` function was updated which resolved 10 bugs affecting - axes to which `"equal"` had been applied. - -- Graphic primitives now accept a color property value of `"none"` - which is useful when a particular primitive needs to be hidden - (for example, the Y-axis of an axes object with `"ycolor" = "none"`) - without hiding the entire primitive `"visibility" = "off"`. - -- A new property `"FontSmoothing"` has been added to text and axes - objects that controls whether anti-aliasing is used during the - rendering of characters. The default is `"on"` which produces smooth, - more visually appealing text. - -- The figure property `"windowscrollwheelfcn"`is now implemented. - This makes it possible to provide a callback function to be executed - when users manipulate the mouse wheel on a given figure. - -- The figure properties `"pointer"`, `"pointershapecdata"`, and - `"pointershapehotspot"` are now implemented. This makes it possible - to change the shape of the cursor (pointer in Matlab-speak) displayed - in a plot window. - -- The figure property `"paperpositionmode"` now has the default `"auto"` - rather than `"manual"`. This change is more intuitive and is - Matlab compatible. - -- The appearance of patterned lines `"LineStyle" = ":"|"--"|"-."` has - been improved for small widths (`"LineWidth"` less than 1.5 pixels) - which is a common scenario. - -- Printing to EPS files now uses a tight bounding box (`"-tight"` - argument to print) by default. This makes more sense for EPS - files which are normally embedded within other documents, and is - Matlab compatible. If necessary use the `"-loose"` option to - reproduce figures as they appeared in previous versions of Octave. - -- The following print devices are no longer officially supported: cdr, - corel, aifm, ill, cgm, hpgl, mf and dxf. A warning will be thrown - when using those devices, and the code for supporting those formats - will eventually be removed from a future version of Octave. - -- The placement of text subscripts and superscripts has been - re-engineered and now produces visually attractive results similar to - Latex. - -### Matlab compatibility - -- The function `unique` now returns column index vectors for the second - and third outputs. When duplicate values are present, the default - index to return is now the `"first"` occurrence. The previous Octave - behavior, or Matlab behavior from releases prior to R2012b, can be - obtained by using the `"legacy"` flag. - -- The function `setdiff` with the `"rows"` argument now returns Matlab - compatible results. The previous Octave behavior, or Matlab behavior - from releases prior to R2012b, can be obtained by using the `"legacy"` - flag. - -- The functions `intersect`, `setxor`, and `union` now accept a - `"legacy"` flag which changes the index values (second and third - outputs) as well as the orientation of all outputs to match Matlab - releases prior to R2012b. - -- The function `streamtube` is Matlab compatible and plots tubes along - streamlines which are scaled by the vector field divergence. The - Octave-only extension `ostreamtube` can be used to visualize the flow - expansion and contraction of the vector field due to the local - crossflow divergence. - -- The interpreter now supports handles to nested functions. - -- The graphics properties `"LineWidth"` and `"MarkerSize"` are now - measured in points, *not* pixels. Compared to previous versions - of Octave, some lines and markers will appear 4/3 larger. - -- The meta.class property "SuperClassList" has been renamed - "Superclasslist" for Matlab compatibility. The original name will - exist as an alias until Octave version 8.1. - -- Inline functions created by the function `inline` are now of type - "inline" when interrogated with the `class` function. In previous - versions of Octave, the class returned was "function_handle". This - change is Matlab compatible. Inline functions are deprecated in - both Matlab and Octave and support may eventually be removed. - Anonymous functions can be used to replace all instances of inline - functions. - -- The function `javaaddpath` now prepends new directories to the - existing dynamic classpath by default. To append them instead, use - the new `"-end"` argument. Multiple directories may now be specified - in a cell array of strings. - -- An undocumented function `gui_mainfcn` has been added, for compatibility - with figures created with Matlab's GUIDE. - -- Several validator functions of type `mustBe*` have been added. See - the list of new functions below. - -### Alphabetical list of new functions added in Octave 6 - -* `auto_repeat_debug_command` -* `commandhistory` -* `commandwindow` -* `filebrowser` -* `is_same_file` -* `lightangle` -* `mustBeFinite` -* `mustBeGreaterThan` -* `mustBeGreaterThanOrEqual` -* `mustBeInteger` -* `mustBeLessThan` -* `mustBeLessThanOrEqual` -* `mustBeMember` -* `mustBeNegative` -* `mustBeNonempty` -* `mustBeNonNan` -* `mustBeNonnegative` -* `mustBeNonpositive` -* `mustBeNonsparse` -* `mustBeNonzero` -* `mustBeNumeric` -* `mustBeNumericOrLogical` -* `mustBePositive` -* `mustBeReal` -* `namedargs2cell` -* `newline` -* `ode23s` -* `ostreamtube` -* `rescale` -* `rotx` -* `roty` -* `rotz` -* `stream2` -* `stream3` -* `streamline` -* `streamtube` -* `uisetfont` -* `verLessThan` -* `web` -* `weboptions` -* `webread` -* `webwrite` -* `workspace` - - -### Deprecated functions and properties - -The following functions and properties have been deprecated in Octave 6 -and will be removed from Octave 8 (or whatever version is the second -major release after 6): - -- Functions - - Function | Replacement - -----------------------|------------------ - `runtests` | `oruntests` - -- Properties - - Object | Property | Value - -----------------|---------------|------------ - | | - -- The environment variable used by `mkoctfile` for linker flags is now - `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning - is emitted if it is used, but it will continue to work. - - -### Removed functions and properties - -The following functions and properties were deprecated in Octave 4.4 -and have been removed from Octave 6. - -- Functions - - Function | Replacement - ---------------------|------------------ - `chop` | `sprintf` for visual results - `desktop` | `isguirunning` - `tmpnam` | `tempname` - `toascii` | `double` - `java2mat` | `__java2mat__` - -- Properties - - Object | Property | Value - ---------------------|---------------------------|----------------------- - `annotation` | `edgecolor ("rectangle")` | - `axes` | `drawmode` | - `figure` | `doublebuffer` | - | `mincolormap` | - | `wvisual` | - | `wvisualmode` | - | `xdisplay` | - | `xvisual` | - | `xvisualmode` | - `line` | `interpreter` | - `patch` | `interpreter` | - `surface` | `interpreter` | - `text` | `fontweight` | `"demi"` and `"light"` - `uibuttongroup` | `fontweight` | `"demi"` and `"light"` - `uicontrol` | `fontweight` | `"demi"` and `"light"` - `uipanel` | `fontweight` | `"demi"` and `"light"` - `uitable` | `fontweight` | `"demi"` and `"light"` - - -### Old release news - -- [Octave 5.x](etc/NEWS.5) -- [Octave 4.x](etc/NEWS.4) -- [Octave 3.x](etc/NEWS.3) -- [Octave 2.x](etc/NEWS.2) -- [Octave 1.x](etc/NEWS.1) diff -r 6ad0187ea175 -r 0ae858447508 etc/NEWS.6.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.6.md Wed Dec 08 08:42:35 2021 +0100 @@ -0,0 +1,542 @@ +Summary of bugs fixed for version 6.4.0 (2021-10-30) +---------------------------------------------------- + +For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX + +### Improvements and fixes + +- Reduce memory usage in BISTs for `copyobj`, `hgsave` (bug #57591). +- `hgsave.m`, `copyobj.m`: Use `'qt'` graphics toolkit in BISTs. +- `main.cc`: Use `getopt` to parse command line arguments (bug #60886). +- `main.cc`: Remove invalid case (bug #60886). +- Disable `getopt` error reporting in wrapper program (bug #60886). +- `interp1.m`: Don't interpret later numeric input as `xi` (bug #60967). +- `pkg`: Improve similar package name suggestion (bug #61067). +- Store parent name in function object when caching parents in scope (bug #61105). +- Avoid internal error and segfault with `eval` and scripts (bug #61191). +- `rmpath`: Prevent removing the current directory from the load path (bug #61216). + +### GUI + +- Fix missing interpreter event in `octave-scintilla`. +- Fix opening a file in a custom editor (bug #60990). + +### Documentation + +- Improve docstring for `disable_diagonal_matrix`, `disable_diagonal_matrix`, + and `disable_range` (patch #10089). +- `cbrt`: Clarify that function errors for non-real input. +- `dsearchn.m`: Added optional distance output description (bug #61156). +- Add Hungarian translation for project description files. +- Document fsolve output "info" -2 (bug #61310). + +### Build system + +- Correct error message for incompatible CXSparse (bug #61385). + + +Summary of bugs fixed for version 6.3.0 (2021-07-11) +---------------------------------------------------- + +For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX + +### Important notice + +- This bug fix release breaks ABI compatiblity with Octave 6.2.0. Re-build + binaries (like .oct or .mex files) when updating to this version. + +### Improvements and fixes + +- `ls-hdf5.cc`: Avoid throwing inside HDF5 function (bug #60081). +- `ls-hdf5.cc`: Handle non-zero terminated type strings (bug #60081). +- Fix occasional segfault in `symbfact` (bug #60101). +- `fsolve.m`: Fix undefined output error when using `Output` function (bug #60144). +- Fix compilation error with `iconv_t` on Solaris (bug #60162). +- build: Check for `stropts.h` (bug #60163). +- Avoid ambiguous call to `pow` (bug #60169). +- Fix context link when creating handle to nested function. +- `print.m`: Warn when figure is too large to be printed to output page (bug #60236). +- Defer clearing function vars until stack frame is deleted (bug #60137). +- Avoid memory leaks when returning handles to nested functions. +- Hold references to closure frames in anon functions if needed (bug #60237). +- `eigs`: Prevent possible segmentation fault at exit (bug #60311). +- Issue warning when gnuplot graphics toolkit is initialized. +- mpoles.m: Fix detection of pole multiplicity (bug #60384). +- Perform shutdown actions in interpreter destructor (bug #60334). +- build: Make relocation of dependencies with Octave optional (bug #60413). +- `qz.cc`: Return correct number of eigenvalues (bug #60357). +- `qz.cc`: Let test pass with LAPACK 3.9.1 and earlier versions (bug #60357). +- `pkg.m`: Use default prefixes unless otherwise set previously (bug #60472). +- `betaincinv.m`: Correctly handle small inputs (bug #60528). +- `betaincinv.m`: Correctly handle inputs very close to 1.0 (bug #60528). +- `unistd-wrappers.c`: Allocate sufficient memory for `new_argv` (bug #60535). +- Mark system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554). +- Mark compiled system functions correctly if `OCTAVE_HOME` is non-canonical (bug #60554). +- Fix error if test suite is run before Octave is installed (bug #60554). +- `lo-array-errwarn.cc`: Include `` (bug #60470). +- Use `std::size_t` and `std::ptrdiff_t` in C++ code (bug #60471). +- Use `std::size_t` in more instances (bug #60471). +- Return proper number of stack frames for `dbstack (N)` call (bug #60531). +- Avoid ambiguous match of overloaded function (bug #60531). +- `lscov.m`: Relax BIST tolerance to pass with OpenBLAS (bug #60552). +- `print`: Fix error when `"px"` word is present in a figure (bug #60641). +- `logm.m`: Fix check for real negative values in complex vector (bug #60738). +- build: Set necessary flags to allow execution on Windows Vista (bug #60746). +- Declare base_parser destructor virtual. +- `hist.m`: Improve handling and docstring for third parameter "norm" (bug #60783). +- `logm.m`: Allow tolerance in check for real negative values in complex vector (bug #60738). +- `expm.m`, `logm.m`: Use function `isdiag` to detect if input is a diagonal matrix (bug #60738). +- tests: Relax tolerance for some tests on macOS. +- `logspace.m`: Mark tests as known to fail on macOS (bug #55538). +- `hist.m`: Use deterministic test (bug #60783). +- `rgb2ind.m`: Reduce memory usage and eliminate randomness in test. +- `logm.m`: Allow larger tolerance for test on macOS. +- build: Use correct path to `octave` binary in build tree on macOS. +- build: Fix typo in folder to libraries when building `.oct` or `.mex` files. +- build: Set DL_LDFLAGS in the build rules for .oct or .mex files. +- `rgb2ind.m`: Suppress output in test. +- Improve documentation for `log2` function (bug #60817). +- `ind2sub`: Fix typo in "see also" section of docstring (bug #60842). +- `mrdivide`, `mldivide`: Document that functions might return minimum norm solutions (bug #60839). +- Fix scoping issue for handles to sibling nested functions (bug #60845). +- `ls-mat5.cc`: Avoid integer overflow in calculation of buffer size for zlib (bug #55427). +- Move top-level REPL from interpreter to evaluator. +- Avoid crash with `dbquit` when executing command in terminal from GUI (bug #60813). + +### GUI + +- Fix calling external editor (bug #60198). +- Fix missing file suffix .m when saving a new script (bug #60214). +- Do not run files that are not saved as Octave files (bug #60214). +- Fix confirm overwrite for native editor file "save as" dialogs (bug #60214). +- Fix crash when GUI tries to restore missing previous Octave dir (bug #60255). +- Fix restoring the horizontal position of docked GUI widgets (bug #59426). +- Prevent floating widgets from re-opening after restart (bug #60279). +- Avoid crash in GUI for `rmdir("")` (bug #60473). +- Fix EOL mode when saving files under new names (bug #60585). +- Fix auto indentation of switch-structure in GUI editor (bug #60649). +- Avoid crash when closing GUI with open editor tabs (bug #60500). +- `octave-qscintilla.cc` (`contextmenu_run`): Fix keyboard command handling. + +### Documentation + +- Improve Differential Equations chapter and example for lsode (bug #57508). +- Clarify usage of "Depends" keyword in package `DESCRIPTION` file (bug #60053). +- Add note that wildcard patterns for `save` are glob patterns (bug #60157). +- Change example for Delaunay triangulation to match the generating code (bug #60216). +- Document single precision issues with OpenGL graphics toolkits (bug #59418). +- Minor changes to documentation of single precision issues with OpenGL (bug #59418). +- Expand on documentation for command syntax (bug #60084). +- `isprop.m`: Document that function only works on graphics objects in Octave 6.X (bug #60295). +- Explain how to write dual-purpose executable scripts and Octave functions (bug #60291). +- Update keyword docstrings (bug #60275). +- Use Texinfo commands to improve `transpose()` docstring rendering. +- `betainc.m`, `betaincinv.m`: Correct non-TeX definition of beta incomplete integral. +- Grammarcheck documentation ahead of 6.3 release. +- Spellcheck documentation ahead of 6.3 release. + + +Summary of bugs fixed for version 6.2.0 (2021-02-19): +---------------------------------------------------- + +See: https://www.octave.org/news/release/2021/02/20/octave-6.2.0-released.html + +For (bug #XXXXX) see https://savannah.gnu.org/bugs/?XXXXX + +### Improvements + +- `bicgstab.m`, `cgs.m`: Fix typo in `"iter_min"` variable name (bug #60071). +- Compute with `NA` correctly on MIPS architecture (bug #59830). +- Fix lookup of `"caller"` stack frame (bug #59847). +- Also wait on `main_thread` after interpreter shuts down (bug #56952). +- Fix symbol lookup issue with anonymous functions (bug #55989). +- Line buffer input in `terminal_reader` class. +- `qr`: Error for dense `A` and `B` with three output arguments (bug #58944). +- `strmatch.m`: Always return column vector for Matlab compatibility (bug #59917) +- Avoid crash when `evalin` global variables into existence in script (bug #59937) +- Avoid crash on null statement list (bug #59938). +- Fix ignored output from user function in left side of assignment (bug #59704). +- Temporarily set lvalue list to null (bug #59704). +- `fminbnd.m`: do not ignore `"OutputFcn"` (bug #59901). +- `load-path.cc`: Reduce number of times `"canonicalize_file_name"` is called (bug #59711). +- `interpn.m`: Use `size_equal` for 10X speedup in cset 067b663529bb (bug #59856). +- `interpn.m`: Fix check for scattered point coordinates (bug #59856). +- Avoid `YYUSE` in Octave parser files (see bug #59806). +- `struct2hdl.m`: Set `"units"` property early. +- `load-path.cc`: Avoid copying string for loop variable. +- `pcg.m`: Return correct `FLAG` and correct `RELRES` output (bug #59776). +- Use static keyword on regexp pattern in `file_stat` (bug #59706). +- `stat`: Improve regular expression for UNC roots on Windows (bug #59706). +- `stat`: Use `"make_absolute"` instead of `"canonicalize_file_name"` on Windows (bug #59706). +- Improve `class_simple` function handle function lookup (bug #59661). +- `hdl2struct.m`: store hidden text properties (bug #57241). +- Mark script created with commands from history as modified. +- `replem.m`: Fix operations with sparse matrices (bug #59705). +- `ode_event_handler.m`: Fix mishandling of event edge types and multiple events (bug #59709). +- Increase size of dynamic variable `new_argv` by 1 to avoid indexing out of array. +- Fix incorrect results for set functions with `"legacy"` option (bug #59708). +- `dir.m`: Return folder (not including file) in field `"folder"` (bug #59689). +- Avoid memory leak with function handles (bug #59659). +- Avoid dispatch error if method argument is a function handle (bug #59617). +- Avoid crash due to accessing first element of empty list (bug #59656). +- Don't propagate prevailing `isargout` info through `mexCallMATLAB` (bug #59597). +- Show original error when failing to create a graphics object (bug #59620). +- Fix regression with superclass lookup in classdef constructors (bug #59602). +- Allow Octave class `execution_exception` to catch `std::exception` objects (bug #59592). + +### GUI + +- Fix restoring editor session after having closed all tabs (bug #60051). +- Maybe convert TAB to SPC in GUI terminal pasted text (bug #59916). +- Make bracketed paste mode work in GUI terminal. +- Fix regression in variable editor when printing without selection. +- Avoid gui when octave is launched in non-interactive mode (bug #59628). +- `file-editor-tab.cc` (dtor): do not delete `m_edit_area` (bug #59628). +- Fix error when restoring previous main window layout (bug #59426). +- Improve default sizes of gui dock widgets. +- Clean up constructing main window layout of the gui. +- Fix focus command window after command execution (bug #59609). +- Check object size before plotting from variable editor (bug #56685). +- `documentation.cc`: Include missing header (bug #59553). + +### Build system / Tests + +- Add default value to `OCTAVE_MIPS_NAN` configure macro for cross-compiling (bug #59830). +- tests: Function name should match file name (bug #59704). +- Avoid build errors with Qt4 (bug #59813). +- eigs.m: Make tests that depend on CHOLMOD conditional. +- tests: Make tests that depend on CXSparse conditional. +- build: Use `SPARSE_XCPPFLAGS` in `CPP_FLAGS` for libcorefcn (bug #59806). +- Add test case for bug #59661. +- `hgsave.m`: Allow test to run with qt or gnuplot graphics toolkits (bug #57241). + +### Documentation + +- `embedded.cc`: Fix syntax error interpreter shutdown. +- Update Octave Project Developers copyright for the new year. +- Use the same comment style for copyright headers in .m files and shell scripts. + + +Summary of important user-visible changes for version 6.1.0 (2020-11-26): +------------------------------------------------------------------------ + +### General improvements + +- The `intersect`, `setdiff`, `setxor`, `union`, and `unique` functions + accept a new sorting option `"stable"` which will return output values + in the same order as the input, rather than in ascending order. + +- Complex RESTful web services can now be accessed by the `webread` and + `webwrite` functions alongside with the `weboptions` structure. One + major feature is the support for cookies to enable RESTful + communication with the web service. + + Additionally, the system web browser can be opened by the `web` + function. + +- The `linspace` function now produces symmetrical sequences when the + endpoints are symmetric. This is more intuitive and also compatible + with recent changes made in Matlab R2019b. + +- The underlying algorithm of the `rand` function has been changed. + For single precision outputs, the algorithm has been fixed so that it + produces values strictly in the range (0, 1). Previously, it could + occasionally generate the right endpoint value of 1 (See bug #41742). + In addition, the new implementation uses a uniform interval between + floating point values in the range (0, 1) rather than targeting a + uniform density (# of random integers / length along real number + line). + +- Numerical integration has been improved. The `quadv` function has + been re-written so that it can compute integrands of periodic + functions. At the same time, performance is better with ~3.5X fewer + function evaluations required. A bug in `quadgk` that caused complex + path integrals specified with `"Waypoints"` to occasionally be + calculated in the opposite direction was fixed. + +- The `edit` function option `"editinplace"` now defaults to `true` and + the option `"home"` now defaults to the empty matrix `[]`. Files will + no longer be copied to the user's HOME directory for editing. The old + behavior can be restored by setting `"editinplace"` to `false` and + `"home"` to `"~/octave"`. + +- The `format` command supports two new options: `uppercase` and + `lowercase` (default). With the default, print a lowercase 'e' for + the exponent character in scientific notation and lowercase 'a-f' for + the hex digits representing 10-15. With `uppercase`, print 'E' and + 'A-F' instead. The previous uppercase formats, `E` and `G`, no longer + control the case of the output. + + Additionally, the `format` command can be called with multiple options + for controlling the format, spacing, and case in arbitrary order. + For example: + + format long e uppercase loose + + Note, in the case of multiple competing format options the rightmost + one is used, and, in case of an error, the previous format remains + unchanged. + +- L-value references (e.g., increment (++), decrement (--), and all + in-place assignment operators (+=, -=, *=, /=, etc.)) are no longer + allowed in anonymous functions. + +- New warnings have been added about questionable uses of the colon ':' + range operator. Each has a new warning ID so that it can be disabled + if desired. + + > `Octave:colon-complex-argument` : when any arg is complex + > `Octave:colon-nonscalar-argument` : when any arg is non-scalar + +- The `regexp` and related functions now correctly handle and *require* + strings in UTF-8 encoding. As with any other function that requires + strings to be encoded in Octave's native encoding, you can use + `native2unicode` to convert from your preferred locale. For example, + the copyright symbol in UTF-8 is `native2unicode (169, "latin1")`. + +- The startup file `octaverc` can now be located in the platform + dependent location for user local configuration files (e.g., + ${XDG_CONFIG_HOME}/octave/octaverc on Unix-like operating systems or + %APPDATA%\octave\octaverc on Windows). + +- `pkg describe` now lists dependencies and inverse dependencies + (i.e., other installed packages that depend on the package in + question). + +- `pkg test` now tests all functions in a package. + +- When unloading a package, `pkg` now checks if any remaining loaded + packages depend on the one to be removed. If this is the case `pkg` + aborts with an explanatory error message. This behavior can be + overridden with the `-nodeps` option. + +- The command + + dbstop in CLASS at METHOD + + now works to set breakpoints in classdef constructors and methods. + +#### Graphics backend + +- The use of Qt4 for graphics and the GUI is deprecated in Octave + version 6 and no further bug fixes will be made. Qt4 support will be + removed completely in Octave version 7. + +- The `legend` function has been entirely rewritten. This fixes a + number of historical bugs, and also implements new properties such as + `"AutoUpdate"` and `"NumColumns"`. The gnuplot toolkit---which is no + longer actively maintained---still uses the old legend function. + +- The `axis` function was updated which resolved 10 bugs affecting + axes to which `"equal"` had been applied. + +- Graphic primitives now accept a color property value of `"none"` + which is useful when a particular primitive needs to be hidden + (for example, the Y-axis of an axes object with `"ycolor" = "none"`) + without hiding the entire primitive `"visibility" = "off"`. + +- A new property `"FontSmoothing"` has been added to text and axes + objects that controls whether anti-aliasing is used during the + rendering of characters. The default is `"on"` which produces smooth, + more visually appealing text. + +- The figure property `"windowscrollwheelfcn"`is now implemented. + This makes it possible to provide a callback function to be executed + when users manipulate the mouse wheel on a given figure. + +- The figure properties `"pointer"`, `"pointershapecdata"`, and + `"pointershapehotspot"` are now implemented. This makes it possible + to change the shape of the cursor (pointer in Matlab-speak) displayed + in a plot window. + +- The figure property `"paperpositionmode"` now has the default `"auto"` + rather than `"manual"`. This change is more intuitive and is + Matlab compatible. + +- The appearance of patterned lines `"LineStyle" = ":"|"--"|"-."` has + been improved for small widths (`"LineWidth"` less than 1.5 pixels) + which is a common scenario. + +- Printing to EPS files now uses a tight bounding box (`"-tight"` + argument to print) by default. This makes more sense for EPS + files which are normally embedded within other documents, and is + Matlab compatible. If necessary use the `"-loose"` option to + reproduce figures as they appeared in previous versions of Octave. + +- The following print devices are no longer officially supported: cdr, + corel, aifm, ill, cgm, hpgl, mf and dxf. A warning will be thrown + when using those devices, and the code for supporting those formats + will eventually be removed from a future version of Octave. + +- The placement of text subscripts and superscripts has been + re-engineered and now produces visually attractive results similar to + Latex. + +### Matlab compatibility + +- The function `unique` now returns column index vectors for the second + and third outputs. When duplicate values are present, the default + index to return is now the `"first"` occurrence. The previous Octave + behavior, or Matlab behavior from releases prior to R2012b, can be + obtained by using the `"legacy"` flag. + +- The function `setdiff` with the `"rows"` argument now returns Matlab + compatible results. The previous Octave behavior, or Matlab behavior + from releases prior to R2012b, can be obtained by using the `"legacy"` + flag. + +- The functions `intersect`, `setxor`, and `union` now accept a + `"legacy"` flag which changes the index values (second and third + outputs) as well as the orientation of all outputs to match Matlab + releases prior to R2012b. + +- The function `streamtube` is Matlab compatible and plots tubes along + streamlines which are scaled by the vector field divergence. The + Octave-only extension `ostreamtube` can be used to visualize the flow + expansion and contraction of the vector field due to the local + crossflow divergence. + +- The interpreter now supports handles to nested functions. + +- The graphics properties `"LineWidth"` and `"MarkerSize"` are now + measured in points, *not* pixels. Compared to previous versions + of Octave, some lines and markers will appear 4/3 larger. + +- The meta.class property "SuperClassList" has been renamed + "Superclasslist" for Matlab compatibility. The original name will + exist as an alias until Octave version 8.1. + +- Inline functions created by the function `inline` are now of type + "inline" when interrogated with the `class` function. In previous + versions of Octave, the class returned was "function_handle". This + change is Matlab compatible. Inline functions are deprecated in + both Matlab and Octave and support may eventually be removed. + Anonymous functions can be used to replace all instances of inline + functions. + +- The function `javaaddpath` now prepends new directories to the + existing dynamic classpath by default. To append them instead, use + the new `"-end"` argument. Multiple directories may now be specified + in a cell array of strings. + +- An undocumented function `gui_mainfcn` has been added, for compatibility + with figures created with Matlab's GUIDE. + +- Several validator functions of type `mustBe*` have been added. See + the list of new functions below. + +### Alphabetical list of new functions added in Octave 6 + +* `auto_repeat_debug_command` +* `commandhistory` +* `commandwindow` +* `filebrowser` +* `is_same_file` +* `lightangle` +* `mustBeFinite` +* `mustBeGreaterThan` +* `mustBeGreaterThanOrEqual` +* `mustBeInteger` +* `mustBeLessThan` +* `mustBeLessThanOrEqual` +* `mustBeMember` +* `mustBeNegative` +* `mustBeNonempty` +* `mustBeNonNan` +* `mustBeNonnegative` +* `mustBeNonpositive` +* `mustBeNonsparse` +* `mustBeNonzero` +* `mustBeNumeric` +* `mustBeNumericOrLogical` +* `mustBePositive` +* `mustBeReal` +* `namedargs2cell` +* `newline` +* `ode23s` +* `ostreamtube` +* `rescale` +* `rotx` +* `roty` +* `rotz` +* `stream2` +* `stream3` +* `streamline` +* `streamtube` +* `uisetfont` +* `verLessThan` +* `web` +* `weboptions` +* `webread` +* `webwrite` +* `workspace` + + +### Deprecated functions and properties + +The following functions and properties have been deprecated in Octave 6 +and will be removed from Octave 8 (or whatever version is the second +major release after 6): + +- Functions + + Function | Replacement + -----------------------|------------------ + `runtests` | `oruntests` + +- Properties + + Object | Property | Value + -----------------|---------------|------------ + | | + +- The environment variable used by `mkoctfile` for linker flags is now + `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning + is emitted if it is used, but it will continue to work. + + +### Removed functions and properties + +The following functions and properties were deprecated in Octave 4.4 +and have been removed from Octave 6. + +- Functions + + Function | Replacement + ---------------------|------------------ + `chop` | `sprintf` for visual results + `desktop` | `isguirunning` + `tmpnam` | `tempname` + `toascii` | `double` + `java2mat` | `__java2mat__` + +- Properties + + Object | Property | Value + ---------------------|---------------------------|----------------------- + `annotation` | `edgecolor ("rectangle")` | + `axes` | `drawmode` | + `figure` | `doublebuffer` | + | `mincolormap` | + | `wvisual` | + | `wvisualmode` | + | `xdisplay` | + | `xvisual` | + | `xvisualmode` | + `line` | `interpreter` | + `patch` | `interpreter` | + `surface` | `interpreter` | + `text` | `fontweight` | `"demi"` and `"light"` + `uibuttongroup` | `fontweight` | `"demi"` and `"light"` + `uicontrol` | `fontweight` | `"demi"` and `"light"` + `uipanel` | `fontweight` | `"demi"` and `"light"` + `uitable` | `fontweight` | `"demi"` and `"light"` + + +### Old release news + +- [Octave 5.x](etc/NEWS.5.md) +- [Octave 4.x](etc/NEWS.4) +- [Octave 3.x](etc/NEWS.3) +- [Octave 2.x](etc/NEWS.2) +- [Octave 1.x](etc/NEWS.1) diff -r 6ad0187ea175 -r 0ae858447508 etc/NEWS.7 --- a/etc/NEWS.7 Wed Dec 08 09:49:04 2021 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,409 +0,0 @@ -Summary of important user-visible changes for version 7 (yyyy-mm-dd): ----------------------------------------------------------------------- - -### General improvements - -- Many functions in Octave can be called in a command form---no -parentheses for invocation and no return argument assignment---or in a -functional form---parentheses and '=' for assignment of return values. - - **Command Form Example** - - `mkdir new_directory` - - **Function Form Example** - - `status = mkdir ("new_directory")` - - Octave now handles errors that occur in a consistent manner. If - called in command form and there is a failure, an error is thrown - and a message printed. If called in functional form, no error or - message is printed and the failure is communicated to the programmer - via the output status variable. - - The following list of functions have been modified. - - * `copyfile` - * `fcntl` - * `fileattrib` - * `kill` - * `link` - * `mkfifo` - * `movefile` - * `rename` - * `rmdir` - * `symlink` - * `unlink` - -- Calling a user-defined function with too many inputs or outputs is now -an error. The interpreter makes this check automatically. If a -function uses varargin then the check is skipped for function inputs, -and if a function uses varargout then the check is skipped for function -outputs. Input validation for functions typically begins with checking -that the number of inputs and outputs match expectations. Existing code -can be simplified by removing these checks which are now done by the -interpreter. Typically, code blocks like the following can simply be -deleted. - - ## Checking number of inputs - if (nargin > 2) - print_usage (); - endif - - ## Checking number of outputs - if (nargout > 1) - print_usage (); - endif - -- Binary and hexadecimal constants like `0b101` and `0xDEADBEEF` now -create integers (unsigned by default) with sizes determined from the -number of digits present. For example, `0xff` creates a `uint8` value -and `0xDEADBEEF` creates a `uint64` value. You may also use a suffix of -the form `u8`, `u16`, `u32`, `u64`, `s8`, `s16`, `s32`, or `s64` to -explicitly specify the data type to use (`u` or `s` to indicate unsigned -or signed and the number to indicate the integer size). - - Binary constants are limited to 64 binary digits and hexadecimal -constants are limited to 16 hexadecimal digits with no automatic -rounding or conversion to floating point values. Note that this may -cause problems in existing code. For example, an expression like -`[0x1; 0x100; 0x10000]` will be uint8 (because of the rules of -concatenating integers of different sizes) with the larger values -truncated (because of the saturation semantics of integer values). To -avoid these kinds of problems either: 1) declare the first integer to be -of the desired size such as `[0x1u32; 0x100; 0x10000]`, or 2) pad -constants in array expressions with leading zeros so that they use the -same number of digits for each value such as -`[0x00_00_01; 0x00_01_00; 0x01_00_00]`. - -- The increment and decrement operators `++` and `--` must "hug" their -corresponding variables. In previous versions of Octave, whitespaces -between these operators and the variable they affect were allowed. That -is no longer the case. - -- The `mldivide` function (i.e., the `\` operator) now uses an LU -decomposition to solve nearly singular full square matrices. This is -Matlab-compatible and yields results which more nearly minimize `norm -(A*x - b)`. Previously, Octave computed a minimum-norm solution. - -- The `factor` function has been overhauled for speed. For large -inputs > 1e14, it can be up to 10,000 times faster. - -- The `isprime` function uses a new primality testing algorithm -that is up to 50,000 times faster for inputs > 1e14. - -- The `betainc` function now calculates an exact output for the -important special cases where a or b are 1. - -- The `whos` function now displays an additional attribute 's' when -the variable is a sparse type. - -- As part of GSoC 2020, Abdallah K. Elshamy implemented the -`jsondecode` and `jsonencode` functions to read and write JSON data. - -- As part of GSoC 2021, Abdallah K. Elshamy implemented the -`jupyter_notebook` classdef class. This class supports running and -filling Jupyter Notebooks using the Octave language kernel from Octave -itself. Making the evaluation of long-running Jupyter Notebooks on a -computing server without permanent browser connection possible. - -- By default, the history file is now located at $DATA/octave/history, -where $DATA is a platform dependent location for (roaming) user data -files (e.g., ${XDG_DATA_HOME} or, if that is not set, ~/.local/share on -Unix-like operating systems or %APPDATA% on Windows). - -- For Octave on Windows OS, the minimum required version of the Windows -API is now 6.1 (Windows 7 or newer). - -- The non-re-entrant version of the QHull library "libqhull" was -deprecated upstream. Octave now (optionally) requires the re-entrant -version of that library "libqhull_r" instead. - -- Octave's libraries are now built using symbol visibility by default. -That means that less symbols are exported from these libraries. -Configure with `--disable-lib-visibility-flags` to export all symbols -(as in previous versions). - -- Octave's build system no longer appends "++" to the end of the -"magick++" library name (set with the `--with-magick=` configure flag). -The real name of the "magick++" library (including any potentially -trailing "++") needs to be set in that option now. - -- The `pkg update` command now accepts options that are passed to `pkg -install` for each updated package. Specifying @option{-local} or -@option{-global} will restrict update checks to local or global -installed packages, respectively. - -### Graphical User Interface - -- The graphical user interface is now available in Hungarian and -Turkish. - -- In debug mode, symbol values are now shown in tooltips when hovering -variables in the editor panel. - -- The "Disable global shortcuts when Command Window has focus" GUI -preference under the Shortcuts tab is now disabled by default. This -option disables keyboard shortcuts to avoid interference with readline -key strokes in the Command Window. Unlike versions prior to Octave 7, -this preference now also affects the Ctrl-C/V shortcuts for copy/paste. - -### Graphics backend - -- Support for Qt4 for both graphics and the GUI has been removed. - -- If a working LaTeX tool chain is found on the path, including `latex`, -`dvipng`, and `dvisvgm` binaries, then text strings can now be rendered -properly when using the `"latex"` value for the text objects' -`"interpreter"` property and axes objects' `"ticklabelinterpreter"`. -Type `doc "latex interpreter"` for further info. - -- The `"Marker"` property for plot objects now accepts `|` which draws -a vertical line or `_` which draws a horizontal line. - -- The `FMT` format argument for plot commands now accepts long forms for -color names which may be more understandable than the existing -one-letter codes. For example, the RGB value `[0 0 0]` can now be -specified by `"black"` in addition to `"k"`. - -- The color graphics properties, for example `"EdgeColor"` or -`"FaceColor"`, now accept HTML specifications. An HTML specification is -a string that begins with the character '#' and is followed by either 3 -or 6 hexadecimal digits. For example, magenta which is 100% red and -blue values can specified by `"#FF00FF"` or `"#F0F"`. - -- The additional property `"contextmenu"` has been added to all graphics -objects. It is equivalent to the previously used `"uicontextmenu"` -property which is hidden now. - -- `uicontrol` objects now fully implement the `"Off"` and `"Inactive"` -values of the `"Enable"` property. When the value is `"Off"`, no -interaction with the object occurs and the `uicontrol` changes color -(typically to gray) to indicate it is disabled. When the value is -`"Inactive"`, the object appears normally (no change in color), but it -is not possible to change the value of the object (such as modifying -text in an `Edit` box or clicking on a `RadioButton`). - -- The `"ListBoxTop"` property for `uicontrol` objects has been -implemented for `set` commands. - -- The `Title` property for print formats such as PDF or SVG is now set -to the title displayed on the figure window which contains the plot. - -- Additional properties have been added to the `axes` graphics object: - * `"alphamap"` (not yet implemented) - * `"alphascale"` (not yet implemented) - * `"colorscale"` (not yet implemented) - * `"fontsizemode"` (not yet implemented) - * `"innerposition"` (equivalent to `"position"`) - * `"interactions"` (not yet implemented) - * `"layout"` (not yet implemented) - * `"legend"` (not yet implemented) - * `"nextseriesindex"` (read-only, used by `scatter` - graphics objects) - * `"positionconstraint"` (replacement for `"activepositionproperty"` - which is now a hidden property. No plans for removal.) - * `"toolbar"` (not yet implemented) - * `"xaxis"` (not yet implemented) - * `"yaxis"` (not yet implemented) - * `"zaxis"` (not yet implemented) - -### Matlab compatibility - -- The function `griddata` now implements the `"v4"` Biharmonic Spline -Interpolation method. In adddition, the function now accepts 3-D inputs -by passing the data to `griddata3`. - -- Coordinate transformation functions `cart2sph`, `sph2cart`, -`cart2pol`, and `pol2cart` now accept either row or column vectors for -coordinate inputs. A single coordinate matrix with one variable per -column can still be used as function input, but a single output variable -will now contain just the first output coordinate, and will no longer -return the full output coordinate matrix. Output size matches the size -of input vectors, or in the case of an input matrix will be column -vectors with rows corresponding to the input coordinate matrix. - -- The function `dec2bin` and `dec2hex` now support negative numbers. - -- The function `factor` now supports uint64 inputs larger than -`flintmax`. - -- The function `primes` now supports char inputs. - -- The functions `quantile` and `prctile` now permit operating on -dimensions greater than `ndims (x)`. - -- The function `iqr` now uses Matlab compatible interpolation for -quantile values. The dimension input now allows a vector, "all", and -dimensions greater than `ndims (x)`. The function also handles -`Inf` and `NaN` input values in a Matlab-compatible manner. - -- The function `importdata` now produces more compatible results when -the file contains a 2-D text matrix. - -- The file functions `copyfile`, `mkdir`, `movefile`, `rmdir` now return -a logical value (true/false) rather than a numeric value (1/0). - -- `uimenu` now accepts property `"Text"` which is identical to -`"Label"`. Matlab recommends using `"Text"` in new code, although there -is no announced date for deprecating `"Label"`. - -- The functions `scatter` and `scatter3` now return a handle to a -scatter graphics object. For compatibility, they return an `hggroup` of -patch graphics objects when the `"gnuplot"` graphics toolkit is used. In -previous versions of Octave, these functions returned an `hggroup` of -patch graphics objects for all graphics toolkits. - -- The functions `bar` and `barh` now handle stacked negative bar values -in a Matlab-compatible manner. Negative values now stack below the zero -axis independently of a positive value bars in the same stack. -Previously the negative bars could overlap positive bars depending on -drawing order. - -- The functions `bar` and `barh` now use colors from the `"ColorOrder"` -axes property rather than the `"Colormap"` figure property unless one -of the histogram options (@qcode{"hist"}, @qcode{"histc"} was specified. - -- The function `saveas` now defaults to saving in Octave figure format -(.ofig) rather than PDF (.pdf). - -- A new warning ID (`"Octave:unimplemented-matlab-functionality"`) has -been added which prints a warning when Octave's parser recognizes valid -Matlab code, but for which Octave does not yet implement the -functionality. By default, this warning is enabled. - -- When Octave is started with the `--traditional` option for maximum -compatibility the `print_struct_array_contents` internal variable is set -to true. - -- The function `repelem` now produces a row vector output when the input is -a scalar. - -- The functions `var` and `std` now accept a weight vector as input and -compute the weigthed variance. Dimension input now allows a vector and -the keyword "all". - -### Alphabetical list of new functions added in Octave 7 - -* `cospi` -* `getpixelposition` -* `endsWith` -* `fill3` -* `jsondecode` -* `jsonencode` -* `jupyter_notebook` -* `listfonts` -* `matlab.net.base64decode` -* `matlab.net.base64encode` -* `memory` -* `ordqz` -* `rng` -* `sinpi` -* `startsWith` -* `streamribbon` -* `turbo` -* `uniquetol` -* `xtickangle` -* `ytickangle` -* `ztickangle` - -### Deprecated functions, properties, and operators - -The following functions and properties have been deprecated in Octave 7 -and will be removed from Octave 9 (or whatever version is the second -major release after 7): - -- Functions - - Function | Replacement - -------------------------- |---------------------------- - disable_diagonal_matrix | optimize_diagonal_matrix - disable_permutation_matrix | optimize_permutation_matrix - disable_range | optimize_range - -- Properties - - Object | Property | Value - -----------------|---------------|------------ - | | -- Operators - - Operator | Replacement | Description - ---------|-------------|------------ - ** | ^ | Matrix exponent - .** | .^ | Element-by-element exponent - .+ | + | Element-by-element exponent - .- | - | Element-by-element exponent - -- Interpreter - - * The use of `'...'` for line continuations *inside* double-quoted - strings has been deprecated. Use `'\'` for line continuations - inside strings instead. - - * The use of `'\'` as a line continuation *outside* of double-quoted - strings has been deprecated. Use `'...'` for line continuations - instead. - - * Any trailing whitespace after a `'\'` line continuation has been - deprecated. Delete unnecessary trailing whitespace. - - -The following functions were deprecated in Octave 6 and will be removed -from Octave 8 (or whatever version is the second major release after 6): - -- Functions - - Function | Replacement - -----------------------|------------------ - `runtests` | `oruntests` - -- The environment variable used by `mkoctfile` for linker flags is now - `LDFLAGS` rather than `LFLAGS`. `LFLAGS` was deprecated in Octave 6, - and a warning is now emitted if it is used, but it will continue to - work. - - -### Removed functions, properties, and features - -The following functions and properties were deprecated in Octave 5 -and have been removed from Octave 7. - -- Functions - - Function | Replacement - -------------------------|------------------ - `output_max_field_width` | `output_precision` - `is_keyword` | `iskeyword` - -- Properties - - Object | Property | Value - -----------------|---------------|------------ - `text` | `fontangle` | `"oblique"` - `uibuttongroup` | `fontangle` | `"oblique"` - `uicontrol` | `fontangle` | `"oblique"` - `uipanel` | `fontangle` | `"oblique"` - `uitable` | `fontangle` | `"oblique"` - -- The prototype JIT compiler has been removed from Octave. Since it was -first added as part of a Google Summer of Code project in 2012, no one -has ever seriously taken on further development of it and it still does -nothing significant. It is out of date with the default interpreter -that walks the parse tree. Even though we have fixed the configure -script to disable it by default, people still ask questions about how to -build it, but it doesn’t seem that they are doing that to work on it but -because they think it will make Octave code run faster (it never did, -except for some extremely simple bits of code as examples for -demonstration purposes only). The following functions related to the -JIT compiler have also been removed: `debug_jit`, `jit_enable`, -`jit_failcnt`, and `jit_startcnt`. - -### Old release news - -- [Octave 6.x](etc/NEWS.6) -- [Octave 5.x](etc/NEWS.5) -- [Octave 4.x](etc/NEWS.4) -- [Octave 3.x](etc/NEWS.3) -- [Octave 2.x](etc/NEWS.2) -- [Octave 1.x](etc/NEWS.1) diff -r 6ad0187ea175 -r 0ae858447508 etc/NEWS.7.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/NEWS.7.md Wed Dec 08 08:42:35 2021 +0100 @@ -0,0 +1,409 @@ +Summary of important user-visible changes for version 7 (yyyy-mm-dd): +---------------------------------------------------------------------- + +### General improvements + +- Many functions in Octave can be called in a command form---no +parentheses for invocation and no return argument assignment---or in a +functional form---parentheses and '=' for assignment of return values. + + **Command Form Example** + + `mkdir new_directory` + + **Function Form Example** + + `status = mkdir ("new_directory")` + + Octave now handles errors that occur in a consistent manner. If + called in command form and there is a failure, an error is thrown + and a message printed. If called in functional form, no error or + message is printed and the failure is communicated to the programmer + via the output status variable. + + The following list of functions have been modified. + + * `copyfile` + * `fcntl` + * `fileattrib` + * `kill` + * `link` + * `mkfifo` + * `movefile` + * `rename` + * `rmdir` + * `symlink` + * `unlink` + +- Calling a user-defined function with too many inputs or outputs is now +an error. The interpreter makes this check automatically. If a +function uses varargin then the check is skipped for function inputs, +and if a function uses varargout then the check is skipped for function +outputs. Input validation for functions typically begins with checking +that the number of inputs and outputs match expectations. Existing code +can be simplified by removing these checks which are now done by the +interpreter. Typically, code blocks like the following can simply be +deleted. + + ## Checking number of inputs + if (nargin > 2) + print_usage (); + endif + + ## Checking number of outputs + if (nargout > 1) + print_usage (); + endif + +- Binary and hexadecimal constants like `0b101` and `0xDEADBEEF` now +create integers (unsigned by default) with sizes determined from the +number of digits present. For example, `0xff` creates a `uint8` value +and `0xDEADBEEF` creates a `uint64` value. You may also use a suffix of +the form `u8`, `u16`, `u32`, `u64`, `s8`, `s16`, `s32`, or `s64` to +explicitly specify the data type to use (`u` or `s` to indicate unsigned +or signed and the number to indicate the integer size). + + Binary constants are limited to 64 binary digits and hexadecimal +constants are limited to 16 hexadecimal digits with no automatic +rounding or conversion to floating point values. Note that this may +cause problems in existing code. For example, an expression like +`[0x1; 0x100; 0x10000]` will be uint8 (because of the rules of +concatenating integers of different sizes) with the larger values +truncated (because of the saturation semantics of integer values). To +avoid these kinds of problems either: 1) declare the first integer to be +of the desired size such as `[0x1u32; 0x100; 0x10000]`, or 2) pad +constants in array expressions with leading zeros so that they use the +same number of digits for each value such as +`[0x00_00_01; 0x00_01_00; 0x01_00_00]`. + +- The increment and decrement operators `++` and `--` must "hug" their +corresponding variables. In previous versions of Octave, whitespaces +between these operators and the variable they affect were allowed. That +is no longer the case. + +- The `mldivide` function (i.e., the `\` operator) now uses an LU +decomposition to solve nearly singular full square matrices. This is +Matlab-compatible and yields results which more nearly minimize `norm +(A*x - b)`. Previously, Octave computed a minimum-norm solution. + +- The `factor` function has been overhauled for speed. For large +inputs > 1e14, it can be up to 10,000 times faster. + +- The `isprime` function uses a new primality testing algorithm +that is up to 50,000 times faster for inputs > 1e14. + +- The `betainc` function now calculates an exact output for the +important special cases where a or b are 1. + +- The `whos` function now displays an additional attribute 's' when +the variable is a sparse type. + +- As part of GSoC 2020, Abdallah K. Elshamy implemented the +`jsondecode` and `jsonencode` functions to read and write JSON data. + +- As part of GSoC 2021, Abdallah K. Elshamy implemented the +`jupyter_notebook` classdef class. This class supports running and +filling Jupyter Notebooks using the Octave language kernel from Octave +itself. Making the evaluation of long-running Jupyter Notebooks on a +computing server without permanent browser connection possible. + +- By default, the history file is now located at $DATA/octave/history, +where $DATA is a platform dependent location for (roaming) user data +files (e.g., ${XDG_DATA_HOME} or, if that is not set, ~/.local/share on +Unix-like operating systems or %APPDATA% on Windows). + +- For Octave on Windows OS, the minimum required version of the Windows +API is now 6.1 (Windows 7 or newer). + +- The non-re-entrant version of the QHull library "libqhull" was +deprecated upstream. Octave now (optionally) requires the re-entrant +version of that library "libqhull_r" instead. + +- Octave's libraries are now built using symbol visibility by default. +That means that less symbols are exported from these libraries. +Configure with `--disable-lib-visibility-flags` to export all symbols +(as in previous versions). + +- Octave's build system no longer appends "++" to the end of the +"magick++" library name (set with the `--with-magick=` configure flag). +The real name of the "magick++" library (including any potentially +trailing "++") needs to be set in that option now. + +- The `pkg update` command now accepts options that are passed to `pkg +install` for each updated package. Specifying @option{-local} or +@option{-global} will restrict update checks to local or global +installed packages, respectively. + +### Graphical User Interface + +- The graphical user interface is now available in Hungarian and +Turkish. + +- In debug mode, symbol values are now shown in tooltips when hovering +variables in the editor panel. + +- The "Disable global shortcuts when Command Window has focus" GUI +preference under the Shortcuts tab is now disabled by default. This +option disables keyboard shortcuts to avoid interference with readline +key strokes in the Command Window. Unlike versions prior to Octave 7, +this preference now also affects the Ctrl-C/V shortcuts for copy/paste. + +### Graphics backend + +- Support for Qt4 for both graphics and the GUI has been removed. + +- If a working LaTeX tool chain is found on the path, including `latex`, +`dvipng`, and `dvisvgm` binaries, then text strings can now be rendered +properly when using the `"latex"` value for the text objects' +`"interpreter"` property and axes objects' `"ticklabelinterpreter"`. +Type `doc "latex interpreter"` for further info. + +- The `"Marker"` property for plot objects now accepts `|` which draws +a vertical line or `_` which draws a horizontal line. + +- The `FMT` format argument for plot commands now accepts long forms for +color names which may be more understandable than the existing +one-letter codes. For example, the RGB value `[0 0 0]` can now be +specified by `"black"` in addition to `"k"`. + +- The color graphics properties, for example `"EdgeColor"` or +`"FaceColor"`, now accept HTML specifications. An HTML specification is +a string that begins with the character '#' and is followed by either 3 +or 6 hexadecimal digits. For example, magenta which is 100% red and +blue values can specified by `"#FF00FF"` or `"#F0F"`. + +- The additional property `"contextmenu"` has been added to all graphics +objects. It is equivalent to the previously used `"uicontextmenu"` +property which is hidden now. + +- `uicontrol` objects now fully implement the `"Off"` and `"Inactive"` +values of the `"Enable"` property. When the value is `"Off"`, no +interaction with the object occurs and the `uicontrol` changes color +(typically to gray) to indicate it is disabled. When the value is +`"Inactive"`, the object appears normally (no change in color), but it +is not possible to change the value of the object (such as modifying +text in an `Edit` box or clicking on a `RadioButton`). + +- The `"ListBoxTop"` property for `uicontrol` objects has been +implemented for `set` commands. + +- The `Title` property for print formats such as PDF or SVG is now set +to the title displayed on the figure window which contains the plot. + +- Additional properties have been added to the `axes` graphics object: + * `"alphamap"` (not yet implemented) + * `"alphascale"` (not yet implemented) + * `"colorscale"` (not yet implemented) + * `"fontsizemode"` (not yet implemented) + * `"innerposition"` (equivalent to `"position"`) + * `"interactions"` (not yet implemented) + * `"layout"` (not yet implemented) + * `"legend"` (not yet implemented) + * `"nextseriesindex"` (read-only, used by `scatter` + graphics objects) + * `"positionconstraint"` (replacement for `"activepositionproperty"` + which is now a hidden property. No plans for removal.) + * `"toolbar"` (not yet implemented) + * `"xaxis"` (not yet implemented) + * `"yaxis"` (not yet implemented) + * `"zaxis"` (not yet implemented) + +### Matlab compatibility + +- The function `griddata` now implements the `"v4"` Biharmonic Spline +Interpolation method. In adddition, the function now accepts 3-D inputs +by passing the data to `griddata3`. + +- Coordinate transformation functions `cart2sph`, `sph2cart`, +`cart2pol`, and `pol2cart` now accept either row or column vectors for +coordinate inputs. A single coordinate matrix with one variable per +column can still be used as function input, but a single output variable +will now contain just the first output coordinate, and will no longer +return the full output coordinate matrix. Output size matches the size +of input vectors, or in the case of an input matrix will be column +vectors with rows corresponding to the input coordinate matrix. + +- The function `dec2bin` and `dec2hex` now support negative numbers. + +- The function `factor` now supports uint64 inputs larger than +`flintmax`. + +- The function `primes` now supports char inputs. + +- The functions `quantile` and `prctile` now permit operating on +dimensions greater than `ndims (x)`. + +- The function `iqr` now uses Matlab compatible interpolation for +quantile values. The dimension input now allows a vector, "all", and +dimensions greater than `ndims (x)`. The function also handles +`Inf` and `NaN` input values in a Matlab-compatible manner. + +- The function `importdata` now produces more compatible results when +the file contains a 2-D text matrix. + +- The file functions `copyfile`, `mkdir`, `movefile`, `rmdir` now return +a logical value (true/false) rather than a numeric value (1/0). + +- `uimenu` now accepts property `"Text"` which is identical to +`"Label"`. Matlab recommends using `"Text"` in new code, although there +is no announced date for deprecating `"Label"`. + +- The functions `scatter` and `scatter3` now return a handle to a +scatter graphics object. For compatibility, they return an `hggroup` of +patch graphics objects when the `"gnuplot"` graphics toolkit is used. In +previous versions of Octave, these functions returned an `hggroup` of +patch graphics objects for all graphics toolkits. + +- The functions `bar` and `barh` now handle stacked negative bar values +in a Matlab-compatible manner. Negative values now stack below the zero +axis independently of a positive value bars in the same stack. +Previously the negative bars could overlap positive bars depending on +drawing order. + +- The functions `bar` and `barh` now use colors from the `"ColorOrder"` +axes property rather than the `"Colormap"` figure property unless one +of the histogram options (@qcode{"hist"}, @qcode{"histc"} was specified. + +- The function `saveas` now defaults to saving in Octave figure format +(.ofig) rather than PDF (.pdf). + +- A new warning ID (`"Octave:unimplemented-matlab-functionality"`) has +been added which prints a warning when Octave's parser recognizes valid +Matlab code, but for which Octave does not yet implement the +functionality. By default, this warning is enabled. + +- When Octave is started with the `--traditional` option for maximum +compatibility the `print_struct_array_contents` internal variable is set +to true. + +- The function `repelem` now produces a row vector output when the input is +a scalar. + +- The functions `var` and `std` now accept a weight vector as input and +compute the weigthed variance. Dimension input now allows a vector and +the keyword "all". + +### Alphabetical list of new functions added in Octave 7 + +* `cospi` +* `getpixelposition` +* `endsWith` +* `fill3` +* `jsondecode` +* `jsonencode` +* `jupyter_notebook` +* `listfonts` +* `matlab.net.base64decode` +* `matlab.net.base64encode` +* `memory` +* `ordqz` +* `rng` +* `sinpi` +* `startsWith` +* `streamribbon` +* `turbo` +* `uniquetol` +* `xtickangle` +* `ytickangle` +* `ztickangle` + +### Deprecated functions, properties, and operators + +The following functions and properties have been deprecated in Octave 7 +and will be removed from Octave 9 (or whatever version is the second +major release after 7): + +- Functions + + Function | Replacement + -------------------------- |---------------------------- + disable_diagonal_matrix | optimize_diagonal_matrix + disable_permutation_matrix | optimize_permutation_matrix + disable_range | optimize_range + +- Properties + + Object | Property | Value + -----------------|---------------|------------ + | | +- Operators + + Operator | Replacement | Description + ---------|-------------|------------ + ** | ^ | Matrix exponent + .** | .^ | Element-by-element exponent + .+ | + | Element-by-element exponent + .- | - | Element-by-element exponent + +- Interpreter + + * The use of `'...'` for line continuations *inside* double-quoted + strings has been deprecated. Use `'\'` for line continuations + inside strings instead. + + * The use of `'\'` as a line continuation *outside* of double-quoted + strings has been deprecated. Use `'...'` for line continuations + instead. + + * Any trailing whitespace after a `'\'` line continuation has been + deprecated. Delete unnecessary trailing whitespace. + + +The following functions were deprecated in Octave 6 and will be removed +from Octave 8 (or whatever version is the second major release after 6): + +- Functions + + Function | Replacement + -----------------------|------------------ + `runtests` | `oruntests` + +- The environment variable used by `mkoctfile` for linker flags is now + `LDFLAGS` rather than `LFLAGS`. `LFLAGS` was deprecated in Octave 6, + and a warning is now emitted if it is used, but it will continue to + work. + + +### Removed functions, properties, and features + +The following functions and properties were deprecated in Octave 5 +and have been removed from Octave 7. + +- Functions + + Function | Replacement + -------------------------|------------------ + `output_max_field_width` | `output_precision` + `is_keyword` | `iskeyword` + +- Properties + + Object | Property | Value + -----------------|---------------|------------ + `text` | `fontangle` | `"oblique"` + `uibuttongroup` | `fontangle` | `"oblique"` + `uicontrol` | `fontangle` | `"oblique"` + `uipanel` | `fontangle` | `"oblique"` + `uitable` | `fontangle` | `"oblique"` + +- The prototype JIT compiler has been removed from Octave. Since it was +first added as part of a Google Summer of Code project in 2012, no one +has ever seriously taken on further development of it and it still does +nothing significant. It is out of date with the default interpreter +that walks the parse tree. Even though we have fixed the configure +script to disable it by default, people still ask questions about how to +build it, but it doesn’t seem that they are doing that to work on it but +because they think it will make Octave code run faster (it never did, +except for some extremely simple bits of code as examples for +demonstration purposes only). The following functions related to the +JIT compiler have also been removed: `debug_jit`, `jit_enable`, +`jit_failcnt`, and `jit_startcnt`. + +### Old release news + +- [Octave 6.x](etc/NEWS.6.md) +- [Octave 5.x](etc/NEWS.5.md) +- [Octave 4.x](etc/NEWS.4) +- [Octave 3.x](etc/NEWS.3) +- [Octave 2.x](etc/NEWS.2) +- [Octave 1.x](etc/NEWS.1) diff -r 6ad0187ea175 -r 0ae858447508 etc/module.mk --- a/etc/module.mk Wed Dec 08 09:49:04 2021 +0100 +++ b/etc/module.mk Wed Dec 08 08:42:35 2021 +0100 @@ -9,9 +9,9 @@ %reldir%/NEWS.2 \ %reldir%/NEWS.3 \ %reldir%/NEWS.4 \ - %reldir%/NEWS.5 \ - %reldir%/NEWS.6 \ - %reldir%/NEWS.7 \ + %reldir%/NEWS.5.md \ + %reldir%/NEWS.6.md \ + %reldir%/NEWS.7.md \ %reldir%/PROJECTS \ %reldir%/gdbinit