Fact-checked by Grok 2 weeks ago

Scilab

Scilab is a package for numerical computation, providing a and a powerful environment for and scientific applications. It includes hundreds of mathematical functions, advanced structures (such as lists, polynomials, and sparse matrices), and capabilities for and graphics, simulation, optimization, statistics, control systems, , and application development. Scilab supports cross-platform operation on Windows, macOS, and , and is licensed under the GNU License version 2.0, allowing users to freely use, modify, and distribute it. The origins of Scilab trace back to the 1980s at the French National Institute for Research in and (INRIA), where it evolved from Blaise, a computer-aided design software developed by François Delebecque and Serge Steer. By 1984, it had become Basile, distributed by the INRIA startup Simulog, before being renamed Scilab in the early 1990s and released as on January 2, 1994, with version 1.1. Development continued under INRIA's Scilab Group until 2002, reaching version 2.7, after which the INRIA-formed Scilab Consortium (2003) and later organizations like Digiteo (2008), Scilab Enterprises (2010), (2017), and (2022) took over stewardship. As of November 2025, the latest stable release is Scilab 2026.0.0, released on October 16, 2025. Scilab's core strengths lie in its rich ecosystem of toolboxes and modules, including Xcos for modeling and simulating dynamic systems, and its interoperability with languages like C, C++, Fortran, Java, and Python. It serves diverse domains such as aeronautics, automotive, energy, defense, finance, and transport, supporting tasks from data analysis and algorithm prototyping to industrial simulations. Maintained by a dedicated team at Dassault Systèmes with contributions from a global community, Scilab sees approximately 100,000 downloads per month and is hosted on GitLab for collaborative development, including rigorous testing with over 1,300 unit tests and 1,900 non-regression tests.

Fundamentals

Definition and Purpose

Scilab is a package designed for numerical computation, , and scientific visualization, providing a powerful computing environment for engineering and scientific applications. It functions as an alternative to proprietary tools like , offering similar capabilities in a cost-free format. The primary purposes of Scilab include facilitating simulations, supporting research, and enabling applications across fields such as , , and . These uses encompass mathematical modeling, , , and tasks essential to these domains. At its core, Scilab features a with interpreted execution, emphasizing matrix-oriented operations where matrices serve as the central . It includes hundreds of built-in mathematical functions to handle a wide range of numerical tasks efficiently. Scilab targets students, researchers, engineers, and scientists who require accessible, cross-platform solutions for computational needs without licensing costs. Its availability on Windows, , and macOS ensures broad usability in educational, research, and professional settings.

Licensing and Availability

Scilab is released under the GNU General Public License version 2.0 (GPL v2.0), a license that grants users the freedom to run the software for any purpose, study and modify its , and redistribute it either in original or modified form, provided that derivatives are licensed under compatible terms. This licensing model supports both academic and commercial applications, enabling integration into proprietary projects as long as the Scilab core remains open. Previously distributed under the CeCILL license—which is explicitly compatible with the GPL—the shift to GPL v2.0 in version 6.0.0 aligned Scilab more closely with international open-source standards while preserving its permissive yet reciprocal nature. As an open-source initiative, Scilab's complete source code is hosted on GitLab, facilitating inspection, customization, and collaborative development by a worldwide community of contributors, including engineers, scientists, and volunteers who enhance its functionality through pull requests and issue tracking. This model promotes transparency and ongoing improvement without restricting access. Scilab offers broad cross-platform compatibility, running natively on Windows, Linux, and macOS systems, with explicit support for Apple Silicon (ARM64) processors on macOS to ensure performance on modern Apple hardware. Pre-compiled binaries for these platforms are freely downloadable from the official Scilab website, while the source code allows users to build custom versions tailored to specific environments or architectures. Distribution occurs primarily through official releases on Scilab.org, where stable versions are made available at no cost to individuals and organizations alike, alongside integration with system package managers such as APT for - and Ubuntu-based distributions and Homebrew for macOS, streamlining installation without additional fees or subscriptions.

Language and Programming

Syntax Basics

Scilab is an interpreted , allowing users to execute code directly without . It supports execution through an interactive console for command input and output, a for , and script files saved with extensions such as .sce for executable scripts or .sci for libraries, which can be loaded using the exec command. Variables in Scilab are assigned using the equals sign (=), with no explicit type declarations required due to its dynamic typing system. Identifiers are case-sensitive, meaning x and X are treated as distinct variables; valid names begin with a letter or certain special characters like %, _, #, !, ?, $, or ., followed by letters, digits, or underscores. For example:
x = 5;  // Assigns [integer](/page/Integer) 5 to x
pi_val = %pi;  // Assigns pi [constant](/page/Constant) to pi_val
This assignment syntax supports a range of , from scalars to matrices, emphasizing Scilab's focus on numerical computations. Control structures in Scilab enable conditional execution and looping, following a syntax that uses keywords like if, then, else, end for conditionals, and for, while for iterations. The if-then-else construct evaluates a logical expression and executes statements accordingly:
if x > 0 then
    disp("Positive value");
else
    disp("Non-positive value");
end
For loops iterate over a specified range or array columns:
for i = 1:5
    disp(i);
end
While loops continue execution while a condition holds true:
count = 0;
while count < 3
    count = count + 1;
    disp(count);
end
Switch-like branching uses the select statement for multi-case decisions:
select day
case 1 then disp("[Monday](/page/Monday)");
case 7 then disp("[Sunday](/page/Sunday)");
else disp("Weekday");
end
These structures promote straightforward conditional and repetitive programming, similar to other matrix-oriented languages. Functions are defined using the function keyword, specifying input and output parameters in the header, with the body enclosed by endfunction. A basic example defines a function to compute the square of an input:
function y = [square](/page/Function)(x)
    y = x^2;
