# Scilab 2026.0.0 - Highlights & What’s New

**URL:** <https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059>\
**Category:** Announcements\
**Created:** [October 16, 2025, 12:30pm UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059 "2025-10-16T12:30:04Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![vincent.couvert](https://avatars.discourse-cdn.com/v4/letter/v/f4b2a3/32.png) [@vincent.couvert](https://scilab.discourse.group/u/vincent.couvert)\
**Post date:** [October 16, 2025, 12:30pm UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059/1 "2025-10-16T12:30:04Z")

</div>

Hi everyone! We’re excited to share a quick tour of the headline features landing in **Scilab 2026.0.0**. This release brings object-oriented programming to the language, new machine-learning utilities, better model exchange in Xcos, and long-requested plotting improvements.

## **Objects**

Scilab now supports **first-class objects** :

- `classdef … end` for class declarations.

- **Constructors** , **properties** , **methods** , **enumeration** and **operator overloading**.

- **Multiple inheritance** and well-defined **scope/visibility**.

> 👉 Full design notes, guidance, and examples are in the dedicated post: **[Objects in Scilab](https://scilab.discourse.group/t/objects-in-scilab/)**

## **New classification functions**

Two widely used clustering algorithms are now built-in:

- **`dbscan()`**: Density-based clustering that discovers arbitrarily shaped clusters and marks outliers:

```auto
rand("seed", 0)
theta1 = 2 * %pi * rand(100, 1);
theta2 = 2 * %pi * rand(120, 1);
theta3 = 2 * %pi * rand(150, 1);

r1 = 1 + 0.2 * rand(100, 1);
r2 = 2.5 + 0.2 * rand(200, 1);
r3 = 4 + 0.2 * rand(300, 1);

X1 = [r1 .* cos(theta1), r1 .* sin(theta1)];
X2 = [r2 .* cos(theta2), r2 .* sin(theta2)];
X3 = [r3 .* cos(theta3), r3 .* sin(theta3)];

N = 10 * (rand(30, 2) - 0.5); //noise

X = [X1; X2; X3; N];
labels = dbscan(X, 0.72);

f = scf();
f.figure_name = "DBSCAN";
f.figure_size = [975 630];
subplot(122)
gca().isoview = "on";
scatter(X(:,1), X(:,2), [], labels, "fill")
title("Circular cluster with noise");

subplot(121)
gca().isoview = "on";
scatter(X(:,1), X(:,2), [], color(0,127,255), "fill");
title("Raw data");

```

 ![dbscan](https://global.discourse-cdn.com/free1/uploads/utc/original/1X/8a917534ef2fd2398efb441f162531662c55c070.png)

- **`meanshift()`**: Mode-seeking clustering requiring minimal prior on the number of clusters:

```auto
rand("seed", 0);
n = 200;
x1 = rand(n, 2, "normal") + 2 * ones(n, 2);
x2 = rand(n, 2, "normal") - 2 * ones(n, 2);
x3 = rand(n, 2, "normal") * 1.5 + ones(n, 2);
x4 = rand(n, 2, "normal") * -1.5 - ones(n, 2);

x = [x1; x2; x3; x4];

[c, index] = meanshift(x, 2.2);

f = scf(1);
f.figure_name = "MEANSHIFT";
f.figure_size = [975 630];
subplot(122)
scatter(x(:,1), x(:,2), [], index, "fill");
scatter(c(:,1), c(:,2), 150, color(228, 26, 28), "fill"); // centroid of each cluster
title(string(length(unique(index))) + " clusters and centroid");

subplot(121)
scatter(x(:,1), x(:,2), [], color(0,127,255), "fill");
title("Raw data");

```

 ![meanshift](https://global.discourse-cdn.com/free1/uploads/utc/original/1X/8b9bbebff57cd7b4cd3609dcb94f5c0914cac6fd.png)

Both functions return cluster labels you can pass straight into your plotting pipeline.

## **Xcos: SSP format support**

Xcos now uses **SSP format** (System Structure & Parameterization) as default format for smoother model exchange with other tools and workflows:

- **Import** an existing system description as an Xcos diagram with parameters.

- **Export** your diagram and parameters as an **SSP** package for sharing with other tools.

- This helps integrate Scilab/Xcos in FMI/SSP-centric environments and toolchains.

## **Colormaps per axes**

You asked, we listened: each axes can now have its **own colormap** — perfect for side-by-side plots with different palettes.

```auto
f = scf();
f.figure_name = "Figure & Axes colormaps";
f.color_map = jet(32);

ax1 = subplot(1, 2, 1);
ax1.title.text = "plot3d() using figure colormap"
x = %pi * [-1:0.05:1]';
z = sin(x)*cos(x)';
e = plot3d(x, x, z, 70, 70);
e.color_flag = 1;

ax2 = subplot(1, 2, 2);
ax2.title.text = "surf() using axes colormap"
ax2.color_map = cool(50);
theta = 0:15:360;
r = 25:5:100;
[R,T] = ndgrid(r,theta);
X = R.*cosd(T);
Y = R.* sind(T);
Z = sinc(R/8);
surf(X, Y, Z)
ax2.rotation_angles=[195 -155];

```

 ![axes-colormap](https://global.discourse-cdn.com/free1/uploads/utc/original/1X/80cd3eef3aae7b797bd97d991a20ecfc138d3f5f.png)

This removes the old “global colormap” limitation when composing multi-axes figures.

## **Get involved**

- Try the new features and share your feedback, code snippets, and edge cases.

- Report issues and suggest enhancements on [GitLab](https://gitlab.com/scilab/scilab).

Thanks to all contributors and testers who helped shape Scilab 2026.0.0!

---

<div class="post-metadata">

**Author:** ![antoine.elias](https://yyz2.discourse-cdn.com/free1/user_avatar/scilab.discourse.group/antoine.elias/32/16_2.png) [@antoine.elias](https://scilab.discourse.group/u/antoine.elias)\
**Post date:** [October 16, 2025, 12:31pm UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059/2 "2025-10-16T12:31:28Z")

</div>



---

<div class="post-metadata">

**Author:** ![nilrua](https://avatars.discourse-cdn.com/v4/letter/n/5f9b8f/32.png) [@nilrua](https://scilab.discourse.group/u/nilrua)\
**Post date:** [October 17, 2025, 6:24pm UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059/3 "2025-10-17T18:24:57Z")

</div>

Many thanks for this new release! Object-oriented programming was something I wanted to appear in Scilab. I’ll definitely try this new version soon.

---

<div class="post-metadata">

**Author:** ![mottelet](https://yyz2.discourse-cdn.com/free1/user_avatar/scilab.discourse.group/mottelet/32/13_2.png) [@mottelet](https://scilab.discourse.group/u/mottelet)\
**Post date:** [October 18, 2025, 1:07pm UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059/4 "2025-10-18T13:07:37Z")

</div>

Hello,

If you have any other wishes for Scilab do not hesitate to express them !

S.

---

<div class="post-metadata">

**Author:** ![arctica](https://avatars.discourse-cdn.com/v4/letter/a/b9e5f3/32.png) [@arctica](https://scilab.discourse.group/u/arctica)\
**Post date:** [October 21, 2025, 4:23pm UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059/5 "2025-10-21T16:23:36Z")

</div>

Have downloaded the latest version. Always good to see the new updates! I think we could do with updating the HDF5 implementation, as it is still rather limited. It can read a netCDF file no problem, but cannot build the proper structure. I have identified the key missing elements:

| Missing in Scilab | Found in NetCDF HDF5 dump |
| --- | --- |
| `H5T_COMPOUND` | Yes |
| `H5T_VLEN` | Yes |
| `H5T_STD_REF_OBJECT` | Yes |
| `REFERENCE_LIST` | Yes |
| `DIMENSION_LIST` | Yes |
| `_Netcdf4Dimid`, `_Netcdf4Coordinates` | Yes |
| `_NCProperties` | Yes |
| NetCDF “Dimension Scale” model | Yes |

This would allow for a simpler workaround for build a netCDF file in Scilab without having to rebuild the old scinetcdf module.

Lester

---

<div class="post-metadata">

**Author:** ![vincent.couvert](https://avatars.discourse-cdn.com/v4/letter/v/f4b2a3/32.png) [@vincent.couvert](https://scilab.discourse.group/u/vincent.couvert)\
**Post date:** [October 23, 2025, 9:49am UTC](https://scilab.discourse.group/t/scilab-2026-0-0-highlights-what-s-new/1059/6 "2025-10-23T09:49:13Z")

</div>

Hello Lester,

Do you mean that a function such as `h5compound()` should be available as Scilab already have `h5dataset()` for example?

Can you report an issue on [GitLab](https://gitlab.com/scilab/scilab/-/issues) to explain your needs about missing elements?

Best regards,  
Vincent
