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