This updates octave and also gets some more recommened dependencies in,
namely qrupdate and Mesalib (for osmesa) and gl2ps as well as the
qscintilla editor. The glpk option is on by default again.
This version of octave comes rather close to a standard build, with
optimzied BLAS and GUI fluff. We are still missing SuiteSparse and
SUNDIALS solvers, see
https://octave.org/doc/v6.2.0/External-Packages.html
PortAudio should also be considered, and LLVM be watched if that
experimental JIT settles in.
Upstream changes since 5.x:
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"`
Install the new interchangeable BLAS system created by Thomas Orgis,
currently supporting Netlib BLAS/LAPACK, OpenBLAS, cblas, lapacke, and
Apple's Accelerate.framework. This system allows the user to select any
BLAS implementation without modifying packages or using package options, by
setting PKGSRC_BLAS_TYPES in mk.conf. See mk/blas.buildlink3.mk for details.
This commit should not alter behavior of existing packages as the system
defaults to Netlib BLAS/LAPACK, which until now has been the only supported
implementation.
Details:
Add new mk/blas.buildlink3.mk for inclusion in dependent packages
Install compatible Netlib math/blas and math/lapack packages
Update math/blas and math/lapack MAINTAINER approved by adam@
OpenBLAS, cblas, and lapacke will follow in separate commits
Update direct dependents to use mk/blas.buildlink3.mk
Perform recursive revbump
Summary of bugs fixed for version 5.2.0:
Improvements
- Lock amd and symbfact to avoid segmentation fault with SuiteSparse
- Fix segfault when calculating patch vertex normals
- Fix segfault in constructing patch normals for lighting
- mat2str.m: Fix for logical matrix (add `transpose`).
- improve file equality check for MS Windows
- ismember.m: Fix second return argument when values are complex
- findobj.m: Fix typo and correctly handle numeric properties
- Correctly display integer types with format hex
- Cast `winqueryreg` `REG_DWORD` types to `DWORD`
- Fix numerous errors in `audiowrite` / `audioread`
- print.m: Pass quoted path to `octave-svgconvert`
- dir.m: Fix occasionally returning incorrect folder field
- Stop segfault when calling 3-input form of `diag` with cell arrays
- improve message for setting breakpoint in nonexistent function
- Use framebuffer object for printing invisible Qt figures on mac
- Escape backslash characters in `EPS` output
- Use replacement characters to display non UTF-8 strings in figures
- inputrc: Add warning about modification
- documentation.cc (global_search): just return if query string is empty
- Default (c)transpose for old style class arrays
- Always reserve at least 1 element of storage for sparse matrices
- Don't segfault at exit after reading malformed HDF5 file
- Fix pause() with no arguments called on Windows
- refactor minimum eigenvalue index search in `qp`
- qp: fix obscure corner case when calculating `qp` caused by a typo
- use `std::streampos` instead of `std::ios::streampos`.
- fix `pause` and `kbhit` with glibc 2.28 end-of-file state behavior
- Fix return of left-handed vectors when inputs are complex
- waitbar.m: Fix hang when using `createcancelbtn` property
- shading.m: Fix unexpected error when multiple `hggroups` present
- dec2base.m: Correctly handle zero matrix input
- eliminate duplicate graphics callback object stack
- Improve performance when closing figures
- Reduce time to process `pkg -forge list` by 30X
- Feed `fig2dev` with PDF files converted from svg
- Improve error checking for `iconv_open`.
- poly.m: fix the fix for input of complex conjugate pairs
- mkoctfile: use the `TMPDIR` environment variable if set
- line.m: Fix creation of unwanted axes
- Accept 4-input form for quiver3
- pkg.m: restore installing packages from zip archives
- axis.m: Fix issues with `equal` argument
- ordeig.m: Do not fail on 1x1 matrices
GUI
- fix editors search and replace in selection
- undo a complete replace all action in the editor
- fix missing unlock of mutex when gui editor is not present
- prevent unnamed editor tab from being closed by `rmdir`
- prevent editor from closing files that are not affected by `rmdir`
- fix creating keyword files for editor autocompletion
- fix dock widget position when being dragged out of the main window
Build system / Tests
- configure: prevent overlinking when SUNDIALS is disabled
- use QtCore and Qt5Gui modules instead of Qt5OpenGL
- make building with Qt4 QGLWidget work again
- 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`
Documentation
- fix many spelling errors
- help: improve documentation for the `startup.m` user script.
- avoid conflict with @seealso macro in Texinfo 6.6
- mk-doc-cache.pk: Also translate `@seealso` here.
- __makeinfo__.m: Also translate `@seealso` here
- polar.m: Document that input is expected to be in radians
- gallery.m: Fix typo in docstring for poisson
- Add 1024x1024 Octave logo icon
- add `.editorconfig` for default file encoding and indentation.
- octave.doap: Copy localized (short) description over from appdata
- org.octave.Octave.appdata.xml: Add German and French description
- languages/*.ts: updated language files
- 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`
- doc: Improve documentation for `get_help_text`, `get_help_text_from_file`.
- doc: Add documentation for `GNUTERM` variable used with gnuplot
- doc: Improve `contour` docstring example
- doc: Add example to show limitations of the given BLAS integer size.
- doc: Improve documentation of sparse functions.
- doc: Improve spelling of `bicgstab`
- doc: Remove `Map` functions `keys`, `values`, `remove` from unimplemented list
- doc: Add function index entry for alias `inverse`
- add content rating declaration to AppStream metadata
- 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
- doc: state that Octave can only load HDF5 files created by itself
- doc: Fix names of options in `issorted`
- doc: Small fixes to `mat2cell` and `polyeig` docstrings
- doc: Improve example code for using `-pdflatexstandalone`
- doc: Refer to "root object" rather than "root figure object".
- doc: Place cross-reference from list of graphics object properties back to object
- doc: document the newline character in warning messages
- doc: pkg versions can be more general than "x.y.z"
Octave 4.0 is a major new release with many new features,
including a graphical user interface, support for classdef
object-oriented programming, better compatibility with Matlab,
and many new and improved functions.
A list of important user-visible changes is availble at
http://octave.org/NEWS-4.0.html, by selecting the Release Notes
item in the News menu of the GUI, or by typing news at the Octave
command prompt.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
* Compatibility with Matlab graphics is much better now. We now
have some graphics features that work like Matlab's Handle
Graphics (tm):
* The way Octave handles search paths has changed.
* Previous versions of Octave had a number of built-in variables to
control warnings (for example, warn_divide_by_zero). These
variables have been replaced by warning identifiers that are used
with the warning function to control the state of warnings.
* All built-in variables have been converted to functions.
* For compatibility with Matlab, the output order of Octave's
"system" function has changed.
* For compatibility with Matlab, the output of Octave's fsolve
function has been changed.
* For compatibility with Matlab, normcdf, norminv, normpdf, and
normrnd have been modified to compute distributions using the
standard deviation instead of the variance.
* For compatibility with Matlab, gamcdf, gaminv, gampdf, gamrnd,
expcdf, expinv, exppdf and exprnd have been modified to compute
the distributions using the standard scale factor rather than
one over the scale factor.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).