endfunction
It can be called as result = [square](/page/Function)(4), returning 16; multiple outputs use brackets like function [y1, y2] = [func](/page/Function)(x1, x2). Parameters are passed by value, and functions can be defined inline, in scripts, or as library files. Error handling in Scilab employs try-catch blocks to manage runtime errors gracefully, executing alternative code if an exception occurs. The syntax is:
try
    risky_operation();
catch
    disp("An error occurred");
end
For debugging, the who command lists all variables in the current workspace, aiding inspection:
who
This outputs variable names, types, and sizes, facilitating code verification without halting execution.

Data Types and Structures

Scilab supports a range of primitive data types designed for numerical and scientific , including real and scalars (type 1), which are stored as double-precision floating-point numbers by default. Booleans (type 4) represent true (%T) or false (%F) values, while strings () handle text data enclosed in double quotes. Integer types (type 8) include int8, int16, int32, and int64 for fixed-precision arithmetic. Scilab is dynamically typed, enabling automatic type promotion during operations, such as converting integers to doubles in mixed arithmetic expressions. The primary in Scilab is the n-dimensional , or hypermatrix, which forms the foundation for vectorized computations and supports real or entries. are created using bracket notation, as in A = [1 2; 3 4] for a 2x2 , or via specialized functions like zeros(m, n) for an m-by-n of zeros and eye(m) for an m-by-m . These structures are homogeneous, meaning all elements share the same type, and they enable efficient storage of multidimensional without explicit dimension declarations. Advanced structures extend Scilab's capabilities for specialized applications. Polynomials (type 2) represent univariate expressions with real or complex coefficients, created using poly([coefficients], "variable"), such as p = poly([1 -2 1], "z") for z^2 - 2z + 1. Rationals, quotients of polynomials, are implemented as typed s (tlist) with numerator, denominator, and fields, formed via r = 1 / poly([1 2], "s"). (type 15) store heterogeneous objects in an ordered sequence, initialized with list(item1, item2), allowing nested collections like L = list(1, "text", [1 2]). Cells provide multi-indexed heterogeneous storage similar to , created as c = cell(2, 3) and accessed via c(1,1).value = 42. Matrix-oriented (mlists, type 17) and typed (tlists, type 16) support user-defined behaviors through overloading. Sparse matrices (type 5 for real/complex, type 6 for ) efficiently store non-zero elements, constructed with sp = sparse(i, j, v) where i and j are row/column indices and v are values. Common operations on these structures include via cat(dim, A, B) or notation like [A B] for horizontal joining and [A; B] for vertical, enabling flexible assembly of larger arrays. Slicing extracts subsets, such as A(2:4, 1) for rows 2 to 4 of column 1, or A(:) to flatten into a . functions like int32(A) for casting, double(p) for polynomials to coefficients, and string(x) for textual representation facilitate . These operations underpin numerical computations by organizing data for efficient processing. Memory management in Scilab relies on automatic garbage collection to reclaim unused objects, with no user-exposed controls for the process. Variables reside in a dynamic workspace , adjustable via stacksize(n) to allocate more (default around 40 MB, up to system limits). The clear command removes variables to free space explicitly, while save(filename, varlist) persists data to files in .sav or .sod format, and load(filename) restores them.

Core Features

Numerical Computation

Scilab provides robust built-in support for numerical computations, enabling efficient handling of mathematical operations on scalars, vectors, and matrices. These capabilities form the foundation of its role in scientific and applications, leveraging vectorized operations for performance on arrays without explicit loops. Core numerical features include linear routines, elementary mathematical functions, basic optimization and statistical tools, solvers for differential equations, and specialized algorithms for and data generation.

Linear Algebra

Scilab's linear algebra module supports essential operations, such as using the * , which computes the product of two matrices A and B where the number of columns in A matches the number of rows in B, resulting in a of dimensions rows(A) by columns(B). For example, C = A * B performs standard . inversion is handled by the inv() , which computes the inverse of a square X, issuing a warning if X is ill-conditioned or nearly singular; it uses internally for . Eigenvalue computation is available via the spec() function, which returns the eigenvalues of a square matrix A as a vector; an optional second output provides the diagonal matrix of eigenvalues, and a third output yields the eigenvectors through right multiplication. For solving linear systems, linsolve() addresses the equation A*x + b = 0, returning a particular solution x0 and the nullspace kernel of A, allowing general solutions as x = x0 + kernel * w for arbitrary w; it handles underdetermined, overdetermined, and singular systems efficiently. These functions support real and complex matrices, with sparse matrix compatibility in many cases.

Elementary Functions

Scilab includes a comprehensive set of elementary functions that operate element-wise on arrays, promoting vectorized computations for efficiency. Functions such as exp(X) compute the exponential e^X for each element in X, whether scalar, vector, or matrix, supporting both real and complex inputs; similarly, log(X) yields the natural logarithm, and sin(X) the sine, all applying broadcast rules for array compatibility. This vectorization allows seamless application to multidimensional data, as in exp([1 2; 3 4]) producing a matrix of individual exponentials. Such operations underpin numerical simulations and data transformations in Scilab scripts.

Optimization and Statistics

Basic optimization in Scilab is facilitated by functions like fminsearch(), which minimizes an unconstrained multivariable function using the Nelder-Mead , requiring no derivatives; it starts from an initial guess x0 and iterates until based on tolerances for function value and step size, with defaults of 1e-4. Statistical computations include mean(X) for the along specified dimensions or overall, handling real/complex and returning for invalid inputs, and stdev(X) for the standard deviation, computed as the of variance. For visualization in statistics, histplot() generates histograms from a , dividing into n classes or user-specified bins, with optional to integrate to 1 and support for frequency polygons. These tools enable quick analysis of datasets without external libraries.

