What's new in Scilab 6

The Scilab Team invested significant development efforts for the past years in order to release Scilab 6.

The goal with Scilab 6 is to address technological evolutions and new needs in terms of modeling and simulation from the scientific & engineering community.

This led our team to completely redevelop the computation core of Scilab in order to build a solid base combining performance and evolutivity.

The new aspects of Scilab 6 worth notifying are the following:

New language parser & new core

New utilities for development productivity

Xcos block diagram improvement

Newsfeed - a communication channel with the users

New language parser & new core

This release includes a major rewrite of Scilab's internal core. The changes to the visible aspects of the software are limited.

The first big internal change is the ability to manipulate bigger data sets, without exhausting system resources. This includes in particular:

A much better memory management. Memory usage is now only limited by the machine's memory. This was a much needed and requested feature. There is no need for stacksize anymore,

Support for bigger data sizes, in particular with better support for HDF5 files,

Some new and improved data types: 64-bit integers, ability to define user types in C++ modules. Also, matrices with more than two dimensions are now implemented natively.

Native data structures (cell, struct) as well as multidimensional matrices yield, in most cases, better performance both in memory usage and execution speed.

The second big internal change is a complete new language parser and interpreter, with the following changes:

The language is much more coherent and predictable,

The grammar is stricter but more consistent,

Error handling has been improved,

The language has a slightly better compatibility with Matlab's (for example control instructions such as switch/case statements). The language changes are not all backward-compatible but the modifications should be quick and rare. For more information, refer to this detailed description.

These changes may not amount much to end-users but they were much needed and much worked-on improvements to the Scilab platform. These improvements enable further improvements in the future, in terms of code management, development tools (debugger, analyzer, etc) as well as improvements to other parts of the platform (Xcos...) that would not be possible without this release.

New utilities for development productivity

A command-line debugger:

This environment enables to debug Scilab script. After a call to the function debug(), you will enter the debug mode. This mode allows you to manage breakpoints, launch execution with stop on errors, execute script step by step, etc. When the debug mode is active, prompt change to "debug>".

With the function slint, the user is now capable of performing a static analysis of his script. It detects unclear, risky or suspicious code by checking some criteria available on the online help.

In this elementary example, a certain number of risky behaviours are underlined, such as the use of global variable within a function:

This module was developed with the contribution of the french space agency CNES. We want to thank them for their support in the development of Scilab.

Xcos block diagram improvement

The graphical editor of dynamic systems Xcos distributed with Scilab also leverages the complete rewrite of the core of Scilab. It allows to simulate bigger block diagrams. Xcos 6 also support diagram created with previous versions of Scilab/Xcos.

Moreover, a certain number of features added in this release improve the ergonomy of the software:

New features in the palette browser:

Zoom in & out through theses buttons

Access the navigation history within the different palettes through theses arrows

Search in the palettes through a new field located in the menu bar

Ergonomy in editing block diagrams:

A new link style is available, finding the optimal path between two blocks

A new option for automatic positioning of the nodes splitting the links ("split blocs")