Welcome to Scilab 6 =================== This file details the changes between Scilab 6.0.0-beta-1, this release, and the previous release 5.5.2. For changelogs with earlier release, please see Scilab 5.5.2. This file is intended for the specific needs of advanced users, and describes: - New and modified features, in each module, - Changes in functions (removed/added/modified), - Changes in the language, - Bug fixes. This changelog is most likely incomplete, as an enormous amount of code has changed between 5.5.2 and 6. Please report any thing we could have missed, on the mailing lists or on http://bugzilla.scilab.org, and we will correct it before the final Scilab 6.0.0 release. Main new Features ================= For high-level description of the main new features of this release, please consult the file modules/helptools/data/pages/homepage-en_US.html. It is also available as the "What's new" page of the help, by simply typing "help" in Scilab console. In summary, the main new features are: * New language parser and interpreter, ensuring: - Support for bigger data sets: dynamic memory usage. No need for "stacksize" anymore. - Xcos also uses the new re-written Scilab engine. * New code productivity features: full-featured debugger, profiler and coverage tool, and "lint"-like commands. * Newsfeed, providing a continuous feed of news, tips, and general communication from the community and from Scilab Enterprises. * Licensing change: Scilab is now released under the terms of the GNU General Public License (GPL) v2.0 (but continues to be available under the terms of the CeCILL v2.1). API modification ================ * (new in 6.0.0 beta-1) A new set of C APIs to write C or C++ extensions (toolboxes) to Scilab. It allows defining native functions (commonly called “gateways”), getting input parameters for such functions, setting return parameters, accessing local variables, using common helper functions for accessing environment information (such as warning level), generate errors... It also includes ways to overload existing Scilab functions to support additional parameter types (see scilab_overload). Finally, you can call back Scilab functions (macros and built-in functions) from your gateway (see scilab_call). * User-defined functions written in C (gateways) must now use the "pvApiCtx" name for their second parameter, for example: int sci_Levkov(char *fname, void* pvApiCtx) instead of any "unsigned long l". This is now requires for some macros, such as Rhs(), to work. (Although not strictly an API change, it may require gateway code to be modified). Other feature changes ===================== * Valgrind error detection added to test_run (on Linux only) * Addition or subtraction with an empty matrix now return an empty matrix. * SSE2, Streaming SIMD Extensions 2 support is now mandatory to run Scilab on Linux i686. * A call stack limit has been introduced. Default maximum depth is setup to 1000 andcan be changed by new function recursionlimit or by preferences interface. * The floating point exception mode (ieee) is now set to 2 by default: floating point exceptions now produce "Inf" or "Nan", and do not cause any error. The previous behavior can be recalled by simply calling: ieee(0) * Function without output argument cannot be call in assignation expression function foo() //... endfunction val = foo() //return error Other feature additions ======================= * Multiline blocs of comments /* ...\n ... \n ... */ are now possible. * scatter/scatter3 plot with different mark colors is now available. * parulacolormap is now available. * name2rgb can now handle a single string and a matrix of strings. * isoview, isoview on, isoview off, isoview(idGraphics, "on"|"off") are now supported * twinkle and twinkle(n) are now supported: by default, the current element gce() blinks. * householder() can now return the reflection matrix, and has a demo. * ndgrid() can now works with any types of homogeneous data * bench_run() can now return its results and/or record them in a file * typeof(.., "overload") allows now to get the overloading type-code of an object * sign() can now handle a sparse matrix. * sleep(..,'s') allows now to specify the duration in seconds. * deletefile can delete multiple files at once. Installation ============ * Under Windows, MKL packages are now included in Scilab installer and are not more downloaded anymore while installing Scilab. Compilation =========== * A C++11 compliant compiler is now needed. * Java minimal version switch to 1.8. * Ant minimal version switched to 1.9.0 (for Java 1.8 compatibility). * ecj minimal version switched to 4.4.0 (for Java 1.8 compatibility). * --without-xcos now only disable Xcos compilation. Xcos graphical interface is disabled using --without-gui. Dependencies ============= * Apache xmlgraphics stack upgraded to the latest versions : - xmlgraphics-commons 2.0.1 - Batik 1.8 - FOP 2.0 Packaging & Supported Operating Systems ======================================= * Scilab embedded JVM has been upgraded to Java 1.8. To run or compile Scilab 6.0.0 you need at least: - Windows: Windows 8 (Desktop) Windows 7 Windows Vista SP2 Windows Server 2008 R2 SP1 (64-bit) Windows Server 2012 (64-bit) - Mac OS X: Intel-based Mac running Mac OS X 10.8.3+, 10.9+ - Linux: Red Hat Enterprise Linux 5.5+, 6.x (32-bit), 6.x (64-bit), 7.x (64-bit) Oracle Linux 5.5+, 6.x (32-bit), 6.x (64-bit), 7.x (64-bit) Ubuntu Linux 12.04 LTS, 13.x Suse Linux Enterprise Server 10 SP2+, 11.x For more information, please consult: http://java.com/en/download/help/sysreq.xml Signal Processing ================== * amell function: - now checks its parameters are real numbers, - now throws an error if the second parameter is not a scalar. Input/Output File ================== * The use of I/O console is now allowed with the following functions: mget, mgetl, mgetstr, mput, mputl and mputstr. * mclearerr now returns a flag indicating the file identifier validity. * fileinfo can now take a row vector as input. * msprintf no more returns an error message when there are too many input arguments (more values that format needs). Data Structures ================ * cells and structs are now native types, hence improving performances. * cells: - insertion and extraction must be done via () or {}. - .dims and .entries fields have been removed, please use size and () instead. * struct - dims field has been removed, please use size instead. * hypermatrix: - hypermatrices are natively managed (without mlist overloading). - typeof function now returns real type like constant, string, ... instead of hypermat - type function returns real type like 1, 10, ... instead of 17 (mlist). - .dims and .entries fields have been removed, please use size and () instead. Syntax Modifications ===================== * Declaration of a number on two lines is no longer allowed: 1.. 2 * 1./M is now parsed as 1 ./ M instead of 1. / M * {} and [] are now distinct operators. {} are now used to build cells. * Declaring non-homogenous strings ("string' or 'string") is no more allowed. * New shortcut operators have been introduced: && and ||. * Syntax %i:10 is now deprecated (only real scalars can be used). * (a=b) executed like a == b is now deprecated and returns an error. * while/else control instruction is no more supported. Modified Functions =================== * exec: exec of macro executes the body in the current scope but the prototype must have zero input and output arguments. * error: an error number in input is deprecated. * impl: Recall impl with the same parameters as in its previous stop is now available. * ode: y0 is restricted to a column vector. * pppdiv: Return a scalar of type 'constant' when the rank is 0. * pdiv: Return a matrix of type 'constant' when all the rank are 0. * test_run can now take "[]" as argument to be used on console; for instance: test_run string [] no_check_ref * strange([]) now returns %nan instead of [], as all other functions for statistical dispersion * Writing string or string matrix in a file does not add blanck space before each value: write("TMPDIR/test", ["test", "sample"; "sample", "test"]) "-" + mgetl("TMPDIR/test") + "-" Obsolete functions or features ============================== * maxfiles function is now obsolete. * xpause will be removed from Scilab 6.1. Please use sleep(..) instead. * isoview(xmin,xmax,ymin,ymax) will be removed from Scilab 6.1. Please use isoview("on"), replot(..) instead. Removed Functions ================== * intersci has been removed. Please use swig instead. * numdiff has been removed. Please use numderivative instead. * derivative has been removed. Please use numderivative instead. * curblockc has been removed. Please use curblock instead. * extract_help_examples has been removed. (Undocumented and based on former help format). * Symbolic module functions have been removed: - addf - cmb_lin - ldivf - mulf - rdivf - solve - subf - trianfml - trisolve - block2exp * Functions based on former Scilab stack are removed: - comp - errcatch - iserror - fun2string - getvariablesonstack - gstacksize - macr2lst - stacksize - code2str - str2code. - -mem launching option (used to set stacksize at startup). Known issues ============= * This version will start in English by default. Bug Fixes ========= In 6.0.0: * Bug #6314 fixed - The identical code of %p_m_r() and %r_m_p() was not factorized * Bug #9456 fixed - bench_run did not work on a path or in a toolbox * Bug #12559 - Fixed some memory leaks in FFTW * Bug #12872 - help pages of else, elseif, end, try, sciargs, global, halt, empty and power were in wrong help sections * Bug #13465 fixed - The display of polyline .display_function and .display_function properties was not conventional * Bug #13468 fixed - Scilab hanged when incorrect format was used for file reading using mfscanf. * Bug #13725 fixed - xfpoly polygon filling would may fail for some cases * Bug #13769 fixed - t = "abc..//ghi" was parsed as a continued + comment * Bug #13810 fixed - householder(v, k*v) returned column of %nan. Input parameters were not checked. The Householder matrix could not be returned. Help pages were inaccurate and without examples. There was no householder() demo. * Bug #13839 fixed - sign() could not be used with sparse matrices * Bug #13869 fixed - bench_run with option nb_run=10 did not override the NB RUN tags * Bug #13873 fixed - %hm_stdev(H,idim>2) returned zeros(H) * Bug #13897 fixed - concatenating structures with same fields in mismatching orders failed * Bug #13939 fixed - in HTML help pages, itemizedlist