Mercurial > web-octave
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> |