Please note that the recommended version of Scilab is 2025.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
, ismatrix
consolebox
, double
, isoview
, pixel_drawing_mode
, householder
, or
, |,||
,
and
, &,&&
, format
, typeof
, brackets
, setlanguage
, sleep
, isinf
,
bitor
, bitxor
, bitand
, macr2tree
, geomean
, clf
, getPreferencesValue
else
, elseif
, end
, try
, sciargs
, global
, halt
, empty
, power
, numderivative
pixel_drawing_mode
, show_window
, twinkle
, uigetcolor
, winsid
, xdel
, xgrid
, xname
, xnumb
repmat
, sign
, nthroot
, lstsize
, cell2mat
, cellstr
, ind2sub
, sub2ind
, and
, or
, unwrap
, members
Convolution - 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
, geomean
strtod
()
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 hypermat
1, 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 lqg
S=[]
, 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.mrfit
did not allow a fourth parameter as shown in the help page.%i(1,1)=1
sci2exp
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).a
sp
, 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 while
loop 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 uint64
resize_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_list
fullpath(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 NaN
s 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 ./ M
tlist
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.scinotes
get_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 0
and
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.