comparison NEWS-3.8.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 3.8:
3 ---------------------------------------------------------
4
5 ** One of the biggest new features for Octave 3.8 is a graphical user
6 interface. It is the one thing that users have requested most
7 often over the last few years and now it is almost ready. But
8 because it is not quite as polished as we would like, we have
9 decided to wait until the 4.0.x release series before making the
10 GUI the default interface (until then, you can use the --force-gui
11 option to start the GUI).
12
13 Given the length of time and the number of bug fixes and
14 improvements since the last major release Octave, we also decided
15 against delaying the release of all these new improvements any
16 longer just to perfect the GUI. So please enjoy the 3.8 release of
17 Octave and the preview of the new GUI. We believe it is working
18 reasonably well, but we also know that there are some obvious rough
19 spots and many things that could be improved.
20
21 WE NEED YOUR HELP. There are many ways that you can help us fix
22 the remaining problems, complete the GUI, and improve the overall
23 user experience for both novices and experts alike:
24
25 * If you are a skilled software developer, you can help by
26 contributing your time to help with Octave's development. See
27 http://octave.org/get-involved.html for more information.
28
29 * If Octave does not work properly, you are encouraged
30 report the problems you find. See http://octave.org/bugs.html
31 for more information about how to report problems.
32
33 * Whether you are a user or developer, you can help to fund the
34 project. Octave development takes a lot of time and expertise.
35 Your contributions help to ensure that Octave will continue to
36 improve. See http://octave.org/donate.html for more details.
37
38 We hope you find Octave to be useful. Please help us make it even
39 better for the future!
40
41 ** Octave now uses OpenGL graphics by default with FLTK widgets. If
42 OpenGL libraries or FLTK widgets are not available when Octave is
43 built, gnuplot is used. You may also choose to use gnuplot for
44 graphics by executing the command
45
46 graphics_toolkit ("gnuplot")
47
48 Adding this command to your ~/.octaverc file will set the default
49 for each session.
50
51 ** Printing or saving figures with OpenGL graphics requires the
52 gl2ps library which is no longer distributed with Octave. The
53 software is widely available in most package managers. If a
54 pre-compiled package does not exist for your system, you can find
55 the current sources at http://www.geuz.org/gl2ps/.
56
57 ** Octave now supports nested functions with scoping rules that are
58 compatible with Matlab. A nested function is one declared and defined
59 within the body of another function. The nested function is only
60 accessible from within the enclosing function which makes it one
61 method for making private functions whose names do not conflict with those
62 in the global namespace (See also subfunctions and private functions).
63 In addition, variables in the enclosing function are visible within the
64 nested function. This makes it possible to have a pseudo-global variable
65 which can be seen by a group of functions, but which is not visible in
66 the global namespace.
67
68 Example:
69 function outerfunc (...)
70 ...
71 function nested1 (...)
72 ...
73 function nested2 (...)
74 ...
75 endfunction
76 endfunction
77
78 function nested3 (...)
79 ...
80 endfunction
81 endfunction
82
83 ** Line continuations inside character strings have changed.
84
85 The sequence '...' is no longer recognized as a line continuation
86 inside a character string. A backslash '\' followed by a newline
87 character is no longer recognized as a line continuation inside
88 single-quoted character strings. Inside double-quoted character
89 strings, a backslash followed by a newline character is still
90 recognized as a line continuation, but the backslash character must
91 be followed *immediately* by the newline character. No whitespace or
92 end-of-line comment may appear between them.
93
94 ** Backslash as a continuation marker outside of double-quoted strings
95 is now deprecated.
96
97 Using '\' as a continuation marker outside of double quoted strings
98 is now deprecated and will be removed from a future version of
99 Octave. When that is done, the behavior of
100
101 (a \
102 b)
103
104 will be consistent with other binary operators.
105
106 ** Redundant terminal comma accepted by parser
107
108 A redundant terminal comma is now accepted in matrix
109 definitions which allows writing code such as
110
111 [a,...
112 b,...
113 c,...
114 ] = deal (1,2,3)
115
116 ** Octave now has limited support for named exceptions
117
118 The following syntax is now accepted:
119
120 try
121 statements
122 catch exception-id
123 statements
124 end
125
126 The exception-id is a structure with the fields "message" and
127 "identifier". For example
128
129 try
130 error ("Octave:error-id", "error message");
131 catch myerr
132 printf ("identifier: %s\n", myerr.identifier);
133 printf ("message: %s\n", myerr.message);
134 end_try_catch
135
136 When classdef-style classes are added to Octave, the exception-id
137 will become an MException object.
138
139 ** Warning states may now be set temporarily, until the end of the
140 current function, using the syntax
141
142 warning STATE ID "local"
143
144 in which STATE may be "on", "off", or "error". Changes to warning
145 states that are set locally affect the current function and all
146 functions called from the current scope. The previous warning state
147 is restored on return from the current function. The "local"
148 option is ignored if used in the top-level workspace.
149
150 ** Warning IDs renamed:
151
152 Octave:array-as-scalar => Octave:array-to-scalar
153 Octave:array-as-vector => Octave:array-to-vector
154
155 ** 'emptymatch', 'noemptymatch' options added to regular expressions.
156
157 With this addition Octave now accepts the entire set of Matlab options
158 for regular expressions. 'noemptymatch' is the default, but 'emptymatch'
159 has certain uses where you need to match an assertion rather than actual
160 characters. For example,
161
162 regexprep ('World', '^', 'Hello ', 'emptymatch')
163 => Hello World
164
165 where the pattern is actually the assertion '^' or start-of-line.
166
167 ** For compatibility with Matlab, the regexp, regexpi, and regexprep
168 functions now process backslash escape sequences in single-quoted pattern
169 strings. In addition, the regexprep function now processes backslash
170 escapes in single-quoted replacement strings. For example,
171
172 regexprep (str, '\t', '\n')
173
174 would search the variable str for a TAB character (escape sequence \t)
175 and replace it with a NEWLINE (escape sequence \n). Previously the
176 expression would have searched for a literal '\' followed by 't' and
177 replaced the two characters with the sequence '\', 'n'.
178
179 ** A TeX parser has been implemented for the FLTK toolkit and is the default
180 for any text object including titles and axis labels. The TeX parser is
181 supported only for display on a monitor, not for printing.
182
183 A quick summary of features:
184
185 Code Feature Example Comment
186 -----------------------------------------------------------------
187 _ subscript H_2O formula for water
188 ^ exponent y=x^2 formula for parabola
189 \char symbol \beta Greek symbol beta
190 \fontname font \fontname{Arial} set Arial font
191 \fontsize fontsize \fontsize{16} set fontsize 16
192 \color[rgb] fontcolor \color[rgb]{1 0 1} set magenta color
193 \bf bold \bfBold Text bold font
194 \it italic \itItalic Text italic font
195 \sl slanted \slOblique Text slanted font
196 \rm normal \bfBold\rmNormal normal font
197 {} group {\bf Bold}Normal group objects
198 e^{i*\pi} = -1 group objects
199
200 ** The m-files in the plot directory have been overhauled.
201
202 The plot functions now produce output that is nearly visually compatible
203 with Matlab. Plot performance has also increased, dramatically for some
204 functions such as comet and waitbar. Finally, the documentation for most
205 functions has been updated so it should be clearer both how to use a
206 function and when a function is appropriate.
207
208 ** The m-files in the image directory have been overhauled.
209
210 The principal benefit is that Octave will now no longer automatically
211 convert images stored with integers to doubles. Storing images as uint8
212 or uint16 requires only 1/8 or 1/4 the memory of an image stored using
213 doubles. For certain operations, such as fft2, the image must still be
214 converted to double in order to work.
215
216 Other changes include fixes to the way indexed images are read from a
217 colormap depending on the image class (integer images have a -1 offset to
218 the colormap row number).
219
220 ** The imread and imwrite functions have been completely rewritten.
221
222 The main changes relate to the alpha channel, support for reading and
223 writing of floating point images, implemented writing of indexed images,
224 and appending images to multipage image files.
225
226 The issues that may arise due to backwards incompatibility are:
227
228 * imwrite no longer interprets a length of 2 or 4 in the third dimension
229 as grayscale or RGB with alpha channel (a length of 4 will be saved
230 as a CMYK image). Alpha channel must be passed as separate argument.
231
232 * imread will always return the colormap indexes when reading an indexed
233 image, even if the colormap is not requested as output.
234
235 * transparency values are now inverted from previous Octave versions
236 (0 is for completely transparent instead of completely opaque).
237
238 In addition, the function imformats has been implemented to expand
239 reading and writing of images of different formats through imread
240 and imwrite.
241
242 ** The colormap function now provides new options--"list", "register",
243 and "unregister"--to list all available colormap functions, and to
244 add or remove a function name from the list of known colormap
245 functions. Packages that implement extra colormaps should use these
246 commands with PKG_ADD and PKG_DEL statements.
247
248 ** strsplit has been modified to be compatible with Matlab. There
249 are two instances where backward compatibility is broken.
250
251 (1) Delimiters are now string vectors, not scalars.
252
253 Octave's legacy behavior
254
255 strsplit ("1 2, 3", ", ")
256 ans =
257 {
258 [1,1] = 1
259 [1,2] = 2
260 [1,3] =
261 [1,4] = 3
262 }
263
264 Matlab compatible behavior
265
266 strsplit ("1 2, 3", ", ")
267 ans =
268 {
269 [1,1] = 1 2
270 [1,2] = 3
271 }
272
273 (2) By default, Matlab treats consecutive delimiters as a single
274 delimiter. By default, Octave's legacy behavior was to return an
275 empty string for the part between the delmiters.
276
277 Where legacy behavior is desired, the call to strsplit() may be
278 replaced by ostrsplit(), which is Octave's original implementation of
279 strsplit().
280
281 ** The datevec function has been extended for better Matlab compatibility.
282 It now accepts string inputs in the following numerical formats: 12, 21,
283 22, 26, 29, 31. This is undocumented, but verifiable, Matlab behavior.
284 In addition, the default for formats which do not specify a date is
285 January 1st of the current year. The previous default was the current day,
286 month, and year. This may produce changes in existing scripts.
287
288 ** The error function and its derivatives has been extended to accept complex
289 arguments. The following functions now accept complex inputs:
290
291 erf erfc erfcx
292
293 In addition two new error functions erfi (imaginary error function) and
294 dawson (scaled imaginary error function) have been added.
295
296 ** The glpk function has been modified to reflect changes in the GLPK
297 library. The "round" and "itcnt" options have been removed. The
298 "relax" option has been replaced by the "rtest" option. The numeric
299 values of error codes and of some options have also changed.
300
301 ** The kurtosis function has changed definition to be compatible with
302 Matlab. It now returns the base kurtosis instead of the "excess kurtosis".
303 The old behavior can be had by changing scripts to normalize with -3.
304
305 "excess kurtosis" = kurtosis (x) - 3
306
307 ** The moment function has changed definition to be compatible with
308 Matlab. It now returns the central moment instead of the raw moment.
309 The old behavior can be had by passing the type argument "r" for raw.
310
311 ** The default name of the Octave crash dump file is now
312 "octave-workspace" instead of "octave-core". The exact name can
313 always be customized with the octave_core_file_name function.
314
315 ** A citation command has been added to display information on how to
316 cite Octave and packages in publications. The package system will
317 look for and install CITATION files from packages.
318
319 ** The java package from Octave Forge is now part of core Octave. The
320 following new functions are available for interacting with Java
321 directly from Octave:
322
323 debug_java java_matrix_autoconversion
324 isjava java_unsigned_autoconversion
325 java2mat javaaddpath
326 javaArray javaclasspath
327 javaMethod javamem
328 javaObject javarmpath
329 usejava
330
331 In addition, the following functions that use the Java interface
332 are now available (provided that Octave is compiled with support for
333 Java enabled):
334
335 helpdlg listdlg questdlg
336 inputdlg msgbox warndlg
337
338 ** Other new functions added in 3.8.0:
339
340 atan2d erfi lines
341 base64_decode expint linsolve
342 base64_encode findfigs missing_component_hook
343 betaincinv flintmax polyeig
344 built_in_docstrings_file fminsearch prefdir
345 cmpermute gallery preferences
346 cmunique gco readline_re_read_init_file
347 colorcube hdl2struct readline_read_init_file
348 copyobj history_save rgbplot
349 dawson imformats save_default_options
350 dblist importdata shrinkfaces
351 desktop isaxes splinefit
352 doc_cache_create iscolormap stemleaf
353 ellipj isequaln strjoin
354 ellipke jit_debug struct2hdl
355 erfcinv jit_enable tetramesh
356 jit_startcnt waterfall
357
358 ** Deprecated functions.
359
360 The following functions were deprecated in Octave 3.4 and have been
361 removed from Octave 3.8.
362
363 autocor dispatch is_global setstr
364 autocov fstat krylovb strerror
365 betai gammai perror values
366 cellidx glpkmex replot
367 cquad is_duplicate_entry saveimage
368
369 The following functions have been deprecated in Octave 3.8 and will
370 be removed from Octave 3.12 (or whatever version is the second major
371 release after 3.8):
372
373 default_save_options java_new
374 gen_doc_cache java_set
375 interp1q java_unsigned_conversion
376 isequalwithequalnans javafields
377 java_convert_matrix javamethods
378 java_debug re_read_readline_init_file
379 java_get read_readline_init_file
380 java_invoke saving_history
381
382
383 The following keywords have been deprecated in Octave 3.8 and will
384 be removed from Octave 3.12 (or whatever version is the second major
385 release after 3.8):
386
387 static
388
389 The following configuration variables have been deprecated in Octave
390 3.8 and will be removed from Octave 3.12 (or whatever version is the
391 second major release after 3.8):
392
393 CC_VERSION (now GCC_VERSION)
394 CXX_VERSION (now GXX_VERSION)
395
396 The internal class Octave_map has been deprecated in Octave 3.8 and
397 will be removed from Octave 3.12 (or whatever version is the second
398 major release after 3.8). Replacement classes are octave_map
399 (struct array) or octave_scalar_map for a single structure.
400 </pre>