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