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.
Enhanced random number generation engine with new algorithms: simdTwister, combRecursive, philox, and threefry.
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 openvar or the GUI, it supports structured variables, tables, arrays, and nested data. Features include:
Continuation prompt: Context-aware prompts to enhance interactive command workflows.
Expanded type support for missing types, increasing compatibility across functions and data structures.
missing function: 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 -file argument for direct reading and decoding of JSON files from disk.
tdigest: Introduced t-digest algorithm for accurate quantile estimation with configurable compression parameters.
crc32 builtin: Compute CRC32 checksum of a file or string.
markdown: Added option to select output format (secure or advanced).
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.
Help framework reworked for improved performance and usability:
http:// links with https:// for secure connections.help_browser module.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.json to 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:
Removed several dependencies on Boost to reduce build complexity and improve portability.
ans variable: Ensured ans is 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.
eye without input argument managed.
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.nebula, flag, prism.WindowState for Figure objects.Units for UIControl objects.DefaultFigureAlphamap, DefaultFigureColormap as root properties.nix develop, providing a reproducible Bash shell preconfigured with Nelson’s build environment.justfile to streamline and standardize the build process across platforms.scatter improvements:
scatter3 now supports alpha channel.spy now uses scatter instead of plot for better accuracy.DefaultFigureColormap root property.axes function did not properly manage figure objects.io.github.nelson_lang.Nelson.This release introduces performance improvements and new graphical capabilities while deprecating support for 32-bit Windows versions.
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 plot and plot3 functions for increased speed. Example:
tic(); plot(rand(300,300), rand(300,300)); toc();
Dependencies Updated:
fmtlib to version 11.1.3.Internal Enhancements:
SLICOT module incorporates SLICOT library 5.9, which is distributed under the BSD-3-Clause license.
SLICOT module available on all platforms by default.python 3.13.2 embedded on Windows
Double Buffering for Plots:
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:
ollama with Nelson:
edit([modulepath('webtools'), '/examples/ollama/readme.md'])
CMake Enhancement:
ENABLE_AVX2 CMake option for systems that support AVX2.MacOs: Default terminal did not use monospaced font.
Some warnings detected with PVS-studio
Julia interface (part 1):
jlenv: Change default environment of Julia interpreter.jlrun: Run Julia statements from Nelson.jlrunfile: Run Julia file from Nelson.bar, scatter manage color name and short colorname.
Github CI Ubuntu 24.04 arm64 (Cobalt 100 processor).
Github CI Snapcraft build amd64 and arm64.
Snapcraft arm64.
mustBeSparse validator function.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 argument isprotected added.editor('editor_command', cmd) allows to change text editor in Nelson (for example: VS Code).NELSON_RUNTIME_PATH environment variable added by installer on Windows.--vscode command line argument 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.mustBeMatrix, mustBeRow, mustBeColumn validator functions.join: Combine strings.VariableTypes property for table: Specify the data types of table in Nelson.hour, minute, second component of input date and time.narginchk, nargoutchk support for check only minimun arguments narginchk(3, Inf).title: Visible property is inherited from the parent if not explicitly defined.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.datevec result must be normalized.Table direct computation:
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.plus, minus, times, eq, ge, gt, le,
ne, lt, rdivide, rem, power, pow2, or, mod, ldivide.end magic keyword can be overloaded for classes (applied to table class).
#1250 head, tail functions for table and array.
#1248 removevars, renamevars functions for table.
table Data Type:
Introduced the table data type, offering enhanced functionality for structured data manipulation.
Overloaded methods specific to the table data type:
disp, display for table display.horzcat, vertcat for horizontal and vertical concatenation.isempty to check if the table is empty.isequal, isequalto for table comparison.properties for accessing table metadata.subsasgn for subscripted assignment.subsref for 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 the table data typeResize - Resize figure property.
#36 datenum format compatibility extended.
#37 datestr Convert date and time to string format.
uicontrol Create user interface control (button, slider, edit, list box, etc.).waitfor Block execution and wait for condition.waitforbuttonpress — Wait for click or key press.im2double — Convert image to double.CloseRequestFcn — Close request callback for figure.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, ButtonDownFcn properties for figure.Refactor the internal implementation of the ‘system’ built-in function.
Python 3.12.5 on Windows.
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.j as imaginary unit number is also supported. example 3+2j equivalent to 3+2i.FollowLocation option for weboptionssort: speed optimization.
Windows dependencies updated and rebuild with minimal dependencies:
Unicode® Standard, Version 15.1 support
simdutf 5.2.8
fast_float 6.1.1
dtl 1.2.0
bode did not unwrap phase.balance yields wrong Transformation Matrix.diag may return wrong sub-diagonals.expm might give wrong results.dictionary data 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):
keyHash, keyMatch for python objects.isa builtin support python types.dictionary(pyDict)strcmp({'a'},["a"]) did not return expected value.Python interface (part 2):
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_python starts nelson without python engine.
skip_testsuite: allows to skip test suite dynamically on condition.
copyfile, isfile, isdir, mkdir allow string array type as input.single(int64([1 2; 3 4])) returned a wrong value.py.tuple, py.list compatibility increased.pyenv did not manage python’s path with space on Windows.Python interface (part 1):
pyenv Change default environment of Python interpreter.pyrun Run Python statements from Nelson.ArchLinux packaging (https://aur.archlinux.org/packages/nelson-git).
contour Contour plot of matrix.
contour3 3-D contour plot.
shiftdim Shift array dimensions.
xcorr2 2-D cross-correlation.
deconv Deconvolution and polynomial division.
vecnorm Vector-wise norm.
normpdf Normal probability density function.
#310 gammaln Logarithm of gamma function.
#1112 gradient Numerical gradient.
#1126 isspace Determine which characters are space characters.
struct supports scalar string array as field name.gcd without argument returned wrong error message.Export to ... context menu for console and text editor as pdf.CTRL + Mouse wheel or CTRL + +/- to zoom in/out on console, editor, help.zoom , pan , rotate3d functions.MenuBar, ToolBar figure properties.feature builtin (undocument features, debug, tests, …) content can change with next releases.GridAlpha, GridColor, View properties for Axes.checkupdate function and check update menu.isScalarStringArray iinternal API C++ method.saveas exports the figure as a PDF page with centered alignment.MarkerFaceColor value for compatibility.LineStyle, LineWidth properties were not implemented for surface objects.sky, abyss colormaps.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.
Types managed by Nelson:
OpenMP and SIMD extensions 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