comparison NEWS-3.4.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.4.3:
3 -----------------------------------------------------------
4
5 ** Octave 3.4.3 is a bug fixing release.
6
7 Summary of important user-visible changes for version 3.4.2:
8 -----------------------------------------------------------
9
10 ** Octave 3.2.4 fixes some minor installation problems that affected
11 version 3.4.1.
12
13 Summary of important user-visible changes for version 3.4.1:
14 -----------------------------------------------------------
15
16 ** Octave 3.4.1 is primarily a bug fixing release.
17
18 ** IMPORTANT note about binary incompatibility in this release:
19
20 Binary compatibility for all 3.4.x releases was originally planned,
21 but this is impossible for the 3.4.1 release due to a bug in the way
22 shared libraries were built in Octave 3.4.0. Because of this bug,
23 .oct files built for Octave 3.4.0 must be recompiled before they
24 will work with Octave 3.4.1.
25
26 Given that there would be binary incompatibilities with shared
27 libraries going from Octave 3.4.0 to 3.4.1, the following
28 incompatible changes were also made in this release:
29
30 * The Perl Compatible Regular Expression (PCRE) library is now
31 required to build Octave.
32
33 * Octave's libraries and .oct files are now installed in
34 subdirectories of $libdir instead of $libexecdir.
35
36 Any future Octave 3.4.x release versions should remain binary
37 compatible with Octave 3.4.1 as proper library versioning is now
38 being used as recommended by the libtool manual.
39
40 ** The following functions have been deprecated in Octave 3.4.1 and will
41 be removed from Octave 3.8 (or whatever version is the second major
42 release after 3.4):
43
44 cquad is_duplicate_entry perror strerror
45
46 ** The following functions are new in 3.4.1:
47
48 colstyle gmres iscolumn isrow mgorth nproc rectangle
49
50 ** The get_forge_pkg function is now private.
51
52 ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw
53 functions are now private.
54
55 ** The logistic_regression_derivatives and logistic_regression_likelihood
56 functions are now private.
57
58 ** ChangeLog files in the Octave sources are no longer maintained
59 by hand. Instead, there is a single ChangeLog file generated from
60 the Mercurial version control commit messages. Older ChangeLog
61 information can be found in the etc/OLD-ChangeLogs directory in the
62 source distribution.
63
64 Summary of important user-visible changes for version 3.4:
65 ---------------------------------------------------------
66
67 ** BLAS and LAPACK libraries are now required to build Octave. The
68 subset of the reference BLAS and LAPACK libraries has been removed
69 from the Octave sources.
70
71 ** The `lookup' function was extended to be more useful for
72 general-purpose binary searching. Using this improvement, the
73 ismember function was rewritten for significantly better
74 performance.
75
76 ** Real, integer and logical matrices, when used in indexing, will now
77 cache the internal index_vector value (zero-based indices) when
78 successfully used as indices, eliminating the conversion penalty for
79 subsequent indexing by the same matrix. In particular, this means it
80 is no longer needed to avoid repeated indexing by logical arrays
81 using find for performance reasons.
82
83 ** Logical matrices are now treated more efficiently when used as
84 indices. Octave will keep the index as a logical mask unless the
85 ratio of true elements is small enough, using a specialized
86 code. Previously, all logical matrices were always first converted
87 to index vectors. This results in savings in both memory and
88 computing time.
89
90 ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled
91 functions for better performance. These functions are now faster,
92 can deliver more economized results for ranges, and can reuse the
93 index cache mechanism described in previous paragraph.
94
95 ** The built-in function equivalents to associative operators (`plus',
96 `times', `mtimes', `and', and `or') have been extended to accept
97 multiple arguments. This is especially useful for summing
98 (multiplying, etc.) lists of objects (of possibly distinct types):
99
100 matrix_sum = plus (matrix_list{:});
101
102 ** An FTP object type based on libcurl has been implemented. These
103 objects allow ftp connections, downloads and uploads to be
104 managed. For example,
105
106 fp = ftp ("ftp.octave.org);
107 cd (fp, "gnu/octave");
108 mget (fp, "octave-3.2.3.tar.bz2");
109 close (fp);
110
111 ** The default behavior of `assert (observed, expected)' has been
112 relaxed to employ less strict checking that does not require the
113 internals of the values to match. This avoids previously valid
114 tests from breaking due to new internal classes introduced in future
115 Octave versions.
116
117 For instance, all of these assertions were true in Octave 3.0.x
118 but false in 3.2.x due to new optimizations and improvements:
119
120 assert (2*linspace (1, 5, 5), 2*(1:5))
121 assert (zeros (0, 0), [])
122 assert (2*ones (1, 5), (2) (ones (1,5)))
123
124 ** The behavior of library functions `ismatrix', `issquare', and
125 `issymmetric' has been changed for better consistency.
126
127 * The `ismatrix' function now returns true for all numeric,
128 logical and character 2-D or N-D matrices. Previously, `ismatrix'
129 returned false if the first or second dimension was zero.
130 Hence, `ismatrix ([])' was false,
131 while `ismatrix (zeros (1,2,0))' was true.
132
133 * The `issquare' function now returns a logical scalar, and is
134 equivalent to the expression
135
136 ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x)
137
138 The dimension is no longer returned. As a result, `issquare ([])'
139 now yields true.
140
141 * The `issymmetric' function now checks for symmetry instead of
142 Hermitianness. For the latter, ishermitian was created. Also,
143 logical scalar is returned rather than the dimension, so
144 `issymmetric ([])' is now true.
145
146 ** Function handles are now aware of overloaded functions. If a
147 function is overloaded, the handle determines at the time of its
148 reference which function to call. A non-overloaded version does not
149 need to exist.
150
151 ** Overloading functions for built-in classes (double, int8, cell,
152 etc.) is now compatible with Matlab.
153
154 ** Function handles can now be compared with the == and != operators,
155 as well as the `isequal' function.
156
157 ** Performance of concatenation (using []) and the functions `cat',
158 `horzcat', and `vertcat' has been improved for multidimensional
159 arrays.
160
161 ** The operation-assignment operators +=, -=, *= and /= now behave more
162 efficiently in certain cases. For instance, if M is a matrix and S a
163 scalar, then the statement
164
165 M += S;
166
167 will operate on M's data in-place if it is not shared by another
168 variable, usually increasing both time and memory efficiency.
169
170 Only selected common combinations are affected, namely:
171
172 matrix += matrix
173 matrix -= matrix
174 matrix .*= matrix
175 matrix ./= matrix
176
177 matrix += scalar
178 matrix -= scalar
179 matrix *= scalar
180 matrix /= scalar
181
182 logical matrix |= logical matrix
183 logical matrix &= logical matrix
184
185 where matrix and scalar belong to the same class. The left-hand
186 side must be a simple variable reference.
187
188 Moreover, when unary operators occur in expressions, Octave will
189 also try to do the operation in-place if it's argument is a
190 temporary expresssion.
191
192 ** The effect of comparison operators (<, >, <=, and >=) applied to
193 complex numbers has changed to be consistent with the strict
194 ordering defined by the `max', `min', and `sort' functions. More
195 specifically, complex numbers are compared by lexicographical
196 comparison of the pairs `[abs(z), arg(z)]'. Previously, only real
197 parts were compared; this can be trivially achieved by wrapping the
198 operands in real().
199
200 ** The automatic simplification of complex computation results has
201 changed. Octave will now simplify any complex number with a zero
202 imaginary part or any complex matrix with all elements having zero
203 imaginary part to a real value. Previously, this was done only for
204 positive zeros. Note that the behavior of the complex function is
205 unchanged and it still produces a complex value even if the
206 imaginary part is zero.
207
208 ** As a side effect of code refactoring in liboctave, the binary
209 logical operations are now more easily amenable to compiler
210 optimizations and are thus significantly faster.
211
212 ** Octave now allows user-defined `subsasgn' methods to optimize out
213 redundant copies. For more information, see the manual.
214
215 ** More efficient matrix division handling. Octave is now able to
216 handle the expressions
217
218 M' \ V
219 M.' \ V
220 V / M
221
222 (M is a matrix and V is a vector) more efficiently in certain cases.
223 In particular, if M is triangular, all three expressions will be
224 handled by a single call to xTRTRS (from LAPACK), with appropriate
225 flags. Previously, all three expressions required a physical
226 transpose of M.
227
228 ** More efficient handling of certain mixed real-complex matrix
229 operations. For instance, if RM is a real matrix and CM a complex
230 matrix,
231
232 RM * CM
233
234 can now be evaluated either as
235
236 complex (RM * real (CM), RM * imag (CM))
237
238 or as
239
240 complex (RM) * CM,
241
242 depending on the dimensions. The first form requires more
243 temporaries and copying, but halves the FLOP count, which normally
244 brings better performance if RM has enough rows. Previously, the
245 second form was always used.
246
247 Matrix division is similarly affected.
248
249 ** More efficient handling of triangular matrix factors returned from
250 factorizations. The functions for computing QR, LU and Cholesky
251 factorizations will now automatically return the triangular matrix
252 factors with proper internal matrix_type set, so that it won't need
253 to be computed when the matrix is used for division.
254
255 ** The built-in `sum' function now handles the non-native summation
256 (i.e., double precision sum of single or integer inputs) more
257 efficiently, avoiding a temporary conversion of the whole input
258 array to doubles. Further, `sum' can now accept an extra option
259 argument, using a compensated summation algorithm rather than a
260 straightforward sum, which significantly improves precision if lots
261 of cancellation occurs in the summation.
262
263 ** The built-in `bsxfun' function now uses optimized code for certain
264 cases where built-in operator handles are passed in. Namely, the
265 optimizations concern the operators `plus', `minus', `times',
266 `ldivide', `rdivide', `power', `and', `or' (for logical arrays),
267 the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the
268 functions `min' and `max'. Optimizations only apply when both
269 operands are of the same built-in class. Mixed real/complex and
270 single/double operations will first convert both operands to a
271 common type.
272
273 ** The `strfind' and `strrep' functions now have compiled
274 implementations, facilitating significantly more efficient searching
275 and replacing in strings, especially with longer patterns. The code
276 of `strcat' has been vectorized and is now much more efficient when
277 many strings are concatenated. The `strcmpi' and `strncmpi'
278 functions are now built-in functions, providing better performance.
279
280 ** Matlab-style ignoring input and output function arguments using
281 tilde (~) is now supported. Ignored output arguments may be
282 detected from a function using the built-in function `isargout'.
283 For more details, consult the manual.
284
285 ** The list datatype, deprecated since the introduction of cells, has
286 been removed.
287
288 ** The accumarray function has been optimized and is now significantly
289 faster in certain important cases.
290
291 ** The behavior of isreal and isnumeric functions was changed to be more
292 Matlab-compatible.
293
294 ** The integer math & conversion warnings (Octave:int-convert-nan,
295 Octave:int-convert-non-int-val, Octave:int-convert-overflow,
296 Octave:int-math-overflow) have been removed.
297
298 ** rem and mod are now built-in functions. They also handle integer
299 types efficiently using integer arithmetic.
300
301 ** Sparse indexing and indexed assignment has been mostly rewritten.
302 Since Octave uses compressed column storage for sparse matrices,
303 major attention is devoted to operations manipulating whole columns.
304 Such operations are now significantly faster, as well as some other
305 important cases.
306
307 Further, it is now possible to pre-allocate a sparse matrix and
308 subsequently fill it by assignments, provided they meet certain
309 conditions. For more information, consult the `spalloc' function,
310 which is no longer a mere dummy. Consequently, nzmax and nnz are no
311 longer always equal in Octave. Octave may also produce a matrix
312 with nnz < nzmax as a result of other operations, so you should
313 consistently use nnz unless you really want to use nzmax (i.e. the
314 space allocated for nonzero elements).
315
316 Sparse concatenation is also affected, and concatenating sparse
317 matrices, especially larger collections, is now significantly more
318 efficient. This applies to both the [] operator and the
319 cat/vertcat/horzcat functions.
320
321 ** It is now possible to optionally employ the xGESDD LAPACK drivers
322 for computing the singular value decomposition using svd(), instead
323 of the default xGESVD, using the configuration pseudo-variable
324 svd_driver. The xGESDD driver can be up to 6x times faster when
325 singular vectors are requested, but is reported to be somewhat less
326 robust on highly ill-conditioned matrices.
327
328 ** Configuration pseudo-variables, such as page_screen_output or
329 confirm_recursive_rmdir (or the above mentioned svd_driver), now
330 accept a "local" option as second argument, requesting the change
331 to be undone when the current function returns:
332
333 function [status, msg] = rm_rf (dir)
334 confirm_recursive_rmdir (false, "local");
335 [status, msg] = rmdir (dir, "s");
336 ...
337 endfunction
338
339 Upon return, confirm_recursive_rmdir will be restored to the value
340 it had on entry to the function, even if there were subsequent
341 changes to the variable in function rm_rf or any of the functions
342 it calls.
343
344 ** pkg now accepts a -forge option for downloading and installing
345 packages from Octave Forge automatically. For example,
346
347 pkg install -forge general
348
349 will automatically download the latest release of the general
350 package and attempt to install it. No automatic resolving of
351 dependencies is provided. Further,
352
353 pkg list -forge
354
355 can be used to list all available packages.
356
357 ** The internal data representation of structs has been completely
358 rewritten to make certain optimizations feasible. The field data
359 can now be shared between structs with equal keys but different
360 dimensions or values, making operations that preserve the fields
361 faster. Economized storage is now used for scalar structs (just
362 like most other scalars), making their usage more
363 memory-efficient. Certain array-like operations on structs
364 (concatenation, uniform cellfun, num2cell) have gained a
365 significant speed-up. Additionally, the octave_scalar_map class
366 now provides a simpler interface to work with scalar structs within
367 a C++ DLD function.
368
369 ** Two new formats are available for displaying numbers:
370
371 format short eng
372 format long eng
373
374 Both display numbers in engineering notation, i.e., mantissa +
375 exponent where the exponent is a multiple of 3.
376
377 ** The following functions are new in Octave 3.4:
378
379 accumdim erfcx nfields pqpnonneg uigetdir
380 bitpack fileread nth_element quadcc uigetfile
381 bitunpack fminbnd onCleanup randi uiputfile
382 blkmm fskipl pbaspect repelems uimenu
383 cbrt ifelse pie3 reset whitebg
384 curl ishermitian powerset rsf2csf
385 chop isindex ppder saveas
386 daspect luupdate ppint strread
387 divergence merge ppjumps textread
388
389 ** Using the image function to view images with external programs such
390 as display, xv, and xloadimage is no longer supported. The
391 image_viewer function has also been removed.
392
393 ** The behavior of struct assignments to non-struct values has been
394 changed. Previously, it was possible to overwrite an arbitrary
395 value:
396
397 a = 1;
398 a.x = 2;
399
400 This is no longer possible unless a is an empty matrix or cell
401 array.
402
403 ** The dlmread function has been extended to allow specifying a custom
404 value for empty fields.
405
406 ** The dlmread and dlmwrite functions have been modified to accept
407 file IDs (as returned by fopen) in addition to file names.
408
409 ** Octave can now optimize away the interpreter overhead of an
410 anonymous function handle, if the function simply calls another
411 function or handle with some of its parameters bound to certain
412 values. Example:
413
414 f = @(x) sum (x, 1);
415
416 When f is called, the call is forwarded to @sum with the constant 1
417 appended, and the anonymous function call does not occur on the
418 call stack.
419
420 ** Deprecated functions.
421
422 The following functions were deprecated in Octave 3.0 and have been
423 removed from Octave 3.4.
424
425 beta_cdf geometric_pdf pascal_pdf
426 beta_inv geometric_rnd pascal_rnd
427 beta_pdf hypergeometric_cdf poisson_cdf
428 beta_rnd hypergeometric_inv poisson_inv
429 binomial_cdf hypergeometric_pdf poisson_pdf
430 binomial_inv hypergeometric_rnd poisson_rnd
431 binomial_pdf intersection polyinteg
432 binomial_rnd is_bool setstr
433 chisquare_cdf is_complex struct_contains
434 chisquare_inv is_list struct_elements
435 chisquare_pdf is_matrix t_cdf
436 chisquare_rnd is_scalar t_inv
437 clearplot is_square t_pdf
438 clg is_stream t_rnd
439 com2str is_struct uniform_cdf
440 exponential_cdf is_symmetric uniform_inv
441 exponential_inv is_vector uniform_pdf
442 exponential_pdf isstr uniform_rnd
443 exponential_rnd lognormal_cdf weibcdf
444 f_cdf lognormal_inv weibinv
445 f_inv lognormal_pdf weibpdf
446 f_pdf lognormal_rnd weibrnd
447 f_rnd meshdom weibull_cdf
448 gamma_cdf normal_cdf weibull_inv
449 gamma_inv normal_inv weibull_pdf
450 gamma_pdf normal_pdf weibull_rnd
451 gamma_rnd normal_rnd wiener_rnd
452 geometric_cdf pascal_cdf
453 geometric_inv pascal_inv
454
455 The following functions were deprecated in Octave 3.2 and will
456 be removed from Octave 3.6 (or whatever version is the second major
457 release after 3.2):
458
459 create_set spcholinv splu
460 dmult spcumprod spmax
461 iscommand spcumsum spmin
462 israwcommand spdet spprod
463 lchol spdiag spqr
464 loadimage spfind spsum
465 mark_as_command sphcat spsumsq
466 mark_as_rawcommand spinv spvcat
467 spatan2 spkron str2mat
468 spchol splchol unmark_command
469 spchol2inv split unmark_rawcommand
470
471 The following functions have been deprecated in Octave 3.4 and will
472 be removed from Octave 3.8 (or whatever version is the second major
473 release after 3.4):
474
475 autocor cellidx gammai krylovb values
476 autocov dispatch glpkmex replot
477 betai fstat is_global saveimage
478
479 * For compatibility with Matlab, mu2lin (x) is now equivalent to
480 mu2lin (x, 0).
481
482 * The ARPACK library is now distributed with Octave so it no longer
483 needs to be available as an external dependency when building
484 Octave.
485 </pre>