Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
This file details the changes between Scilab 6.0.0 (this release), and the previous release 5.5.2. For changelogs of earlier releases, please see Scilab 5.5.2.
This file is intended for the specific needs of advanced users, and describes:
For high-level description of the main new features of this release, please
consult the embedded help. 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:
stacksize anymore.tbx_make() function is added to build a toolbox following the toolbox directory structure conventionhelp, etc, src and sci_gateway directories. These functions will do nothing (but warn the user) if they find no target to build:
tbx_builder_macros: compiles the .sci files present in macros/ directory into the toolbox library. If buildmacros.sce or builder.sce script in macros/ are present, executes them instead;tbx_builder_help: compiles the help for each language (la_LA) directories in help/. If builder_help script is present in help, executes it instead;tbx_build_loader: builds a default loader that mimics the skeleton .start files. If a .start file is found in etc/ builds a loader calling this script;tbx_builder_src: scans the subdirectories under src for builder files and executes themtbx_builder_gateway: scans the subdirectories under sci_gateway for builder files and executes themTo build Scilab from sources, or to build extensions code (Toolboxes):
--without-xcos now only disable Xcos compilation. Xcos graphical interface is disabled using --without-gui.Scilab embedded JVM has been upgraded to Java 1.8. To run or compile Scilab 6.0.0 you need at least:
Windows:
Mac OS X:
Linux:
For more information, please consult: What are the system requirements for Java?
SSE2, Streaming SIMD Extensions 2 support is now mandatory to run Scilab on Linux i686.
Some small changes have been done to the language syntax, aiming at more clarity and less ambiguity. Some changes are not compatible with 5.5; code written for Scilab 5.x has to be modified in order to work in Scilab 6.0.
See the wiki page on porting code from 5.5 to 6.0 for details and examples.
1.. \n 2./* ...\n ... \n ... */ are now possible.1./M is now parsed as 1 ./ M instead of 1. / M.(a=b) executed as a == b is now deprecated and returns an error.end instead of endfunction.{} and [] are now distinct operators. Matrices can no longer be defined usind {} operators.
These are reserved for cell definition.&& and || are new shortcut boolean AND and OR,
while & and | are element-wise operations and will not shortcut one of the operand.
Both shortcut and element-wise operators are evaluated from left to right.%i:10 is now deprecated (only real scalars can be used).else is no longer supported in a while ... end control instruction.A'(1, 2). function foo()
//...
endfunction
val = foo() // now returns an error
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.replot has been upgraded:
%inf now gets the position of the most marginal object,replot can now be used to reframe axes to all their contents,tigh_limits added,householder can now return the reflection matrix, and has a demo.ndgrid can now works with any types of homogeneous datapermute now supports arrays of rationals.bench_run can now return its results and/or record them in a filetypeof(.., "overload") allows now to get the overloading type-code of an objectsign can now handle a sparse matrix.sleep(..,'s') allows now to specify the duration in seconds.real, imag, conj and isreal now accept rational fractions.1000
and can be changed by recursionlimit or through the Preferences interface.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).z_component = 'on|off' is renamed to display_components = 'xyz'.
It is now possible to choose which components to display, and in which order.
The .z_component property will be ignored in former *.scg files.detached_position property is available to display the datatip away from but linked to
its anchor on the curve.Polyline.datatip_display_mode property now allows to display each datatip of the curve
only on mouseover its anchor or only on mouseclick.test_run (on Linux only).amell now:
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 does not return an error message anymore when there are too many
input arguments (more values that format needs).deletefile can delete multiple files at once.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.typeof(:) and typeof(n:$) now return "implicitlist" instead of respectively "constant" and "size implicit".linspace(a, b, n<=0) now returns [] instead of b.strange([]) now returns %nan instead of [], as all other functions for statistical dispersion.stdev(x, dir>ndims(x)) now yields an error instead of returning zeros(x).write: Writing string or string matrix in a file does not add blank space before each value.bitor, bitxor and bitand are upgraded:
int64 or uint64 encodings are now accepted.bit###(scalar, array) or bit###(array, scalar) are now accepted.bitxor is now vectorized and fast.MPI_Create_comm create a new communicator from MPI_COMM_WORLD using MPI world ranks.grand non-free fsultra generator was removed.rpoly algorithm was removed in favor of a C++11 implementationAxes.view=="2d", the rotation becomes impossible.Label -> Title to interactively set the title of any axes.getPreferencesValue can now read a tag having multiple occurrences, and accepts the path to a preferences file instead of its XML handle.stripblanks now supports an option to remove trailing or leading spaces or both.atomsSetConfig does not update cache.lqi function added to compute "linear quadratic integral compensator".File => Go to Favorite directory menu allows to go to a favorite directory selected
in a dynamical list set from Scinotes favorite and most recent directories.members, part, ode, ode_optional_output, ode_roots, plot2d, roots,
printf, sprintf, iconvert, stdev, xlabel, and_op, or_op, permute, tree2code, %helps,
scilab|scilex, flipdim, Matplot_properties, meshgrid, ismatrixconsolebox, double, isoview, pixel_drawing_mode, householder, or, |,||,
and, &,&&, format, typeof, brackets, setlanguage, sleep, isinf,
bitor, bitxor, bitand, macr2tree, geomean, clf, getPreferencesValueelse, elseif, end, try, sciargs, global, halt, empty, power, numderivativepixel_drawing_mode, show_window, twinkle, uigetcolor, winsid, xdel, xgrid, xname, xnumbrepmat, sign, nthroot, lstsize, cell2mat, cellstr, ind2sub, sub2ind, and, or, unwrap, membersConvolution - correlation subsection. wfir_gui, filt_sinc, hilb, fft2, fftshift,ifftshift, hilbert, cepstrum, conv, conv2, convol2d, xcor, corr, hank, mrfit, frfir sorted out in existing subsections.cell, cell2mat, cellstr, iscell, iscellstr, makecell, num2cell gathered.format, typeof, isoview, ndgrid, bench_run, consolebox, harmean, sleep, strtod, permute, geomeanstrtod() or {}..dims and .entries fields have been removed, please use size and () instead..dims field has been removed, please use size instead.mlist overloading).constant, string, ... instead of hypermat1, 10, ... instead of 17 (mlist)..dims and .entries fields have been removed, please use size and () instead.Optimal) for automatically finding the optimal route.INVBLK: add a divide by zero parameter to ignore the errorPRODUCT: add a divide by zero parameter to ignore the errorA 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 help scilab_overload). Finally, you can call back Scilab functions
(macros and built-in functions) from your gateway (see help scilab_call).
User-defined functions written in C or C++ (gateways) must now use a void* pvApiCtx name
as a second parameter instead of any unsigned long l. This is now required for some macros, such as Rhs, to work.
For example: use int sci_Levkov(char *fname, void* pvApiCtx) instead of int sci_Levkov(char *fname) or int sci_Levkov(char *fname, unsigned long l).
maxfiles is now obsolete.isoview(xmin,xmax,ymin,ymax) is deprecated. Please use isoview("on"), replot(..) instead.eval3d will be removed from Scilab 6.1. Please use ndgrid instead.strcmpi is deprecated. Please use strcmp(..,"i")instead.square will be removed from Scilab 6.1. Please use gcf().axes_size and replot instead.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.xpause has been removed. Please use sleep instead.xclear has been removed. Please use clf instead.fcontour2d has been removed. Please use contour2d instead.plot2d1 has been removed. Please use plot2d instead.lex_sort has been removed. Please use gsort(..,"lr") instead.gspec was obsolete already in Scilab 4 and is now removed. Please use spec instead.gschur was obsolete already in Scilab 4 and is now removed. Please use schur instead.havewindow has been removed. Please use getscilabmode()=="STD" insteadrafiter was obsolete since Scilab 5.1 and is now removed.jconvMatrixMethod was obsolete and is now removed. Please use jautoTranspose instead.fcontour was obsolete since Scilab 4 and has been removed. Please use contour instead.m_circle was obsolete since Scilab 5.2.0. It is removed. Please use hallchart instead.addf, cmb_lin, ldivf, mulf, rdivf, solve, subf, trianfml, trisolve and block2exp.comp, errcatch, iserror, fun2string, getvariablesonstack, gstacksize, macr2lst, stacksize, code2str and str2code.-mem launching option (used to set stacksize at startup).setbpt, delbpt, dispbpt. Please use debug instead.add_profiling, reset_profiling, remove_profiling, profile, showprofile, and plotprofile.comp and its associated type 11 have been removed. All functions will have type 13.readgateway has been removed.linspace(a, b, n<=0) returned b instead of []fchamp example and demo were unclear and badly renderedxset and xget in scripts, macros, help pages and tests were obsolete.axis_properties and axes_properties` help pageslqr, lqe, and lqgS=[], S($+1,:) = some_row inserted it in row#2 after a parasitic row#1.isempty returned %F on struct(), {} or list(,) and was not shortcutparallel_run help page was poorly formatedfindABCD help page failed.mrfitdid not allow a fourth parameter as shown in the help page.%i(1,1)=1sci2exp applied to lists, tlists or mlists having undefined fields yielded an error or a wrong result.p1./p2 with matrices of complex-encoded polynomials were not done.s.a=list(4,7), s.a was not equal to s(1).asp, distributive insertions like sp(1,:)=%t, sp(1,1:$)=%t or sp(:,:)=%t yielded an error.test_run applied the create_ref option even for tests having the <-- NO CHECK REF --> flag.isqualbitwise help page was inaccurate and badly locatedtest_run output did not clearly distinguish heading lines of modules and tests linesassert_computedigits returns too much digitspoint(no line), no symbol was shown in the legend.en_US version was sometimes ignoredfor h = H, .., end could not be used when H is a vector of graphic handlesexecstr interpreted ascii(0) to ascii(31) characters as the power ^ operator.CHAPTER file specifying the section title, this one was ignored.clf("reset") used on a docked figure resized and moved the whole docked block like the Scilab desktop.en_US and localized files was never sorted overall.figure.pixel_drawing_mode was out of work since Scilab 5.4%helps variable needed clarification.%onprompt() is defined, variables defined in any callback of a console's menu were not accessible in the console.optim's imp argument to "iprint".augment was wrong when flag2 was "i"l and b endian flags used with mget and mgeti were sticky.Max - .Min==1 prevented any multiple selection. The default value documented for uicontrol.relief was wrong.input or a halt instruction was being performed in a callback of an undockable figure.getd loading a script including a clear instruction yielded an error.help format claimed setting a number of digits instead of a number of characters.isdef(name, 'l') produced wrong output.dos called with a vector of OS instructions crashed Scilab.copy an axes into an uicontrol frame.Toolboxes menu dit not load properly not autoloaded ATOMS modules.messagebox crashed under Windows in 5.5 Scilab version and updated in version 6.< characters included in <screen> areas were not rendered in the help browser.tokens([]) yielded an error instead of returning [].p.a.h = 1; p.b.h = 3;, p(:).h crashed Scilab.warning with localization enabled some memory corruption.File menu.g_margin error-ed for double integrator.ltitr returned an incorrect xf output value.> and >= operators could not be used to compare encoded integers of mismatching inttypes.edit_curv failed opening due to a []+1 operation.dir displayed a []+".." warning when no subdirectory exists.xcosPalAdd did not work on Windows.abort used in a whileloop crashed Scilab.havewindow is removed but was still documented.grand(n, "markov", P, x0) did not return all outputs.geomean often overflowed for easily computable entries, and did not check input arguments.figure.figure_name property had no figure.name aliasisqual comparing two built-in functions yielded an error.pathconvert function without parameters crashed Scilab.find(a=b) crashed Scilab.csim failed when the system has no state.square was poor, clumsy and too specific. It is tagged as obsolete.fieldnames failed for empty structs.figure() were not checked.gettext or it alias _() were sometimes applied to broken literal strings*.scg file.pt_BR version had a wrong xml:lang="en" tag.<= and >= elementwise operators comparing 2 hypermatrices of decimal numbers or encoded integers were inverted.emptystr() was 40x slower than Scilab 5median(int8([10 60 80 100])) returned -58 instead of 70 due to overflow when interpolating (60+80)>128isinf returned %F for complex numbers with both real and imag infinite parts.isnan(complex(%inf, %inf)) returned %F while the phase is NaN.bitor, bitxor and bitand did not accept positive inputs of type int8, int16, int32, int64 or uint64resize_matrix(rand(2,3),[0 2]) did not return []. Usage of new sizes <0 to keep them unchanged was not documented.SCIHOME is not the working directory, SCIHOME\scilab.ini was executed twice.isequal always returned %T for builtin functionshelp color_listfullpath(TMPDIR+...) was bugged on MacOScolorbar did not display anything.Graphics => Complex functions opened an empty figure#0. Rotation of Im+Re parts were not synchronizedtest_run(.., "show_error") did not document "failed: Slave Scilab exited with error code #" errors.xstringb opened a default figure.|| misworked when LHS is %f or zeros. && misworked when LHS is %t or non-zerosxsegs used in logarithmic scale with coordinates <= 0 crashed Scilab.ind2sub([4,2], []) returned [4 0] instead of []..sod file crashed scilabE=['A' 'B' 'C' 'D' 'E'], E(0:0) crashed Scilabgetio function was missing. An error on the diary file opened has been corrected.mfprintf(fd, "%d", []) yielded an incorrect error message.AFFICH_m block was not rendered correctly.plot2d2 crashed Scilab.tag property was not documented in the Matplot_properties help page..tag value missed ".." delimitersgetlongpathname and getshortpathname did not force the file separator to "\"find did not accept encoded integersclf("reset") forgot resetting the immediate_drawing, resize, resizefcn, closerequestfcn, toolbar_visible, menubar_visible, infobar_visible, default_axes, and icon figure properties.getPreferencesValue could not read a tag having multiple occurrences and did not accept the path to the preferences file.asciimat(colNum) concatenated rows when colNum has a single column of ascii codes. With UTF-8 chars, asciimat(asciimat("àéïôù")) yielded an error.input(message) interpreted an entered x as a literal string, and exited with the new prompt on the same line.iw(1:9) and w(1:10) ode output parameters were not documented"position" property format was not accepted by figure despite what was said in helpscatter did not exist in Scilab.%p_m_r and %r_m_p was not factorizedquart used with only NaNs yielded an error instead of returning NaN.A'(1,2) and A.'(1,2) from a transposed matrix were not possibletypeof help page was poor, puzzled, and not up-to-date to Scilab 6:
uint64, int64, void, deletelist, implicitlist were missinghypermat and size implicit typeof weren't removedReframe to contents feature was missing on the graphics toolbar and Tools menu.bench_run did not work on a path or in a toolbox1./M was parsed as 1. / M instead of 1 ./ Mtlist with undefined fields can now be saved.string(complex) with real(complex)>0 did not remove the leading space replacing "+"error did not accept string matrix (non regression test added)..string when values were modified interactively in the table.scilab.quit was calledelse, elseif, end, try, sciargs, global, halt, empty and power were in wrong help sectionsintXX functions with %nan and %inf return wrong values..display_function and .display_function properties was not conventionalmfscanf.histc help page fixed to match the macro (by default, normalize the result).isdef crashed Scilab when called with a vector of strings as input in a function and after a declaration of variable.unique sometimes returned wrong index values.xfpoly polygon filling failed.printf, sprintf (en,ja): short descriptions and obsolete flags were missing.ss2ss with flag = 2 returned an error.lqg2stan returned wrong (inverted) values.t = "abc..//ghi" was parsed as a continued + commentsize with two input and output arguments did not return an error.grep with regexp option did not match the empty string properlyhouseholder(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.show_margins caused a scilab crashmean and sum returned wrong results for hypermatrices.ss2ss did not update the initial statesign could not be used with sparse matricespolarplot and plot2d were called with wrong strf value.plzr returned wrong results for discrete-time systems with a numeric time step.or operands in if tests.%l_isequal was useless in Scilab 6.bench_run with option nb_run=10 did not override the NB RUN tagsunique (the indices returned were wrong)%hm_stdev(H,idim>2) returned zeros(H)datatipRemoveAll did not work.getd did not return loaded symbols in previous scope.simp did not set a rational denominator at 1 when numerator was equal to zero.scinotesget_function_path returned a path with a missing file separator.part(text, n:$) was very slow.hidden as a reserved keyword but it is not used.getscilabkeywords help page should be in the "Scilab keywords" section.typeof(:) and typeof(n:$) were not documented.r1==r2 and r1~=r2 might sometimes be wrong.aarch64 processor for some Linux distribution.<ul> were rendered as numbered oneshistplot was poortwinkle and twinkle(n) were not supported* was not managed in printf expressions.isoview(xmin, xmax, ymin, ymax) was unhandy.who_user returned wrong values.setdefaultlanguage did not set value correctly in Windows registry.gettext did not manage the added _W macro.editor was modal. It locked the console using an external editor.stripblanks did not allow to remove only leading spaces of a set of strings, or only trailing one. An option to do so was added.getscilabkeywords was KO (+gateway what() added).macrofile display a debug message instead of macro prototype.head_comments did not take into account compiled functions.genlib did not rebuild bin file.schur implementation.ndgrid did not manage all homogeneous data type (booleans, integers, polynomials, rationals, strings, []).tag and .user_data properties were not displayed and not documented for light entity.genlib crashed when the file is locked by another program.pvApiCtx in gateway prototypes).MALLOC.h is now renamed to sci_malloc.h.break ( continue ) in if and outside of loop fixed.genlib hang if an unexpected endfunction occurs.[].grand(m,n) returned a wrong error and grand(m,n,p) called an overloading function instead of returning an error.file("close", file()) instructionfsolve became mandatorym=1; m()=1; made Scilab crash.atanh returns NaN for values with an absolute value greater than 1loadmatfile function.mscanf.genlib no more adds a separator at the end of the lib path if it is not given in the directory path.sci2exp macro was fixed to avoid "a+[] Warning". string(polynomials|rationals) had badly formated outputs and was not vectorized/*...*/ feature was not documented.lstcat of a string and a list did not produce consistent results.lsq crashed Scilab when Scilab version depended on MKL library.lib loading a Scilab 5 library did not give a proper error message.switch and otherwise keywords were no longer colorized.0*%i.real, imag, conj, isreal did not accept rationalsgcf().attribute=value lead to "Wrong insertion: function or macro are not expected".int64(2^63).mfscanf returned an empty matrix when datafile contained a header.Matplot crashed Scilab on boolean input.intg (or integrate) in a function that is being integrated failed.fscanfMat failed to read format %d, %i and %f.sqrt returned wrong dimension results on matrix with more than dimensions.dec2bin ( dec2base ) must show a better error message for too large values.1:245 created infinite loop.det returned an error when it is used with a singular matrix..rotation_angles property to a matrix of any size did not return error message.struct.sqrt did not work on hypermatrices (non regression test added).Ctrl-C can be used to stop writing control expression.spec leaked some memory.fftw without MKL leaked.conjgrad displayed an incorrect error message about number of arguments.cumsum's output was badly documented.find(x, nmax) returned [] (non regression test added).... at the end of linesscalar^matrix was identical to scalar.^matrix instead of being expm( log(scalar) * matrix )[].lsq crashed Scilab.plot2d crashed with multiple entries (non regression test added).Callback_type property has been added and set to 10.... /* a comment */ode Lotka demo had typo errorstypeof(var,"overload") was not documentedinput with a argument of 64 characters or more crashed Scilab.int64 and uint64 were not documented, and other help pages were not updated for them.double help page had irrelevant syntaxes and was poorsaxon9he.jar made scilab throw an XPathFactoryConfigurationException.|| and && operators was wrong.bench_run did not have a return value, export file was not configurablexpause was a duplicate of sleep. sleep did not propose "s" time unit.r+(-r) and r-r did not simplify the denominator to 1 in simp_mode(%t)acoth (which call atanh) crashed scilabPlotSparse did not work anymore.save(..) pointed a bad argument index.builder_help.sce of a toolbox ignored some existing language directoriesstrcat([]) returned an empty string instead of [].macr2tree crashed when passing a FieldExp.strange([]) returned [] instead of Nan as all other functions for statistical dispersion.* between polynomials and imaginary numbers was always returning 0and and or help pages were poor and inaccurate.consolebox help page shew wrong syntaxes and was poor.getd did not update already defined functions.^ was broken for sparse matrices.readgateway has been removed, use whereis instead.