comparison pages/NEWS-4.0.md @ 215:dedb85c54245

Reorganize homepage.
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Thu, 10 Sep 2020 17:47:36 +0900
parents
children c8126c010d67
comparison
equal deleted inserted replaced
214:fe5dcb23372a 215:dedb85c54245
1 ---
2 layout: page
3 title: GNU Octave Version 4.0
4 menu: false
5 permalink: NEWS-4.0.html
6 ---
7
8 ## Summary of important user-visible changes
9
10 May 23, 2015
11
12 {% include release_news_select.md %}
13
14 <pre>
15 ** A graphical user interface is now the default when running Octave
16 interactively. The start-up option --no-gui will run the familiar
17 command line interface, and still allows use of the GUI dialogs and
18 qt plotting toolkit. The option --no-gui-libs runs a minimalist
19 command line interface that does not link with the Qt libraries and
20 uses the fltk toolkit for plotting.
21
22 ** Octave now uses OpenGL graphics with Qt widgets by default. If OpenGL
23 libraries are not available when Octave is built, gnuplot is used.
24 You may choose to use the fltk or gnuplot toolkit for graphics by
25 executing the command
26
27 graphics_toolkit ("fltk")
28 OR
29 graphics_toolkit ("gnuplot")
30
31 Adding such a command to your ~/.octaverc file will set the default
32 for each session.
33
34 ** A new syntax for object oriented programming termed classdef has been
35 introduced. See the manual for more extensive documentation of the
36 classdef interface.
37
38 New keywords:
39
40 classdef endclassdef
41 enumeration endenumeration
42 events endevents
43 methods endmethods
44 properties endproperties
45
46 ** New audio functions and classes:
47
48 audiodevinfo audioread sound
49 audioinfo audiorecorder soundsc
50 audioplayer audiowrite
51
52 ** Other new classes in Octave 4.0:
53
54 audioplayer inputParser
55 audiorecorder
56
57 ** Optional stricter Matlab compatibility for ranges, diagonal matrices,
58 and permutation matrices.
59
60 Octave has internal optimizations which use space-efficient storage
61 for the three data types above. Three new functions have been added
62 which control whether the optimizations are used (default), or whether
63 the data types are stored as full matrices.
64
65 disable_range disable_diagonal_matrix disable_permutation_matrix
66
67 All three optimizations are disabled if Octave is started with the
68 --braindead command line option.
69
70 ** The preference
71
72 do_braindead_shortcircuit_evaluation
73
74 is now enabled by default.
75
76 ** The preference
77
78 allow_noninteger_range_as_index
79
80 is now enabled by default and the warning ID
81
82 Octave:noninteger-range-as-index
83
84 is now set to "on" by default instead of "error" by default and "on"
85 for --traditional.
86
87 ** The "backtrace" warning option is now enabled by default. This change
88 was made for Matlab compatibility.
89
90 ** For compatibility with Matlab, the "ismatrix (x)" function now only checks
91 the dimension of "x". The old behaviour of "ismatrix" is obtained by
92 "isnumeric (x) || islogical (x) || ischar (x)".
93
94 ** The nextpow2 function behaviour has been changed for vector inputs.
95 Instead of computing `nextpow2 (length (x))', it will now compute
96 nextpow2 for each element of the input. This change is Matlab compatible,
97 and also prevents bugs for "vectors" of length 1.
98
99 ** polyeig now returns a row vector of eigenvalues rather than a matrix
100 with the eigenvalues on the diagonal. This change was made for Matlab
101 compatibility.
102
103 ** Interpolation function changes for Matlab compatibility
104
105 The interpolation method 'cubic' is now equivalent to 'pchip'
106 for interp1, interp2, and interp3. Previously, 'cubic' was equivalent
107 to 'spline' for interp2. This may produce different results as 'spline'
108 has continuous 1st and 2nd derivatives while 'pchip' only has a continuous
109 1st derivative. The methods 'next' and 'previous' have been added to
110 interp1 for compatibility.
111
112 ** The delaunay function has been extended to accept 3-D inputs for
113 Matlab compatibility. The delaunay function no longer plots the
114 triangulation if no output argument is requested, instead, the
115 triangulation is always returned. The delaunay3 function which
116 handles 3-D inputs has been deprecated in favor of delaunay.
117
118 ** The trigonometric functions asin and acos return different phase values
119 from previous versions of Octave when the input is outside the principal
120 branch ([-1, 1]). If the real portion of the input is greater than 1 then
121 the limit from below is taken. If the real portion is less than 1 then the
122 limit from above is taken. This criteria is consistent with several other
123 numerical analysis software packages.
124
125 ** The hyperbolic function acosh now returns values with a phase in the range
126 [-pi/2, +pi/2]. Previously Octave returned values in the range [0, pi].
127 This is consistent with several other numerical analysis software packages.
128
129 ** strfind changes when using empty pattern ("") for Matlab compatibility
130
131 strfind now returns an empty array when the pattern itself is empty.
132 In previous versions of Octave, strfind matched at every character
133 location when the pattern was empty.
134
135 NEW
136 strfind ("abc", "") => []
137 OLD
138 strfind ("abc", "") => [1, 2, 3, 4]
139
140 ** Integer formats used in the printf family of functions now work for
141 64-bit integers and are more compatible with Matlab when printing
142 non-integer values. Now instead of truncating, Octave will switch
143 the effective format to '%g' in the following circumstances:
144
145 * the value of an integer type (int8, uint32, etc.) value exceeds
146 the maximum for the format specifier. For '%d', the limit is
147 intmax ('int64') and for '%u' it is intmax ('uint64').
148
149 * round(x) != x or the value is outside the range allowed by the
150 integer format specifier.
151
152 There is still one difference: Matlab switches to '%e' and Octave
153 switches to '%g'.
154
155 ** The functions intersect, setdiff, setxor, and union now return a
156 column vector as output unless the input was a row vector. This change
157 was made for Matlab compatibility.
158
159 ** The inpolygon function now returns true for points that are within
160 the polygon OR on it's edge. This change was made for Matlab
161 compatibility.
162
163 ** The archive family of functions (bzip2, gzip, zip, tar) and their
164 unpacking routines (bunzip2, gunzip, unzip, untar, unpack) have
165 been recoded. Excepting unpack, the default is now to place files
166 in the same directory as the archive (on unpack) or as the original
167 files (on archiving).
168
169 ** Qt and FLTK graphics toolkits now support offscreen rendering on Linux.
170 In other words, print will work even when the figure visibility is "off".
171
172 ** Z-order stacking issues with patches, grid lines, and line object
173 plot markers for on screen display and printing have all been resolved.
174 For 2-D plots the axis grid lines can be placed on top of the plot
175 with set (gca, "layer", "top").
176
177 ** The patch graphic object has been overhauled. It now produces visual
178 results equivalent to Matlab even for esoteric combinations of
179 faces/vertices/cdata.
180
181 ** The polar() plot function now draws a circular theta axis and
182 radial rho axis rather than using a rectangular x/y axis.
183
184 ** linkprop has been completely re-coded for performance and Matlab
185 compatibility. It now returns a linkprop object which must be stored
186 in a variable for as long as the graphic objects should remain linked.
187 To unlink properties use 'clear hlink' where hlink is the variable
188 containing the linkprop object.
189
190 ** isprime has been extended to operate on negative and complex inputs.
191
192 ** xor has been extended to accept more than two arguments in which case
193 it performs cumulative XOR reduction.
194
195 ** The following functions now support N-dimensional arrays:
196
197 fliplr flipud rot90 rectint
198
199 ** The new warning ID "Octave:data-file-in-path" replaces the three
200 previous separate warning IDs "Octave:fopen-file-in-path",
201 "Octave:load-file-in-path", and "Octave:md5sum-file-in-path".
202
203 ** The warning ID Octave:singular-matrix-div has been replaced by
204 Octave:nearly-singular-matrix and Octave:singular-matrix.
205
206 ** The warning ID Octave:matlab-incompatible has been replaced by
207 Octave:language-extension to better reflect its meaning.
208
209 ** The warning ID Octave:broadcast has been removed. Instead automatic
210 broadcasting will throw an Octave:language-extension warning. This
211 warning ID is used for broadcasting as well as other features not
212 available in Matlab.
213
214 ** Other new functions added in 4.0:
215
216 annotation
217 bandwidth
218 cubehelix
219 dir_in_loadpath
220 flip
221 frame2im
222 get_home_directory
223 hgload
224 hgsave
225 ichol
226 ilu
227 im2frame
228 isbanded
229 isdiag
230 isstudent
231 istril
232 istriu
233 javachk
234 jit_failcnt
235 linkaxes
236 lscov
237 metaclass
238 numfields
239 open
240 ordschur
241 pan
242 qmr
243 rotate
244 rotate3d
245 sylvester
246 unsetenv
247 validateattributes
248 zoom
249
250 ** inline() scheduled for eventual deprecation by Matlab
251
252 Functions created through the use of inline are scheduled for deprecation
253 by Matlab. When this occurs Octave will continue to support inline
254 functions for an indeterminate amount of time before also removing support.
255 All new code should use anonymous functions in place of inline functions.
256
257 ** Deprecated functions.
258
259 The following functions have been deprecated in Octave 4.0 and will
260 be removed from Octave 4.4 (or whatever version is the second major
261 release after 4.0):
262
263 Function | Replacement
264 ---------------------|------------------
265 bicubic | interp2
266 delaunay3 | delaunay
267 dump_prefs | individual preference get/set routines
268 find_dir_in_path | dir_in_loadpath
269 finite | isfinite
270 fmod | rem
271 fnmatch | glob or regexp
272 loadaudio | audioread
273 luinc | ilu or ichol
274 mouse_wheel_zoom | mousewheelzoom axes property
275 nfields | numfields
276 octave_tmp_file_name | tempname
277 playaudio | audioplayer
278 saveaudio | audiowrite
279 syl | sylvester
280 usage | print_usage
281
282 allow_noninteger_range_as_index
283 do_braindead_shortcircuit_evaluation
284 setaudio
285
286 ** The following functions were deprecated in Octave 3.8 and will be
287 removed from Octave 4.2 (or whatever version is the second major
288 release after 3.8):
289
290 default_save_options java_new
291 gen_doc_cache java_unsigned_conversion
292 interp1q javafields
293 isequalwithequalnans javamethods
294 java_convert_matrix re_read_readline_init_file
295 java_debug read_readline_init_file
296 java_invoke saving_history
297
298 ** The following functions were deprecated in Octave 3.6 and have been
299 removed from Octave 4.0.
300
301 cut polyderiv
302 cor shell_cmd
303 corrcoef studentize
304 __error_text__ sylvester_matrix
305 error_text
306
307 ** The following keywords were deprecated in Octave 3.8 and have been
308 removed from Octave 4.0
309
310 static
311
312 ** The following configuration variables were deprecated in Octave 3.8
313 and have been removed from Octave 4.0
314
315 CC_VERSION (now GCC_VERSION)
316 CXX_VERSION (now GXX_VERSION)
317
318 ** The internal function atan2 of the sparse matrix class has been deprecated
319 in Octave 4.0 and will be removed from Octave 4.4 (or whatever version is
320 the second major release after 4.0). Use the Fatan2 function with sparse
321 inputs as a replacement.
322
323 ** The internal class Octave_map was deprecated in Octave 3.8 and has
324 been removed from Octave 4.0. Replacement classes are
325 octave_map (struct array) or octave_scalar_map for a single structure.
326
327 ** The configure option --enable-octave-allocator has been removed.
328 The internal class octave_allocator declared in oct-alloc.h has
329 been removed. The header remains, but is deprecated. The macros to
330 access the class (DECLARE_OCTAVE_ALLOCATOR, DEFINE_OCTAVE_ALLOCATOR,
331 and DEFINE_OCTAVE_ALLOCATOR2) are now unconditionally defined to be
332 empty.
333
334 ** Octave now has OpenMP enabled by default if the system provides a
335 working OpenMP implementation. This allows oct-file modules to take
336 advantage of OpenMP if desired. This can be disabled when building
337 Octave with the configure option --disable-openmp.
338
339 ** Octave now automatically truncates intermediate calculations done with
340 floating point values to 64 bits. Some hardware math co-processors, such
341 as the x87, maintain extra precision, but this leads to disagreements in
342 calculations when compared to reference implementations in software using
343 the IEEE standard for double precision. There was no measurable
344 performance impact to this change, but it may be disabled with the
345 configure option --disable-float-truncate. MinGW and Cygwin platforms,
346 as well as GCC compilers >= 5.0 require this feature. Non-x87 hardware,
347 or hardware using SSE options exclusively, can disable float truncation
348 if desired.
349 </pre>