comparison NEWS-4.0.html @ 94:e8fc61e077fc

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