Differential Equations

Scilab solves ordinary differential equations (ODEs) primarily through the ode() function, which integrates dy/dt = f(t, y) from initial time t0 with y(t0) = y0 to output times t, using interfaces to robust solvers like ODEPACK. It supports explicit systems with variable-step methods, including Runge-Kutta orders 4 ("rk") or 4-5 ("rkf" for embedded error control), Adams for non-stiff problems, and for stiff ones; the default "lsoda" switches adaptively. Tolerances (relative rtol=1e-5, absolute atol=1e-7) and optional Jacobians enhance accuracy for nonlinear or stiff equations, with matrix ODEs handled via . For instance:
y = ode(y0, t0, t, f)
where f is a user-defined function, computes solutions at specified t points.

Specific Algorithms

Specialized numerical algorithms in Scilab include the via fft(A), which computes the along specified dimensions for vectors, matrices, or hypermatrices, using the FFTW3 library for optimized performance; the inverse is obtained with ifft() or by setting the sign to +1. is supported by interp(), which evaluates cubic splines fitted to data points (x, y) at new points xp, returning the function value and up to third derivatives, with options for boundary conditions like or periodic extrapolation. Random number generation uses grand(m, n, "dist", params), producing m-by-n arrays from distributions such as uniform, (e.g., "nor", [mean](/page/Mean), std), Poisson, or gamma, with generator options like Mersenne-Twister for reproducibility via state control. These algorithms facilitate , data fitting, and stochastic modeling in computational workflows.

Graphics and Visualization

Scilab provides a comprehensive graphics subsystem for creating 2D and 3D visualizations of numerical data, enabling users to represent computational results through plots, surfaces, and interactive elements. This system supports both basic and advanced plotting functions, allowing customization of axes, colors, and layouts to facilitate data analysis and presentation. Basic 2D plotting is achieved using the plot2d() function, which draws piecewise linear curves from vector or matrix inputs, handling NaN values and infinite points appropriately. For instance, plot2d(x, y) plots ordinates y against abscissae x, where x defaults to 1:length(y) if omitted, and multiple curves can be displayed simultaneously by providing matrix y. In 3D, plot3d(x, y, z) generates surface plots from matrices representing parametric data or facets, with default observation angles of 45° azimuth and 35° elevation. Customization options include setting plot bounds via the rect argument in plot2d() or ebox in plot3d(), and adjusting scales with logflag for logarithmic axes. Titles, axis labels, and legends enhance readability; xtitle(title, x_label, y_label, z_label) adds these elements to plots, supporting LaTeX or MathML for complex expressions since Scilab 5.2. Legends are created post-plotting with legend(strings, pos), where strings is a vector of curve labels and pos specifies placement such as "in_upper_right". Axis controls like tick intervals are managed through the nax argument in plot2d() or properties of the axes handle obtained via gca(). Advanced graphics include contour(x, y, z, nz) for level curves on surfaces, where nz defines the number or values of contours, displayed in modes such as on the surface or a . Parametric curves are plotted in using param3d(x, y, z), tracing points defined by equal-length vectors with customizable viewing angles and line styles via the returned polyline handle. For histograms, hist3d() represents 2D histograms as surfaces, associating values to intervals in x and y bins, though noted as obsolete in versions after Scilab 6.1 with planned redefinition. Handle-based graphics allow interactive manipulation; figures are created with figure(num), returning a handle for setting properties like docking or toolbars, and enabling additions such as text uicontrols at specified positions. As of Scilab 2025.1.0, the new "Browser" uicontrol allows embedding web content (/) for advanced interactive GUIs. Color maps are visualized using Matplot(a), which renders a as a color plot based on the current colormap, mapping integer values to indices for RGB or RGBA displays. Export options include xs2bmp(win_num, file_name) to save figures as files, with similar functions like xs2gif() for format. Animations and interactivity are supported through comet3d(x, y, z), which traces 3D trajectories with a comet-like head, body, and tail, using a leading fraction Lf (default 0.1) to control the visible trace length. Dynamic plots integrate with GUIs via uicontrol() objects, such as sliders or buttons in a figure, whose callbacks update plot parameters like scaling in real-time. Data for visualization is imported from files using read(file, m, n), which parses comma-separated numerical values into matrices assuming free format, or directly from existing matrices generated by computations. Scaling and axis adjustments ensure accurate representation, often combined with numerical outputs for immediate plotting.

Modeling and Simulation

Xcos serves as Scilab's primary tool for graphical , providing a block-diagram akin to for constructing and analyzing hybrid dynamical systems that combine continuous and discrete time domains. This capability allows users to design models visually, compile them, and simulate behaviors without writing extensive code, making it suitable for applications requiring dynamic system analysis. At its core, Xcos features palettes that organize blocks into categories such as sources (e.g., constant or step inputs), sinks (e.g., output displays), and mathematical operations (e.g., or functions), which users drag and drop onto a . These blocks are interconnected via graphical links to form data flow diagrams, while solvers—either fixed-step for uniform time increments or variable-step for adaptive precision—handle the during simulation. The system integrates with Scilab's numerical solvers to process these models efficiently. The in Xcos begins with building the model by assembling blocks and configuring their parameters, such as initial conditions or transfer functions, through intuitive dialog interfaces. Once set, users initiate the simulation via a , monitoring progress in , and subsequently analyze results using built-in scopes that plot variables like time-series data for validation and insight. This process supports iterative refinement, enabling quick adjustments to model parameters for testing scenarios. Xcos excels in domains including control systems for feedback loop design, signal processing for filter and transformation modeling, and physical systems like mechanics or hydraulics through specialized block libraries. It accommodates event handling for discrete events within continuous simulations and state-space representations for linear system analysis, facilitating comprehensive hybrid modeling. For deployment beyond simulation, Xcos enables export and , particularly producing code from models to implement simulations on embedded systems, often via integrated modules like the Xcos Code Generator. This feature requires a compatible C compiler and supports real-time execution on hardware, bridging graphical design with practical engineering implementation.

