This file details the changes between Scilab 2024.0.0 (this version), and the previous 2023.1.0 release. For changelogs of earlier releases, please see Scilab 2023.1.0.
Summary:
Please report anything we could have missed, on the mailing lists or the bug tracker.
For a 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 the Scilab console.
In summary, the main new features and additions are:
cvode(), arkode(), ida() and kinsol() from SUNDIALS.compress() and decompress() functions manage compressed archives (ZIP, tar.gz and tar.xz files).angle() computes the argument of complex numbers, in radians.arguments/end keywords added: validate function input arguments in a standard way (using standard error messages) and faster than using Scilab code (type, typeof, ...).
Some helpers have been added for this new block: mustBeSameType, mustBeEqualDimsOrScalar, ...
Some Scilab functions (modulo, pmodulo, ...) and modules (time, ...) have been updated to use this new block hence enhancing their performances.select/case supports multiple cases with cells._ the output value will not be assigned (e.g. [r1, _, r3,...] = func(...)).curl as default in atomsDownload() for all OS to handle local file repositories.url_encode() and url_decode() are added.http_* functions.errbar() function uses horizontal line marks.subplot() manages frame uicontrols.cvode(), arkode(), ida() and kinsol() through optional arguments (cvode() and ida() have specific sensitivity features).intl() input arguments.strsubst() manages group in replacement.string() accepts lists, cells and structs.All these functions and features will be removed in Scilab 2025.0.0 (October 2024):
splitURL(): Please use url_split() instead.getURL(): Please use http_get() instead.sound(): Please use playsnd() instead.The following functions have been removed:
dnaupd(), dneupd(), dsaupd(), dseupd(), znaupd(), zneupd(), obsolete since Scilab 2023.0.0. Please use eigs() instead.plotframe(), obsolete since Scilab 2023.0.0. Please use plot2d([], [], 0, "011", " ", [xmin ymin ymax ymax]) instead.svd(X, 0), obsolete since Scilab 2023.0.0. Please use svd(X, "e") instead.xget('fpf') and xset('fpf'), obsolete since Scilab 2023.0.0. Please use the fpf argument of contour(), contourf() and contour2d() instead.The following features and usages have been removed or disabled:
compress and decompress functions).32-bit platforms are not supported (no binary versions released).
Native macOS M1/arm64 build is provided (at least 2 x faster than Intel build using Rosetta emulation).
Scilab embedded JVM is Java 17 without a memory usage limit. Java heap size limit can still be set in Preferences (General / Java Heap Memory).
To run or compile Scilab, you might need:
select/case now supports grouped cases (e.g. {1, 2} matches 1or 2.).strsubst() did not handle group remplacement.unzip.exe, zip.exe and gzip.exe have been replaced by new compress and decompress functions.csvTextScan() returned unexpected results with blank space separators.atomsExtract() (unzip & untar) features are now available in other functions using new compress and decompress functions.bar() and barh() no more display useless and annoying warnings about data transpose.angle() function has been added for calculating the argument (angle) for a complex number.toolbox_skeleton no more contains a version requirement (considering it is given for the current Scilab version).light() made graphics very unstable (java.lang.NullPointerException).writeb(), write4b(), readb() and read4b() functions documentation has been removed (functions were removed in Scilab 6.0.0).edit style uicontrols.colormap property management (also occuring in addcolor() and color()).savematfile() did not support boolean/logical variables with version greater than 4.savematfile() and loadmatfile() corrupted UTF-8 character strings.loadmatfile() loaded logical arrays as uint8 instead of as booleans.savematfile() returned an error when used with cells or structures including some booleans.matfile_listvar() and loadmatfile() crashed Scilab when the file contains some structure saved in version lesser than 7.3.test_run("cacsd", "bug_13359") randomly failed (graphics related issues).polyline.display_function and created in a batch session opened with the -quit option was not rendered.int64, uint64) from literal inputs.loadmatfile() trimmed the value of a character string in a structure field to its first character with version greater than 6.Matlab sparse type (7) has been removed (was almost not used).sci2exp(complex([1 1], [%nan %inf])) was not correctly evaluable.tree_show(Xcos_diagram) crashed Scilab.http_get() did not work with long filenames.javax.media.opengl.GLException: Caught GLException: Not a GL2 implementation exception sometimes occured in Xcos.string(macro) and tree2code() returned wrong code for multiline arrays including some comments.$ failed when defining an empty variable using x=[], x(1:$)=1 and left x unchanged.scifunc_block_m block behavior changed since Scilab 6.0.0 (Scilab 5.x behavior restored).xcosDiagramToScilab() was deeply unstable and crashed Scilab.block.z and block.oz variables could not be updated at simulation flag 2.frame uicontrol.start:step:stop sometimes exceeded the stop limit.deletefile() instruction.slint() is now applicable to any file extension.string() output was broken for structs, lists or cells.NOR_Gate.zcos Xcos demonstration failed to simulate.tree_show() now manages visualization of heterogenous object leaves.urlencode() & urldecode() functions have been added.scilab_macros.txt and scilab_primitives.txt files contents are now sorted and files are no more part of Scilab source tree.slint() now focuses on code maintenance and actual errors by default (instead of on code style).L = list(mode, lines), L(2)() returned an error instead of running lines().macro as a builtin and failed to report the erroneous line.test_run("ast", "bug_15701") failed on new macOS build.std::unary_function and std::binary_function).arl2() documentation example did not work.cdfnor() crashed Scilab macOS/arm64 build.if/for/while/select was still documented but the limit no longer existed since Scilab 6.0.0.config.sub was outdated.ilib_build().xlabel() web help page contained references to zlabel() in its title.http_*() functions now manage cookies.write() did not write text-content to the file.SCI/modules/sparse/src/c/lu.c file did not compile when using recent versions of clang.http_get() was extremely slow when no filename argument was provided.pause mode in ode.iconv (dependency of libarchive.xsave() on closing specific bar() figure.checkNamedArguments() wrongly listed varargout.