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