Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.15.0 - (UNRELEASED)
Added
Enhanced random number generation engine with new algorithms:
simdTwister,combRecursive,philox, andthreefry.randi: Generate uniformly distributed random integers.New functions for sparse matrix generation:
sprand: Generate sparse matrices with uniformly distributed random values.sprandn: Generate sparse matrices with normally distributed random values.
Search Text in Console and Text Editor.
Type support: Expanded support for missing types, increasing compatibility across functions and data structures.
imresize: Resize images by scale or to a specified output size, supporting both upscaling and downscaling.Variable Editor: Redesigned for improved usability and performance. Accessible via
openvaror the GUI, it supports structured variables, tables, arrays, and nested data. Features include:Dynamic table view.
Real-time updates from the execution context.
Enhanced performance for large datasets.
Copy-paste compatibility with Excel, LibreOffice, and OpenOffice.
Continuation prompt: Context-aware prompts to enhance interactive command workflows.
Expanded type support for missing types, increasing compatibility across functions and data structures.
missingfunction: Create missing values for arrays and tables, improving data handling and interoperability.renameStructField: Rename fields in structures, simplifying data manipulation and refactoring.jsondecode(filename, '-file'): Added-fileargument for direct reading and decoding of JSON files from disk.tdigest: Introduced t-digest algorithm for accurate quantile estimation with configurable compression parameters.crc32builtin: Compute CRC32 checksum of a file or string.markdown: Added option to select output format (secureoradvanced).fwrite: return also bytes count as second output argument.help: Help for functions in Command Window.macOS Tahoe 26: CI setup and platform support.
Python 3.14 support.
Changed
Help framework reworked for improved performance and usability:
Multithreaded builds for faster performance.
Enhanced search capabilities with extended functionality.
Improved maintainability using Extensible Stylesheet Language Transformations (XSLT).
Unified stylesheet for consistent appearance online and offline.
Removed internal usage of Qt help support.
Dark theme.
Added French language support for Help.
Introduced support for LaTeX formulas.
Replaced
http://links withhttps://for secure connections.Removed the
help_browsermodule.
jsondecode: Integrated simdjson for significantly improved performance and efficiency.fileread: Enhanced performance for reading large files, reducing memory usage and increasing speed.fwrite: returns the number of characters written for character data.i18nExtractor: Reworked for greater speed and modernized codebase, improving internationalization extraction reliability.
Browser variable: Refactored for improved usability, reliability, and consistency in variable inspection.
Third-party libraries on Windows: Updated support for HDF5, zlib, and matio, improving compatibility and stability.
Qt: Upgraded to version 6.9.1 on Windows x64, providing better UI performance and compatibility with modern systems.
Benchmarks: Updated
bench_jsonencode.jsonto include larger datasets for more robust performance testing.xmldocchecker: Improved with XSD schema validation for XML files.#1458: Added support for Eigen 5.0.0 if detected.
GitHub CI: Replaced MacOS Ventura with MacOS 15 Intel (#1457).
Markdown renderer: Switched to the cmark library.
External packages:
Installing a Nelson external package now switches to local embedded help.
External packages must be rebuilt with this version to use the new help format.
Removed several dependencies on Boost to reduce build complexity and improve portability.
Fixed
ansvariable: Ensuredansis only created for expressions, preventing unintended variable creation in the workspace.jsondecode: Corrected parsing of arrays containing empty arrays, improving reliability and correctness.Julia engine works also with Julia 1.12.0
#1462: fwrite without specifying precision did not work as expected.
eyewithout input argument managed.
1.14.0 - (2025-05-30)
Added
New functions:
imrotate: Rotate an image.scatter3: 3D scatter plot.colormaplist: List available colormaps.arrayfun: Apply a function to each element of an array.nelsonappid: Return the Nelson application ID.
New colormaps:
nebula,flag,prism.
New properties:
WindowStateforFigureobjects.UnitsforUIControlobjects.DefaultFigureAlphamap,DefaultFigureColormapas root properties.
Support for
nix develop, providing a reproducible Bash shell preconfigured with Nelson’s build environment. See BUILDING.md for details.A
justfileto streamline and standardize the build process across platforms.Support for:
Fedora 42.
Flatpak package distribution.
Changed
scatterimprovements:Now returns a scatter graphic object (instead of a line graphic object).
Improved rendering precision for scatter symbols (pixel-perfect accuracy).
Supports alpha channel (transparency).
scatter3now supports alpha channel.spynow usesscatterinstead ofplotfor better accuracy.Colormap handling updated to use the new
DefaultFigureColormaproot property.Improved error message when parsing invalid anonymous functions.
Boost:
Now supports Boost 1.88 (#1378).
Minimum required version set to 1.71.
Updated dependencies and platform support:
Qt 6.9.0 on Windows x64.
JSON for Modern C++ updated to v3.12.0.
Mozilla CA certificates updated (Tue May 20 03:12:02 2025 GMT).
Fixed
#1413:
axesfunction did not properly manage figure objects.
Technical Improvements
Application ID changed to
io.github.nelson_lang.Nelson.GitHub CI:
Now uses Windows 2025 for Windows builds.
Major workflow rework for improved reliability and maintainability.
Build system:
Updated to latest Prettier version.
Added use of shared library suffix via a CMake macro.
Included CPU target name in Linux packages.
Minimized dependencies on SLICOT.
1.13.0 - (2025-03-29)
This release introduces performance improvements and new graphical capabilities while deprecating support for 32-bit Windows versions.
Changed
Windows x64 Compatibility: Now requires the AVX2 instruction set.
Windows 32-bit Support: Official distribution of 32-bit Windows binary versions has been discontinued.
macOS Optimization: Builds for macOS with M-series chips now leverage native optimizations for improved performance.
Plot Performance: Optimized
plotandplot3functions for increased speed. Example:tic(); plot(rand(300,300), rand(300,300)); toc();Dependencies Updated:
Upgraded
fmtlibto version 11.1.3.Intel Math Kernel Library (MKL) updated to 2025.0.1 on Windows.
Internal Enhancements:
OpenMP multithreading macros have been reworked for better efficiency.
SLICOTmodule incorporates SLICOT library 5.9, which is distributed under the BSD-3-Clause license.SLICOTmodule available on all platforms by default.
python 3.13.2 embedded on Windows
Added
Double Buffering for Plots:
Implemented double buffering to enhance the smoothness and responsiveness of graphical plots.
Significantly reduces flickering during graphical updates.
New Graphics Functions:
getframe: Captures an axes or figure as a movie frame.movie: Plays recorded movie frames.im2frame: Converts an image to a movie frame.frame2im: Returns image data associated with a movie frame.DevicePixelRatio: New figure property to handle display scaling.
Graphics IO module:
imwrite: create gif animations.imwrite,imread: pcx, tiff file formats managed.imformats: Manage image file format registry.
New Example:
Added an example for connecting
ollamawith Nelson:edit([modulepath('webtools'), '/examples/ollama/readme.md'])
CMake Enhancement:
Introduced
ENABLE_AVX2CMake option for systems that support AVX2.CMake dependencies reworked.
Fixed
MacOs: Default terminal did not use monospaced font.
Some warnings detected with PVS-studio
1.12.0 (2025-02-16)
Added
Julia interface (part 1):
jlenv: Change default environment of Julia interpreter.jlrun: Run Julia statements from Nelson.jlrunfile: Run Julia file from Nelson.Major types conversions are available.
CMake: Optional Julia engine detection.
bar,scattermanage color name and short colorname.Github CI Ubuntu 24.04 arm64 (Cobalt 100 processor).
Github CI Snapcraft build amd64 and arm64.
Snapcraft arm64.
Changed
Completion .m files allows execution without extension.
#1342 Github CI - Ubuntu-20.04 hosted runner image removed.
Fixed
#1346 [display] integer in cell are displayed as double and not as integer.
1.11.0 (2025-01-11)
Added
#1321
mustBeSparsevalidator function.#1322
cmdsep: Command separator for current operating system.urlencode: Replace special characters in URLs with escape characters.docroot: Utility to retrieve or define the root directory of Nelson Help.ismodule: second input argumentisprotectedadded.editor('editor_command', cmd)allows to change text editor in Nelson (for example: VS Code).NELSON_RUNTIME_PATHenvironment variable added by installer on Windows.--vscodecommand line argument added.NixOS 24.11 packaging (see BUILDING_Linux.md).
Changed
Help Center: Access documentation in your system's web browser. Previously, the documentation was opened in the embedded Help browser.
CA certificate store update.
fmt library dependency updated.
BS::threadpool library dependency updated.
Advanced terminal updated (common for all platforms without GUI, auto completion, search history).
Python 3.13.1 supported.
Fixed
#1324 Cell display could not be interrupted.
1.10.0 (2024-12-14)
Added
detectImportOptions: Generate import options from the file's content.readtable: Read table from file.writetable: Write table to file.readcell: Read cell array from file.writecell: write cell array to file.readmatrix: read matrix from file.writematrix: write matrix to file.csvread: Read comma-separated value (CSV) file.csvwrite: Write comma-separated value (CSV) file.dlmread: Read ASCII-delimited file of numeric data into matrix.realmin: Smallest normalized floating-point number.#1288
mustBeMatrix,mustBeRow,mustBeColumnvalidator functions.join: Combine strings.#1292 Large Table Display.
#1290
VariableTypesproperty for table: Specify the data types of table in Nelson.hour,minute,secondcomponent of input date and time.
Changed
narginchk,nargoutchksupport for check only minimun argumentsnarginchk(3, Inf).Fedora 41 CI
title:Visibleproperty is inherited from the parent if not explicitly defined.i18n: migration PO files to JSON.
dlmwrite: rework the function to be more fast and robust.strjust: rework the function to be more fast and robust.datenum: support '' as format for compatibility.
Fixed
#1303
datevecresult must be normalized.#1297 some features have no help files.
#1276 micromamba macos build.
1.9.0 (2024-10-26)
Added
Table direct computation:
unary functions:
abs,acos,acosh,acot,acotd,acoth,acsc,acscd,acsch,asec,asecd,asech,asin,asind,asinh,atan,atand,atanh,ceil,cosd,cosh,cospi,cot,cotd,coth,csc,cscd,csch,exp,fix,floor,log,log10,log1p,log2,nextpow2,round,sec,secd,sech,sin,sind,sinh,sinpi,sqrt,tan,tand,tanh,var,acosd,not.binary functions:
plus,minus,times,eq,ge,gt,le,ne,lt,rdivide,rem,power,pow2,or,mod,ldivide.
endmagic keyword can be overloaded for classes (applied totableclass).#1250
head,tailfunctions for table and array.#1248
removevars,renamevarsfunctions for table.
Changed
#1259 Add macOS Sequoia and remove macOS Monterey CI support.
Qt 6.8 LTS support (used on Windows 64 bits binary).
Python 3.13.0 on Windows.
Boost 1.86 on Windows.
1.8.0 (2024-10-04)
Added
tableData Type:Introduced the
tabledata type, offering enhanced functionality for structured data manipulation.Overloaded methods specific to the
tabledata type:disp,displayfor table display.horzcat,vertcatfor horizontal and vertical concatenation.isemptyto check if the table is empty.isequal,isequaltofor table comparison.propertiesfor accessing table metadata.subsasgnfor subscripted assignment.subsreffor subscripted referencing.
Conversion functions added:
array2table: Convert an array to a table.cell2table: Convert a cell array to a table.struct2table: Convert a structure to a table.table2array: Convert a table to an array.table2cell: Convert a table to a cell array.table2struct: Convert a table to a structure.
Utility functions introduced:
width: Retrieve the number of columns in the tableheight: Retrieve the number of rows in the tableistable: Check if a variable is of thetabledata type
Resize- Resize figure property.#36
datenumformat compatibility extended.#37
datestrConvert date and time to string format.
Changed
CodeQL Github action updated.
Fixed
fix 'units' refresh for 'axes' object.
1.7.0 (2024-08-28)
Added
uicontrolCreate user interface control (button, slider, edit, list box, etc.).waitforBlock execution and wait for condition.waitforbuttonpress— Wait for click or key press.im2double— Convert image to double.CloseRequestFcn— Close request callback forfigure.CreateFcn— Create callback for all graphic objects.DeleteFcn— Delete callback for all graphic objects.BusyAction— Busy action for all graphic objects.Interruptible— Interruptible property for all graphic objects.BeingDeleted— Being deleted property for all graphic objects.KeyPressFcn,KeyReleaseFcn,ButtonDownFcnproperties forfigure.
Changed
Refactor the internal implementation of the 'system' built-in function.
Python 3.12.5 on Windows.
1.6.0 (2024-06-29)
Added
unique: Unique values.ndgrid: Rectangular grid in N-D space.nthroot: Real nth root of real numbers.allfinite: Check if all array elements are finite.jas imaginary unit number is also supported. example3+2jequivalent to3+2i.FollowLocationoption forweboptionsoneAPI Threading Building Blocks optional dependency.
Ubuntu 24.04 debian package.
Ubuntu 24.04 CI
Changed
sort: speed optimization.Windows dependencies updated and rebuild with minimal dependencies:
Qt 6.7.1,
Visual C++ 2022 Redistributable v14.40.33810.00,
boost 1.85,
Python 3.12.4,
Intel Math Kernel Library 2024.1.1,
Intel runtime,
SLICOT,
gettext 0.22.5,
cmake 3.30.0 rc3,
libsndfile 1.2.2,
portaudio 19.7.5,
taglib 2.0,
libzip1 1.3.1,
libcurl 8.8.0,
icu4c 74.2,
libffi 3.4.6,
libxml2 2.11.7
Unicode® Standard, Version 15.1 support
simdutf 5.2.8
fast_float 6.1.1
dtl 1.2.0
Fixed
#1210
bodedid not unwrap phase.#1206
balanceyields wrong Transformation Matrix.#1205
diagmay return wrong sub-diagonals.#1202 buildhelpmd does not generate SUMMARY as expected.
#1201 Matrix Exponential
expmmight give wrong results.#1200 Matrix Parsing/Evaluation trouble.
1.5.0 (2024-05-31)
Added
dictionarydata type.dictionary: Object that maps unique keys to values.configureDictionary: Create dictionary with specified key and value types.insert: Add entries to a dictionary.lookup: Find value in dictionary by key.remove: Remove dictionary entries.entries: Key-value pairs of dictionary.keys: Keys of dictionary.values: Values of dictionary.types: Types of dictionary keys and values.numEntries: Number of key-value pairs in dictionary.isConfigured: Determine if dictionary has types assigned to keys and values.isKey: Determine if dictionary contains key.keyHash: Generate hash code for dictionary key.keyMatch: Determine if two dictionary keys are the same.
bernsteinMatrix: Bernstein matrix.orderedfields: Order fields of structure array.Python interface (part 3):
#1160 Python operators in Nelson.
keyHash,keyMatchfor python objects.isabuiltin support python types.python dictionary to Nelson dictionary
dictionary(pyDict)conversion dictionary to python dictionary.
Changed
help files generated sorted by name on all platforms.
on windows, Qt libraries used are in debug mode.
Fixed
#1195
strcmp({'a'},["a"])did not return expected value.
1.4.0 (2024-04-27)
Added
Python interface (part 2):
#1168 Run Python script file from Nelson.
#1141 Help about Managing Data between Python and Nelson.
#1149 python bytes, and bytearray types were not managed.
#1163 pyenv searchs python by version on Windows.
#1164 Embed python distribution on Windows.
#1167 Help about how to install Python package from Nelson.
numpy types support if numpy available.
pyenv: can use environment variables to set values.
getenv: Retrieve the values of several environment variables.pyrun: Python code object allowed as first input argument.nelson --without_pythonstarts nelson without python engine.skip_testsuite: allows to skip test suite dynamically on condition.
Changed
Allow to call method of a variable of CLASS/HANDLE type like a function (currently, only plugged for python subtype).
#1142 Github Actions updated.
#1157 Qt 6.7 support (used on Windows 64 bits binary).
copyfile,isfile,isdir,mkdirallow string array type as input.warning about 'Matrix is singular to working precision' for inv matrix.
tests webtools skipped if connection fails or not available.
Fixed
#1144 test_run markdown help file had a typo.
#1143 Linux Snapcraft version did not allow to use python.
#1148 pyrun('print(A)','A','A',string(NaN)) did not return expected value.
single(int64([1 2; 3 4]))returned a wrong value.py.tuple,py.listcompatibility increased.pyenvdid not manage python's path with space on Windows.Matio 1.5.27 compatibility on ArchLinux.
Ubuntu 24.04 LTS support.
#1178 Fedora 40 support (CI).
#1134 [CI] MacOS X Ventura restored.
1.3.0 (2024-03-30)
Added
Python interface (part 1):
CMake: Optional Python3 detection.
pyenvChange default environment of Python interpreter.pyrunRun Python statements from Nelson.Major types conversions are compatible (numpy in the next upcoming version).
ArchLinux packaging (https://aur.archlinux.org/packages/nelson-git).
contourContour plot of matrix.contour33-D contour plot.shiftdimShift array dimensions.xcorr22-D cross-correlation.deconvDeconvolution and polynomial division.vecnormVector-wise norm.normpdfNormal probability density function.#310
gammalnLogarithm of gamma function.#1112
gradientNumerical gradient.#1126
isspaceDetermine which characters are space characters.
Changed
#1110 Eigen master branch (352ede96e4c331daae4e1be9a5f3f50fff951b8d) ready to use.
#1134 [CI] MacOS X Ventura disabled (Install dependencies fails)
structsupports scalar string array as field name.
Fixed
#1110 add help about build and use C/C++ on fly.
#1124 unexpected result from long statements on Multiple Lines.
#1127 Nelson could crash if an mxn characters is displayed in the variable browser.
#1125 Unsupported colon operator with char operands.
Missing 'zoom in', 'zoom out' icons for help viewer in linux package.
gcdwithout argument returned wrong error message.#1133 [CI] [ARCH LINUX] Warning about MPI.
1.2.0 (2024-02-25)
Added
Recursive completion on Graphic handle, struct, handle, class (properties, methods).
Adding links between documents about mex and supported compilers.
GitHub CI for macOS Sonoma (Apple Silicon) support.
Export to ...context menu for console and text editor as pdf.CTRL + Mouse wheelorCTRL + +/-to zoom in/out on console, editor, help.Toolbar for figure with print, zoom in, zoom out, rotation, pan, restore axes.
zoom,pan,rotate3dfunctions.MenuBar,ToolBarfigure properties.Window menu on graphic window, list all others available windows.
featurebuiltin (undocument features, debug, tests, ...) content can change with next releases.GridAlpha,GridColor,Viewproperties for Axes.CTRL+C in help viewer, copy selected text.
checkupdatefunction and check update menu.isScalarStringArrayiinternal API C++ method.
Changed
Clicking on an axis automatically sets it as the current axes object.
Clicking on an figure automatically sets it as the current figure object.
saveasexports the figure as a PDF page with centered alignment.Default color of grid for axes.
Default figure size updated.
Default
MarkerFaceColorvalue for compatibility.view function returns azimuth and elevation values.
Camera view reworked.
Minimal screen resolution supported 800x600.
Fixed
Change directory with file browser line editor did not work as expected.
Template to create a function with file browser was wrong.
Do not allow to select multiple variable in workspace browser.
File browser checks if files with the extension ".m" have a valid name before enable 'run' context menu.
Paste in editor with multiple tab.
Starting the Nelson desktop was taking longer than necessary.
1.1.0 (2024-01-29)
Added
Nelson Desktop environment: file browser, command history, workspace browser, desktop layout.
#1074 Roadmap v2.0.0
#1044: LU matrix factorization.
#1080
LineStyle,LineWidthproperties were not implemented for surface objects.sky,abysscolormaps.
1.0.0 (2024-01-04)
Nelson 1.0.0 has been released.
Nelson is an interactive, fully functional environment for engineering and scientific applications. It implements a matrix-driven language (which is largely compatible with MATLAB and GNU Octave), with advanced features such as 2-D 3-D plotting, image manipulation and viewing, a codeless interface to external C/C++/FORTRAN libraries, native support for various C types, and a host of other features.
Features
Types managed by Nelson:
double and double complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
single and single complex: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
logical: scalar, vector, matrix 2D, N dimensions array, sparse matrix.
character array (UNICODE supported).
string array (UNICODE supported).
integers 8, 16, 32, 64 signed and unsigned: scalar, vector, matrix 2D, N dimensions array.
handle objects.
anonymous functions,
all types can be overloaded.
OpenMPandSIMDextensions used.2D and 3D plotting with high-level plot commands.
Parallel Computing Module.
Fast Fourrier Transformation functions based on FFTW and MKL wrapper.
SLICOT (Subroutine Library in Systems and Control Theory) interfaces (optional).
Control System module.
Message Passing Interface (MPI): functions for parallel computing.
JSON decode/encode data support.
HDF5 high-level functions I/O,
HDF5 used as default data file format (.nh5) load/save workspace,
MAT-file compatible load/save workspace,
Foreign Function Interface C/Fortran.
Interfacing C/C++ or Fortran with Nelson (build and load external code on the fly).
MEX C API compatibility.
Nelson Engine API for C (compatible with MEX Engine). Call Nelson from your C code as engine.
RESTful API web service.
Inter-process communication between Nelson's process.
The QML engine enables nelson programs to display and manipulate graphical content using Qt's QML framework.
Component Object Model (COM) client interface: binary-interface standard for software components on Windows.
Write/Read xlsx files on Windows using COM.
Embedded Nelson code editor.
Help engine:
Generate help files using Nelson dedicated functions. View your generated help files as html, markdown, pdf, gitbook or directly in Nelson help viewer.
Tests engine:
Validate your algorithm using Nelson dedicated functions. Export the test results under the xUnit reports format.
Profiling and Code coverage tools for Nelson's language:
Nelson has a built-in profiler that is very useful to profile your code and find out what script or function is taking the most time.
Nelson cloud: Instant access to Nelson anywhere from an web browser.
Module skeleton to extend Nelson available here:
Nelson Modules Manager (nmm) : package manager for Nelson
Previous changelog
Last updated
Was this helpful?