forked from gnu-octave/octave
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
361 lines (282 loc) · 13.9 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
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 `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 `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
`JupyterNotebook` 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.
### Graphical User Interface
- Turkish translation added.
- In debug mode, symbol values are now shown in tooltips when hovering
variables in the editor panel.
### 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 `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. Dimension input now allows a vector, "all", and
dimensions greater than `ndims (x)`. The function compatibly handles
`Inf` and `NaN` input values.
- The function `importdata` now produces more compatible results when
the file contains a 2-D text matrix.
- `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.
### Alphabetical list of new functions added in Octave 7
* `cospi`
* `getpixelposition`
* `endsWith`
* `fill3`
* `jsondecode`
* `jsonencode`
* `JupyterNotebook`
* `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
- 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)