comparison pages/NEWS-6.1.md @ 232:fe59d0118a2b

Octave 6.1.0 release 2020-11-26
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Mon, 30 Nov 2020 01:48:06 +0900
parents
children
comparison
equal deleted inserted replaced
231:f440eb7df398 232:fe59d0118a2b
1 ---
2 layout: page
3 title: GNU Octave Version 6
4 permalink: NEWS-6.1.html
5 ---
6
7 ## Summary of important user-visible changes
8
9 November 26, 2020
10
11 {% include release_news_select.md %}
12
13 {::options parse_block_html="true" /}
14 <div class="panel callout">
15 * TOC
16 {:toc}
17 </div>
18 {::options parse_block_html="false" /}
19
20
21 ### General improvements
22
23 - The `intersect`, `setdiff`, `setxor`, `union`, and `unique` functions
24 accept a new sorting option `"stable"` which will return output values
25 in the same order as the input, rather than in ascending order.
26
27 - Complex RESTful web services can now be accessed by the `webread` and
28 `webwrite` functions alongside with the `weboptions` structure. One
29 major feature is the support for cookies to enable RESTful
30 communication with the web service.
31
32 Additionally, the system web browser can be opened by the `web`
33 function.
34
35 - The `linspace` function now produces symmetrical sequences when the
36 endpoints are symmetric. This is more intuitive and also compatible
37 with recent changes made in Matlab R2019b.
38
39 - The underlying algorithm of the `rand` function has been changed.
40 For single precision outputs, the algorithm has been fixed so that it
41 produces values strictly in the range (0, 1). Previously, it could
42 occasionally generate the right endpoint value of 1 (See
43 [bug #41742](https://savannah.gnu.org/bugs/?41742)). In addition,
44 the new implementation uses a uniform interval between floating
45 point values in the range (0, 1) rather than targeting a uniform
46 density (# of random integers / length along real number line).
47
48 - Numerical integration has been improved. The `quadv` function has
49 been re-written so that it can compute integrands of periodic
50 functions. At the same time, performance is better with ~3.5X fewer
51 function evaluations required. A bug in `quadgk` that caused complex
52 path integrals specified with `"Waypoints"` to occasionally be
53 calculated in the opposite direction was fixed.
54
55 - The `edit` function option `"editinplace"` now defaults to `true` and
56 the option `"home"` now defaults to the empty matrix `[]`. Files will
57 no longer be copied to the user's HOME directory for editing. The old
58 behavior can be restored by setting `"editinplace"` to `false` and
59 `"home"` to `"~/octave"`.
60
61 - The `format` command supports two new options: `uppercase` and
62 `lowercase` (default). With the default, print a lowercase 'e' for
63 the exponent character in scientific notation and lowercase 'a-f' for
64 the hex digits representing 10-15. With `uppercase`, print 'E' and
65 'A-F' instead. The previous uppercase formats, `E` and `G`, no longer
66 control the case of the output.
67
68 Additionally, the `format` command can be called with multiple options
69 for controlling the format, spacing, and case in arbitrary order.
70 For example:
71
72 format long e uppercase loose
73
74 Note, in the case of multiple competing format options the rightmost
75 one is used, and, in case of an error, the previous format remains
76 unchanged.
77
78 - L-value references (e.g., increment (++), decrement (--), and all
79 in-place assignment operators (+=, -=, *=, /=, etc.)) are no longer
80 allowed in anonymous functions.
81
82 - New warnings have been added about questionable uses of the colon ':'
83 range operator. Each has a new warning ID so that it can be disabled
84 if desired.
85
86 - `Octave:colon-complex-argument` : when any arg is complex
87 - `Octave:colon-nonscalar-argument` : when any arg is non-scalar
88
89 &nbsp;
90
91 - The `regexp` and related functions now correctly handle and *require*
92 strings in UTF-8 encoding. As with any other function that requires
93 strings to be encoded in Octave's native encoding, you can use
94 `native2unicode` to convert from your preferred locale. For example,
95 the copyright symbol in UTF-8 is `native2unicode (169, "latin1")`.
96
97 - The startup file `octaverc` can now be located in the platform
98 dependent location for user local configuration files (e.g.,
99 `${XDG_CONFIG_HOME}/octave/octaverc` on Unix-like operating systems or
100 `%APPDATA%\octave\octaverc` on Windows).
101
102 - The command
103
104 dbstop in CLASS at METHOD
105
106 now works to set breakpoints in classdef constructors and methods.
107
108 #### Graphics backend
109
110 - The use of Qt4 for graphics and the GUI is deprecated in Octave
111 version 6 and no further bug fixes will be made. Qt4 support will be
112 removed completely in Octave version 7.
113
114 - The `legend` function has been entirely rewritten. This fixes a
115 number of historical bugs, and also implements new properties such as
116 `"AutoUpdate"` and `"NumColumns"`. The gnuplot toolkit---which is no
117 longer actively maintained---still uses the old legend function.
118
119 - The `axis` function was updated which resolved 10 bugs affecting
120 axes to which `"equal"` had been applied.
121
122 - Graphic primitives now accept a color property value of `"none"`
123 which is useful when a particular primitive needs to be hidden
124 (for example, the Y-axis of an axes object with `"ycolor" = "none"`)
125 without hiding the entire primitive `"visibility" = "off"`.
126
127 - A new property `"FontSmoothing"` has been added to text and axes
128 objects that controls whether anti-aliasing is used during the
129 rendering of characters. The default is `"on"` which produces smooth,
130 more visually appealing text.
131
132 - The figure property `"windowscrollwheelfcn"`is now implemented.
133 This makes it possible to provide a callback function to be executed
134 when users manipulate the mouse wheel on a given figure.
135
136 - The figure properties `"pointer"`, `"pointershapecdata"`, and
137 `"pointershapehotspot"` are now implemented. This makes it possible
138 to change the shape of the cursor (pointer in Matlab-speak) displayed
139 in a plot window.
140
141 - The figure property `"paperpositionmode"` now has the default `"auto"`
142 rather than `"manual"`. This change is more intuitive and is
143 Matlab compatible.
144
145 - The appearance of patterned lines `"LineStyle" = ":"|"--"|"-."` has
146 been improved for small widths (`"LineWidth"` less than 1.5 pixels)
147 which is a common scenario.
148
149 - Printing to EPS files now uses a tight bounding box (`"-tight"`
150 argument to print) by default. This makes more sense for EPS
151 files which are normally embedded within other documents, and is
152 Matlab compatible. If necessary use the `"-loose"` option to
153 reproduce figures as they appeared in previous versions of Octave.
154
155 - The following print devices are no longer officially supported: cdr,
156 corel, aifm, ill, cgm, hpgl, mf and dxf. A warning will be thrown
157 when using those devices, and the code for supporting those formats
158 will eventually be removed from a future version of Octave.
159
160 - The placement of text subscripts and superscripts has been
161 re-engineered and now produces visually attractive results similar to
162 Latex.
163
164 #### Packages
165
166 - `pkg describe` now lists dependencies and inverse dependencies
167 (i.e., other installed packages that depend on the package in
168 question).
169
170 - `pkg test` now tests all functions in a package.
171
172 - When unloading a package, `pkg` now checks if any remaining loaded
173 packages depend on the one to be removed. If this is the case `pkg`
174 aborts with an explanatory error message. This behavior can be
175 overridden with the `-nodeps` option.
176
177 ### Matlab compatibility
178
179 - The function `unique` now returns column index vectors for the second
180 and third outputs. When duplicate values are present, the default
181 index to return is now the `"first"` occurrence. The previous Octave
182 behavior, or Matlab behavior from releases prior to R2012b, can be
183 obtained by using the `"legacy"` flag.
184
185 - The function `setdiff` with the `"rows"` argument now returns Matlab
186 compatible results. The previous Octave behavior, or Matlab behavior
187 from releases prior to R2012b, can be obtained by using the `"legacy"`
188 flag.
189
190 - The functions `intersect`, `setxor`, and `union` now accept a
191 `"legacy"` flag which changes the index values (second and third
192 outputs) as well as the orientation of all outputs to match Matlab
193 releases prior to R2012b.
194
195 - The function `streamtube` is Matlab compatible and plots tubes along
196 streamlines which are scaled by the vector field divergence. The
197 Octave-only extension `ostreamtube` can be used to visualize the flow
198 expansion and contraction of the vector field due to the local
199 crossflow divergence.
200
201 - The interpreter now supports handles to nested functions.
202
203 - The graphics properties `"LineWidth"` and `"MarkerSize"` are now
204 measured in points, *not* pixels. Compared to previous versions
205 of Octave, some lines and markers will appear 4/3 larger.
206
207 - The meta.class property "SuperClassList" has been renamed
208 "Superclasslist" for Matlab compatibility. The original name will
209 exist as an alias until Octave version 8.1.
210
211 - Inline functions created by the function `inline` are now of type
212 "inline" when interrogated with the `class` function. In previous
213 versions of Octave, the class returned was "function_handle". This
214 change is Matlab compatible. Inline functions are deprecated in
215 both Matlab and Octave and support may eventually be removed.
216 Anonymous functions can be used to replace all instances of inline
217 functions.
218
219 - The function `javaaddpath` now prepends new directories to the
220 existing dynamic classpath by default. To append them instead, use
221 the new `"-end"` argument. Multiple directories may now be specified
222 in a cell array of strings.
223
224 - An undocumented function `gui_mainfcn` has been added, for compatibility
225 with figures created with Matlab's GUIDE.
226
227 - Several validator functions of type `mustBe*` have been added. See
228 the list of new functions below.
229
230
231 ### Deprecated functions and properties
232
233 The following functions and properties have been deprecated in Octave 6
234 and will be removed from Octave 8 (or whatever version is the second
235 major release after 6):
236
237 - Functions
238
239 Function | Replacement
240 -----------------------|------------------
241 `runtests` | `oruntests`
242
243 - The environment variable used by `mkoctfile` for linker flags is now
244 `LDFLAGS` rather than `LFLAGS`. `LFLAGS` is deprecated, and a warning
245 is emitted if it is used, but it will continue to work.
246
247
248 ### Removed functions and properties
249
250 The following functions and properties were deprecated in Octave 4.4
251 and have been removed from Octave 6.
252
253 - Functions
254
255 Function | Replacement
256 ---------------------|------------------
257 `chop` | `sprintf` for visual results
258 `desktop` | `isguirunning`
259 `tmpnam` | `tempname`
260 `toascii` | `double`
261 `java2mat` | `__java2mat__`
262
263 - Properties
264
265 Object | Property | Value
266 ---------------------|---------------------------|-----------------------
267 `annotation` | `edgecolor ("rectangle")` |
268 `axes` | `drawmode` |
269 `figure` | `doublebuffer` |
270 | `mincolormap` |
271 | `wvisual` |
272 | `wvisualmode` |
273 | `xdisplay` |
274 | `xvisual` |
275 | `xvisualmode` |
276 `line` | `interpreter` |
277 `patch` | `interpreter` |
278 `surface` | `interpreter` |
279 `text` | `fontweight` | `"demi"` and `"light"`
280 `uibuttongroup` | `fontweight` | `"demi"` and `"light"`
281 `uicontrol` | `fontweight` | `"demi"` and `"light"`
282 `uipanel` | `fontweight` | `"demi"` and `"light"`
283 `uitable` | `fontweight` | `"demi"` and `"light"`
284
285
286 ### Alphabetical list of new functions added in Octave 6
287
288 * `auto_repeat_debug_command`
289 * `commandhistory`
290 * `commandwindow`
291 * `filebrowser`
292 * `is_same_file`
293 * `lightangle`
294 * `mustBeFinite`
295 * `mustBeGreaterThan`
296 * `mustBeGreaterThanOrEqual`
297 * `mustBeInteger`
298 * `mustBeLessThan`
299 * `mustBeLessThanOrEqual`
300 * `mustBeMember`
301 * `mustBeNegative`
302 * `mustBeNonempty`
303 * `mustBeNonNan`
304 * `mustBeNonnegative`
305 * `mustBeNonpositive`
306 * `mustBeNonsparse`
307 * `mustBeNonzero`
308 * `mustBeNumeric`
309 * `mustBeNumericOrLogical`
310 * `mustBePositive`
311 * `mustBeReal`
312 * `namedargs2cell`
313 * `newline`
314 * `ode23s`
315 * `ostreamtube`
316 * `rescale`
317 * `rotx`
318 * `roty`
319 * `rotz`
320 * `stream2`
321 * `stream3`
322 * `streamline`
323 * `streamtube`
324 * `uisetfont`
325 * `verLessThan`
326 * `web`
327 * `weboptions`
328 * `webread`
329 * `webwrite`
330 * `workspace`