Skip to content

Releases: nelson-lang/nelson

v1.14.0

30 May 06:39
Compare
Choose a tag to compare

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:
    • WindowState for Figure objects.
    • Units for UIControl objects.
    • DefaultFigureAlphamap, DefaultFigureColormap as root properties.
  • Support for nix develop, providing a reproducible Bash shell preconfigured with Nelson’s build environment.
    See BUILDING.md for details.
  • A justfile to streamline and standardize the build process across platforms.
  • Support for:
    • Fedora 42.
    • Flatpak package distribution.

Changed

  • scatter improvements:
    • 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).
  • scatter3 now supports alpha channel.
  • spy now uses scatter instead of plot for better accuracy.
  • Colormap handling updated to use the new DefaultFigureColormap root 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: axes function 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.

v1.13.0

29 Mar 15:32
Compare
Choose a tag to compare

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 plot and plot3 functions for increased speed. Example:

    tic(); plot(rand(300,300), rand(300,300)); toc();
  • Dependencies Updated:

    • Upgraded fmtlib to 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.
  • 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

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 ollama with Nelson:
      edit([modulepath('webtools'), '/examples/ollama/readme.md'])
  • CMake Enhancement:

    • Introduced ENABLE_AVX2 CMake option for systems that support AVX2.
    • CMake dependencies reworked.

Fixed

  • MacOs: Default terminal did not use monospaced font.

  • Some warnings detected with PVS-studio

v1.12.0

16 Feb 15:14
Compare
Choose a tag to compare

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

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.

v1.11.0

11 Jan 12:21
Compare
Choose a tag to compare

1.11.0 (2025-01-11)

Added

  • #1321 mustBeSparse validator 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 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.
  • 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.

v1.10.0

14 Dec 15:41
Compare
Choose a tag to compare

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, mustBeColumn validator functions.
  • join: Combine strings.
  • #1292 Large Table Display.
  • #1290 VariableTypes property for table: Specify the data types of table in Nelson.
  • hour, minute, second component of input date and time.

Changed

  • narginchk, nargoutchk support for check only minimun arguments narginchk(3, Inf).
  • Fedora 41 CI
  • title: Visible property 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 datevec result must be normalized.
  • #1297 some features have no help files.
  • #1276 micromamba macos build.

v1.9.0

26 Oct 12:36
4729062
Compare
Choose a tag to compare

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.

v1.8.0

05 Oct 12:57
Compare
Choose a tag to compare

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.

v1.7.0

28 Aug 17:34
Compare
Choose a tag to compare

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.

v1.6.0

29 Jun 18:44
Compare
Choose a tag to compare

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.

v1.5.0

31 May 18:37
Compare
Choose a tag to compare

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.