Toolboxes and Extensions

Built-in Toolboxes

Scilab features a collection of built-in modules that extend its core numerical computing capabilities to specialized domains such as , optimization, , and systems design. These modules are integral components of every official Scilab installation, automatically available upon startup, and can be verified using the getmodules() function, which returns a list of installed modules including the essential "core" module and domain-specific ones like "signal_processing," "optimization," "statistics," and "cacsd." The ATOMS (Automatic TOolboxes Management for Scilab) module serves as the built-in package manager, enabling users to discover, install, and load external extensions while ensuring compatibility with Scilab's ecosystem; for instance, external toolboxes can be installed via atomsInstall("toolbox_name") and loaded with atomsLoad("toolbox_name"). Although primarily for external packages, ATOMS integrates seamlessly with built-in modules by handling dependencies during Scilab updates. Documentation for all modules, including usage examples, is accessible directly in the interactive environment using the help() command, such as help(atomsInstall). The signal_processing module provides comprehensive tools for analyzing and manipulating signals, including fast Fourier transforms via the integrated module and classical filtering techniques. For example, the iir() function designs filters, while Butterworth low-pass filters can be created using zpbutt(n, omegac) to compute poles and zeros, followed by application with filter(). A practical involves filtering from a signal: generate a noisy sine wave, design a second-order with 0.3π, and apply it to recover the original , demonstrating the module's utility in time-domain processing. In the optimization module, users can solve unconstrained and constrained problems using algorithms like the Nelder-Mead simplex method via optim() or direct search with fminsearch(). These functions minimize objective functions defined as Scilab scripts or expressions, supporting gradient-free approaches suitable for nonlinear problems; for instance, minimizing illustrates convergence to the global minimum (1,1) over iterations. The module emphasizes robust, derivative-free methods, with options configurable via optimset() for tolerance and iteration limits. The statistics module offers a of probability distribution functions, including cumulative distribution functions (CDFs) for common distributions such as (cdfnor()), gamma (cdfgam()), and (cdfchi()). These enable statistical modeling, testing, and random variate generation; a representative example computes the CDF of a standard at z=1.96 to find the probability P(Z ≤ 1.96) ≈ 0.975, useful for confidence intervals in . Integration tools like integrate(expr, v, x0, x1) complement statistical computations by evaluating definite integrals numerically, such as approximating the constant for a probability . For control systems, the cacsd (Computer-Aided Control Systems Design) module facilitates analysis and design, featuring functions like evans() for plotting root loci of systems. Users can compute and visualize migration as varies, aiding assessment; for example, applying evans(sys) to a reveals crossover points for controller . All built-in modules receive regular updates in official Scilab releases, ensuring compatibility and bug fixes, with comprehensive help pages providing syntax, examples, and references to underlying algorithms.

Custom Development and Modules

Scilab supports extensive customization through user-contributed modules and toolboxes, primarily managed via the ATOMS (Automatic TOolboxes Management for Scilab) system, which serves as the official repository for these extensions. ATOMS enables users to discover, install, and update modules directly within Scilab using the atomsInstall("toolbox_name") command or the graphical interface launched by atomsGui(). This system hosts over 200 toolboxes covering areas such as , optimization, and , fostering a collaborative ecosystem for extending Scilab's functionality. Creating custom toolboxes involves organizing code into a standardized directory structure, including macros/ for Scilab script functions (e.g., .sci files), src/ for C or Fortran source code, and help/ for documentation files. The builder.sce script at the toolbox root compiles the components: it invokes buildmacros.sce to generate binary .bin files from macros and uses tools like ilib_build to compile C/Fortran interfaces into shared libraries. Once built, the toolbox folder is zipped and installed via ATOMS, with automatic loading on Scilab startup after restart. Scilab's interface capabilities allow seamless integration with external code through dynamic linking of compiled libraries, achieved via functions like addinter to load shared objects at or ilib_build for building interfaces to C/Fortran code using the Scilab . For higher-level languages, dedicated modules enable ; for instance, the Scithon toolbox embeds , permitting calls to Python functions, objects, and libraries (including and ) directly from Scilab. Similarly, Java integration is supported through modules that allow bidirectional data exchange and function calls. Extensions in Scilab benefit from flexible licensing, as the core software is distributed under the GPL v2.0, but toolboxes operate as separate modules where developers can apply their own licenses, including proprietary ones, without affecting the open-source base. This approach enables commercial applications built atop Scilab while preserving the core's openness. Representative examples illustrate practical custom development. A simple module for custom algorithms might involve writing a in macros/ to implement a specialized numerical solver, compiling it with builder.sce, and distributing via ATOMS for community use. Community-contributed toolboxes, such as maple2scilab, demonstrate advanced integrations by converting Scilab arrays and expressions into Maple-compatible instructions, facilitating symbolic computation workflows between the two environments.

History and Development

Origins and Early Versions

