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.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.

  • 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.

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

  • 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 table

      • height: Retrieve the number of rows in the table

      • istable: Check if a variable is of the table data type

  • Resize - Resize figure property.

  • #36 datenum format compatibility extended.

  • #37 datestr Convert 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

  • 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.

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.

  • j as imaginary unit number is also supported. example 3+2j equivalent to 3+2i.

  • FollowLocation option for weboptions

  • oneAPI 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 bode did not unwrap phase.

  • #1206 balance yields wrong Transformation Matrix.

  • #1205 diag may return wrong sub-diagonals.

  • #1202 buildhelpmd does not generate SUMMARY as expected.

  • #1201 Matrix Exponential expm might give wrong results.

  • #1200 Matrix Parsing/Evaluation trouble.

1.5.0 (2024-05-31)

Added

  • 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):

    • #1160 Python operators in Nelson.

    • keyHash, keyMatch for python objects.

    • isa builtin 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_python starts 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, mkdir allow 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.list compatibility increased.

  • pyenv did 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.

    • pyenv Change default environment of Python interpreter.

    • pyrun Run Python statements from Nelson.

    • Major types conversions are compatible (numpy in the next upcoming version).

  • 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.

Changed

  • #1110 Eigen master branch (352ede96e4c331daae4e1be9a5f3f50fff951b8d) ready to use.

  • #1134 [CI] MacOS X Ventura disabled (Install dependencies fails)

  • struct supports 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.

  • gcd without 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 wheel or CTRL + +/- to zoom in/out on console, editor, help.

  • Toolbar for figure with print, zoom in, zoom out, rotation, pan, restore axes.

  • zoom , pan , rotate3d functions.

  • MenuBar, ToolBar figure properties.

  • Window menu on graphic window, list all others available windows.

  • feature builtin (undocument features, debug, tests, ...) content can change with next releases.

  • GridAlpha, GridColor, View properties for Axes.

  • CTRL+C in help viewer, copy selected text.

  • checkupdate function and check update menu.

  • isScalarStringArray iinternal 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.

  • saveas exports the figure as a PDF page with centered alignment.

  • Default color of grid for axes.

  • Default figure size updated.

  • Default MarkerFaceColor value 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, LineWidth properties were not implemented for surface objects.

  • sky, abyss colormaps.

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.

  • 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

Previous changelog

Changelog v0.7.x

Changelog v0.6.x

Changelog v0.5.x

Changelog v0.4.x

Changelog v0.3.x

Changelog v0.2.x

Changelog v0.1.x

Last updated