The origins of Scilab trace back to the at the Institut de Recherche en Informatique et en Automatique (IRIA), now known as Inria, where researchers developed Blaise, a computer-aided design (CACSD) software package. Blaise was created by François Delebecque and Serge Steer to support automatic control research, drawing inspiration from the implementation of for numerical computations and system modeling. In 1984, Blaise evolved into Basile, which was distributed commercially for several years by Simulog, Inria's first company, targeting engineers and scientists working on control systems. Initial development of Scilab began in the early 1990s when Simulog ceased distribution of Basile, prompting Inria to rename and expand the software under the leadership of Claude Gomez and a dedicated team including Jean-Philippe Chancelier from École Nationale des Ponts et Chaussées (ENPC), François Delebecque, Maurice Goursat, Ramine Nikoukhah, and Serge Steer. This effort, starting around 1990, aimed to create a free, open-source alternative to proprietary tools like MATLAB, emphasizing a high-level matrix-oriented programming language for numerical computing, graphics, and simulation in scientific and engineering applications. The project was funded by Inria and other French public institutions, reflecting national support for open research software in computational sciences. The first public release, Scilab 1.1, occurred on January 2, 1994, made available via anonymous FTP as freely distributable open-source software to encourage widespread adoption among researchers. Technically, early Scilab versions were built on the foundations of Blaise and Basile, with core components implemented and interfaces to libraries for performance-critical numerical routines, such as linear algebra and functions. These initial releases were designed exclusively for Unix platforms, including systems like and , limiting accessibility to users in academic and research environments with Unix-based workstations. Key early contributors from Inria focused on enhancing operations, plotting capabilities, and scripting to provide a robust, cost-free platform for , setting the stage for broader community involvement in subsequent years.

Major Milestones and Organizations

In 2003, the Scilab Consortium was established by the French for Research in Digital Science and Technology (Inria) along with academic and industrial partners to coordinate the software's development, broaden contributions, and promote it as a global reference for numerical computing. In 2008, Scilab joined the Digiteo research network, which further supported its development and distribution under the CeCILL license. A significant advancement came with the release of Scilab 5.0 in September 2008, which introduced a complete (GUI) overhaul based on , enabling integrated editing, execution, and visualization capabilities, alongside enhancements in 3D graphics with support. Nearly a decade later, Scilab 6.0.0 arrived in February 2017, featuring a rewritten core leveraging modern C++ standards for improved and native 64-bit integer support, while Xcos—the modeling tool—saw major enhancements including optimized data structures for handling large models, a new implicit solver (Crank-Nicolson), and an advanced palette browser with search and drag-and-drop functionality. Organizationally, Scilab Enterprises was founded in June 2010 as a from the to provide professional support, training, and services while maintaining the open-source nature of the software. In February 2017, —a leader in virtual prototyping—acquired Scilab Enterprises to integrate it into its simulation ecosystem, enhancing commercial offerings without altering the free core distribution. In mid-2022, the Scilab operational team joined , continuing development under its umbrella while maintaining open-source principles. Recent development has focused on platform compatibility and efficiency, with Scilab 2024.0.0 (released October 2024) introducing native support for (ARM64) processors on macOS—at least twice as fast as emulated builds—the subsequent Scilab 2024.1.0 (May 2024) included performance boosts in operations and new utilities like uiimport() for data ingestion and bezier() for curve computation. The subsequent Scilab 2025.1.0 (May 22, 2025) further improved stability by fixing crashes in optimization routines and Xcos saving, optimized I/O functions like writetable(), and added matrix generators such as hadamard() and hankel(). Scilab 2026.0.0, released on October 16, 2025, introduced new language features including classdef for , enumeration types, and enhancements to data structures like table and timeseries, along with several new functions such as dbscan() for clustering and gradient() for . The next release, 2026.1.0, is planned for May 2026. The Scilab community has grown through open-source integrations, including for collaborative development and forums for user support, alongside annual events like the ScilabTec conference to foster contributions and adoption in and scientific domains.

Deployment and Cloud Services

Desktop and Installation Options

Scilab requires a 64-bit operating system for optimal performance, with supported platforms including and 11 (64-bit), 22.04 LTS, 24.04 LTS, and 25.04, 13, 42 on , and macOS from (10.13) to Tahoe (26) on or processors. An connection is recommended for installing ATOMS modules, and a runtime environment (Java 17) is embedded in Scilab for functionality. Compilers such as 2022 for Windows or / and gfortran for and macOS are optional but necessary for building C/C++ or extensions and models in Xcos. Installation methods include official binary installers tailored to each platform: .exe files for Windows, .tar.xz archives for (which can be extracted and run without full installation for portability), and .dmg files for macOS (both and variants). Portable versions are not officially provided but can be created by extracting the Linux binary archive or copying an installed directory on Windows, allowing execution from without system-wide changes. For advanced users, compilation is supported via downloads from the official repository in formats like .zip or .tar.gz, using as the build system on systems or on Windows to customize the build. The setup process begins by downloading the appropriate installer from the official website and running it: on Windows, execute the .exe and follow the wizard to select installation directory and components; on , extract the .tar.xz to a preferred location and set environment variables like if needed; on macOS, open the .dmg and drag Scilab to the Applications folder. After installation, launch Scilab via the desktop shortcut (scilab.exe on Windows), Applications menu on macOS, or terminal command ./bin/scilab on , which initializes the default workspace with a console for command execution and variable storage. Initial configuration may involve verifying the SCI path points to the installation root for script execution and module loading. For updates and maintenance, Scilab follows a release cycle with major versions annually in October and minor updates approximately every six to seven months in May, ensuring compatibility and new features; as of November 2025, the latest stable release is Scilab 2026.0.0. Users should download the latest stable release from the official site for upgrades. Installed modules managed via ATOMS can be updated using the atomsUpdate() function in the Scilab console, which checks for and applies updates to all or specific modules across user or all-users sections, requiring write access to the directory. Common troubleshooting issues include conflicts, where the embedded JVM fails to load due to or misconfigurations, resolved by ensuring the java.. includes the Scilab directory or reinstalling to avoid mismatches. errors, such as the variable not being set, can prevent launch or module detection; verify and set it manually in system environment variables or the startup script, consulting the official help documentation for platform-specific fixes. For detailed guidance, refer to the Scilab and community forums linked from the official documentation.

Scilab Cloud App and API

The Scilab provides a web-based (IDE) for executing Scilab scripts, generating plots, and performing simulations directly within a , eliminating the need for local software . A community-hosted version is accessible via cloud.scilab.in (FOSSEE project), supporting users in writing or selecting code examples and verifying results online, making it suitable for educational and exploratory purposes. Key features include and download for managing scripts and data, basic collaboration through shared execution environments, and access to core Scilab mathematical functions along with selected toolboxes, all without requiring or other plugins. The app is free for basic use and requires a user account for access, aligning with Scilab's open-source ethos. The official Scilab Cloud API, previously offering a RESTful web service interface for programmatic integration, appears to be deprecated as the base URL https://scilab.cloud/rest/ no longer resolves as of 2025. For current integration options, consult the official documentation. Common use cases for the cloud app include creating educational demonstrations, enabling remote computing on low-specification devices, and integrating Scilab capabilities with platforms like Jupyter notebooks or for enhanced workflow automation. For instance, it supports embedding such as FFT analysis on datasets directly in web interfaces. Since Scilab Enterprises was acquired by in 2017 and subsequently by in 2022, data handling in these services adheres to ' privacy policies, ensuring secure access for engineering and applications. While a free tier is available with account-based access, advanced professional services may involve premium support through .

References

  1. [1]
    About - Scilab
    Scilab is free and open source software for numerical computation providing a powerful computing environment for engineering and scientific applications. Scilab ...
  2. [2]
    Open Source | Scilab
    Scilab is a free and open source software for engineers & scientists, with a long history (first release in 1994) and a growing community (100 000 downloads ...
  3. [3]
    History - Scilab
    Scilab software history begins in the 80's, with Blaise, a CACSD (Computer Aided Control System Design) software created at the IRIA.
  4. [4]
    Scilab 2025.1.0
    You are about to download an old version of Scilab. We strongly advise you to download the latest version. Released on Thu, 22 May 2025. System requirements ...Scilab 2024.1.0 · System Requirements · Previous versions
  5. [5]
    Real-time control and measurement applications – ScilabTEC 2015
    ... alternative to Matlab/Simulink. The system can be also applied in control system development for embedded platforms with TI DSP processors. Software is free ...
  6. [6]
    Matrices | Scilab
    In the Scilab language, matrices play a central role. In this tutorial, we present how to create and query matrices. We also analyze how to access the ...
  7. [7]
    [PDF] INTRODUCTION TO SCILAB
    From the software point of view, Scilab is an interpreted language. This generally allows to get faster development processes, because the user directly ...
  8. [8]
    Scilab | Scilab
    Scilab is a free and open source software for students, academics, engineers & scientists. Features. Scilab includes hundreds of mathematical functions. It has ...Open Source · Scilab 2025.1.0 · Scilab 2024.1.0 · About
  9. [9]
  10. [10]
    scilab/CHANGES.md · 6.0.0 - GitLab
    Feb 13, 2017 · Licensing change: Scilab is now released under the terms of the GNU General Public License (GPL) v2. ... #14058: Scilab crashed with file("close", ...
  11. [11]
  12. [12]
    Scilab 2026.0.0
    Scilab is released under the terms of the GNU General Public License (GPL) v2.0. Windows and Linux versions have been compiled by Dassault Systèmes S.E. and ...
  13. [13]
    System Requirements - Scilab
    System Requirements: macOS®. OS. macOS High Sierra 10.13 up to latest version Tahoe 26. Hardware. Mac Intel or ARM 64 bits processor. Optional.Missing: Silicon | Show results with:Silicon
  14. [14]
    scilab - Homebrew Formulae
    scilab. Install command: brew install --cask scilab. Name: Scilab ... You can install it with: brew install --cask temurin@8. Versions: Intel, tahoe ...
  15. [15]
    [PDF] Scilab for very beginners
    The purpose of this document is to guide you step by step in exploring the various basic features of Scilab for a user who has never used numerical ...
  16. [16]
    (=) assignment , comparison, equal sign - Scilab Online Help
    Oct 16, 2025 · Assignment: The equal sign = is used to denote the assignment of value(s) to variable(s). The syntax can be : a=expr where a is a variable name ...Missing: documentation | Show results with:documentation
  17. [17]
    Basic Elements | Scilab
    Scilab's basic elements include real variables, variable names, comments, math functions, booleans, complex numbers, integers, strings, and dynamic variable ...
  18. [18]
    Scilab Online Help
    ### Summary of Scilab Control Structures
  19. [19]
    if - Keyword for conditional execution - Scilab Online Help
    Oct 16, 2025 · Description. The if statement evaluates a logical expression and executes a group of statements when the expression is true.
  20. [20]
    for - Keyword entering a non-conditional loop - Scilab Online Help
    Oct 16, 2025 · According to the Code Conventions for the Scilab Programming Language it is recommended: Start each statement on a new line. Write no more than ...
  21. [21]
    Opens a function definition - Scilab Online Help
    Oct 16, 2025 · This syntax may be used to define function (see functions) inline or in a script file (see exec). For compatibility with old Scilab versions ...
  22. [22]
    functions - Scilab procedures and Scilab objects
    Oct 16, 2025 · Scilab functions are procedures defined with a syntax and instructions, and are Scilab objects that can be manipulated.
  23. [23]
    Beginning of try block in try-catch control instruction
    Oct 16, 2025 · The try-catch control instruction can be used to manage codes that could possibly generate errors.Missing: documentation | Show results with:documentation
  24. [24]
    who - Listing of variables - Scilab Online Help
    Oct 16, 2025 · The `who` function lists variables. It can list local, current, or global variables, and can sort the output alphabetically.
  25. [25]
    type - Returns the type of a Scilab object
    Oct 16, 2025 · type returns the type of a Scilab object. Syntax: i = type(x). Arguments: Description: type(x) returns an integer which is the type of x, defined as following:Missing: documentation | Show results with:documentation
  26. [26]
    [PDF] Programming in Scilab
    The higher level algorithm is based on a blocked matrix multiply. Assume that. A is a m-by-k matrix and B is a k-by-n matrix. We assume that the integer NB ...
  27. [27]
    Rational fractions - Scilab Online Help
    Oct 16, 2025 · A rational is the quotient of two polynomials, r=num/den. An array of rationals can be defined as R = Num./Den.Missing: documentation | Show results with:documentation
  28. [28]
    list - A Scilab object and a list definition function
    Oct 16, 2025 · Creates a list with elements ai 's which are arbitrary Scilab objects ( matrix , list ,...). Type of list objects is 15. list() creates the empty list (0 element ...
  29. [29]
    star - (*) multiplication operator - Scilab Online Help
    Oct 16, 2025 · Element-wise multiplication is denoted x.*y . If x or y is scalar (1x1 matrix) .* is the same as * . Kronecker product is x.*.y . A*.B is an ...
  30. [30]
    inv - Matrix inverse - Scilab Online Help
    Oct 16, 2025 · inv(X) is the inverse of the square matrix X. A warning message is printed if X is badly scaled or nearly singular.
  31. [31]
    spec - Eigenvalues, and eigenvectors of a matrix or a pencil
    Oct 16, 2025 · spec(A) computes the eigenvalues and returns them in the vector evals. [R, diagevals] = spec(A) returns the eigenvalues through the diagonal matrix diagevals.
  32. [32]
    linsolve - Linear equation solver - Scilab Online Help
    Oct 16, 2025 · linsolve computes all the solutions to A*x+b=0. x0 is a particular solution (if any) and kerA= nullspace of A. Any x=x0+kerA*w with arbitrary w satisfies A*x+b ...Missing: functions | Show results with:functions
  33. [33]
  34. [34]
    fminsearch - Scilab Online Help
    Oct 16, 2025 · The optimset function is used to create an optimization data structure and the field associated with the string "TolX" is set to 1.e-2. The ...
  35. [35]
    mean - Mean of all values, or means along a given dimension
    ### Summary of Statistical Functions in Scilab
  36. [36]
  37. [37]
    histplot - Plot a histogram
    ### Description of histplot for Histograms in Scilab
  38. [38]
    ode - Ordinary differential equation solver - Scilab Online Help
    Oct 16, 2025 · It is an interface to various solvers, in particular to ODEPACK. In this help, we only describe the use of ode for standard explicit ODE systems.
  39. [39]
  40. [40]
    interp - Cubic spline evaluation function
    ### Summary of `interp` Function in Scilab
  41. [41]
    grand - Generate random numbers
    ### Summary of the `grand` Function in Scilab
  42. [42]
    Plotting - Scilab
    Scilab offers many ways to create and customize various types of plots and charts. In this section, we present how to create 2D plots and contour plots.
  43. [43]
    plot2d - 2D plot
    ### Summary of plot2d Function in Scilab
  44. [44]
    plot3d - 3D plot of a surface
    ### Summary of plot3d Function in Scilab
  45. [45]
    xtitle - Add titles on a graphics window
    ### Summary of xtitle for Titles in Scilab Plots
  46. [46]
    legend - Draw graph legend
    ### Summary of Legends in Scilab Graphics
  47. [47]
    contour - Level curves on a 3D surface
    ### Summary of Contour Plots in Scilab
  48. [48]
    param3d - Plots a single curve in a 3D cartesian frame
    ### Summary of param3d for Parametric Curves
  49. [49]
    figure - Create a figure
    ### Summary: Figure Handles and Interactive Manipulation in Scilab Graphics
  50. [50]
    Matplot - 2D plot of a matrix using colors
    ### Summary of Matplot for Color Maps
  51. [51]
    xs2bmp - Export graphics to BMP
    ### Summary of xs2bmp Export Options
  52. [52]
    comet3d - 3D comet animated plot
    ### Summary of comet3d for Animations
  53. [53]
    uicontrol - Create a Graphic User Interface object
    ### Summary: GUI Integration for Dynamic Plots in Scilab using uicontrol
  54. [54]
    read - Matrices read
    ### Summary: Importing Data from CSV for Visualization in Scilab
  55. [55]
    Xcos | Scilab
    Xcos is a graphical editor to design hybrid dynamical systems models. Models can be designed, loaded, saved, compiled and simulated.Control Systems · Signal Processing · Mechanics/Thermodynamics · Electronics
  56. [56]
    xcos - Block diagram editor and GUI for the hybrid simulator
    Oct 16, 2025 · Xcos is a graphical editor for constructing models of hybrid dynamical systems. Models can then be assembled, loaded, saved, compiled, simulated, using GUI of ...
  57. [57]
    Xcos for beginners – tutorial - Scilab
    This document is to guide you step by step in exploring the various basic features of Xcos tool included in Scilab for a user who has never used a hybrid ...
  58. [58]
    Scilab Code Generator details - ATOMS
    ATOMS is a code generator for Xcos that generates Scilab code from blocks and includes a web-based Scilab to C converter.
  59. [59]
    Scilab Code Generator
    The Scilab Code Generator can parallelize code for multicore processors and is used for enterprise deployment. Professional integration services are available.
  60. [60]
    getmodules - Lists modules installed in Scilab
    May 22, 2025 · a column of strings: names of modules installed in Scilab. Examples. modules = getmodules(); find(modules=="core"); with_module("core");. See ...
  61. [61]
    scilab/modules · 2025.1.0 · scilab / scilab · GitLab
    ### List of Subdirectories under `modules` in Scilab 2025.1.0
  62. [62]
    ATOMS : Homepage - Scilab
    ATOMS (Automatic TOolboxes Management for Scilab) is the repository for packaged extension Toolboxes.Xcos (16) · Scilab development (26) · Scilab Image and Video... · Statistics (14)
  63. [63]
    Getting started - A short introduction to install and load ATOMS ...
    Oct 16, 2025 · This page teaches how to get started with ATOMS module manager on the scilab platform towards a session example.
  64. [64]
    Build a toolbox | Scilab
    To build a Scilab toolbox, create scripts, use the template, execute builder.sce, zip the folder, and install using atomsInstall('myToolbox.zip').
  65. [65]
    Writing Scilab Extensions
    In this document, we present methods to extend Scilab features. In the first part, we focus on external modules. We describe their general organization.
  66. [66]
    Scithon - Scilab Python Toolbox details - ATOMS
    Jul 20, 2025 · This toolbox embeds Python, complete with all its data types and functions in Scilab along with the ability to import standard and external modules available ...Missing: interface | Show results with:interface
  67. [67]
    Interoperability - GitLab
    Scilab is interoperable, extending with Java, Python, Tcl, Fortran, C/C++ and can be used from Java, Python, C/C++, Excel, Isight, LabVIEW, ProActive, and Diet.
  68. [68]
    maple2scilab details - ATOMS
    Jul 27, 2018 · maple2scilab. Conversion of Scilab arrays into Maple instructions. (15545 downloads for this version - 21766 downloads for all versions) ...Missing: interface | Show results with:interface
  69. [69]
    [PDF] SCILAB to SCILAB// - The Ouragan Project - HAL Inria
    May 24, 2006 · Abstract: In this paper, we present the developments realized in the OURAGAN project around the parallelization of a MATLAB-like tool called ...
  70. [70]
    Welcome to Scilab 6.1.1
    Welcome to Scilab 6.1.1. This file details the changes between Scilab 6.1.1 (this version), Scilab 6.1.0, and the previous 6.0.2 release.
  71. [71]
    [PDF] Acquisition of Scilab Enterprises, publisher of Scilab open source ...
    Feb 27, 2017 · Scilab Enterprises was created in 2010 out of the Scilab Consortium, which was itself created in 2003 as part of an initiative backed by INRIA, ...
  72. [72]
    scilab/CHANGES · 5.0 - GitLab
    Sep 10, 2008 · + Support 3D hardware acceleration. + Facet ordering issues fixed with the use of Z-buffer. - Text possibilities extended: + Support for ...
  73. [73]
    Scilab Online Help
    ### Summary of Key New Features in Scilab 6.0.0
  74. [74]
    Scilab Online Help
    ### Key Improvements in Scilab 2024.1.0
  75. [75]
    Scilab Online Help
    ### Summary of Key Improvements in Scilab 2025.1.0
  76. [76]
    Scilab version history
    Scilab version history ; 2026.1.0 · 2026.0.0 · 2025.1.0 ; Planned for May 2026 · 2025-10-16 · 2025-05-22 ; Not yet released. Milestone contents · Read · Read ...
  77. [77]
    Community | Scilab
    Read all the books ever written on Scilab. Find them all listed here. Some statistics about the community.Missing: milestones | Show results with:milestones
  78. [78]
    Installing Scilab as a portable application - Google Groups
    It is very easy to do on Windows with Scilab 4.1.2 :) Install Scilab 4.1.2 on a pc. copy c:\Programs Files\Scilab-4.1.2 on your usb key or a cd-rom.
  79. [79]
    Getting started - Scilab
    To start with Scilab, install the software, use in-line documentation, web resources, and learn to create 2D plots.
  80. [80]
    Compile and run with Call Scilab
    Oct 16, 2025 · To compile with Call Scilab, define CFLAGS for Scilab headers. To run, set global variables like SCI and LD_LIBRARY_PATH.
  81. [81]
    atomsUpdate - Update one or several external modules
    Oct 16, 2025 · This argument controls the list of sections where search modules to update. section is a single-string and its value should be :
  82. [82]
    javasci FAQ - Scilab Online Help
    Oct 16, 2025 · On Windows, the native library javasci.dll does not exist or cannot be found even if the PATH is being set. If the error is something like: java ...
  83. [83]
    [PDF] Scilab Cloud
    Private Cloud / Public Cloud. Simulation Web App. (Web Interface & Algorithms). Simulation Web Service. (API & Algorithms). Scilab Cloud App (Web GUI or API).Missing: documentation | Show results with:documentation
  84. [84]
    Scilab on cloud
    Scilab on Cloud facilitates execution of the codes for particular example(s) online. The results can then be verified with the solved example(s) from the ...
  85. [85]
    None
    ### Summary of Scilab Cloud API
  86. [86]
    The Scilab Team is now part of ESI Group
    After 5 years of Scilab versions made by Scilab Enterprises, the operational team is very proud to share with you that ESI Group has acquired the company.Missing: 2010 2017