Skip to content

nelson-lang/nelson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Visitor Badge



The Nelson language

The main homepage for Nelson can be found at https://nelson-lang.github.io/nelson-website/.

Starring the repository

If you found this project useful, please consider starring it on GitHub !!! This allows me to see how many people are using my code, and motivates me to keep working to improve it.

Introduction

Nelson is a powerful, open-source numerical computational language, developed to provide a comprehensive and intuitive environment for engineers, scientists, and students. With over 1,200 built-in functions, Nelson supports a wide range of tasks, from basic algebra to advanced numerical simulations.

Originally inspired by languages like MATLAB© and GNU Octave, Nelson offers users a lightweight yet feature-rich experience. It is designed to be easy to learn and use, with an emphasis on performance and flexibility.

Nelson environment

Features

Data Types Managed by Nelson

  • Double and Complex Double: Supports scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
  • Single and Complex Single: Includes scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
  • Logical: Handles scalars, vectors, 2D matrices, N-dimensional arrays, and sparse matrices.
  • Character Arrays: Supports UNICODE characters.
  • String Arrays: Fully supports UNICODE.
  • Integers: 8, 16, 32, and 64-bit signed and unsigned scalars, vectors, 2D matrices, and N-dimensional arrays.
  • Handle Objects: For object-oriented functionality.
  • Anonymous Functions: Allows creation and manipulation of functions without names.
  • Data Structures: Supports dictionaries and tables.
  • Overloading: All types can be overloaded for custom behavior.

Performance Enhancements

  • OpenMP and SIMD: Utilizes parallel processing and vectorization for faster computations.

Visualization & Interface

  • 2D and 3D Plotting: High-level commands for visualizations.
  • User Interface Controls: Built-in controls for creating custom interfaces.
  • Desktop Environment: Comes with history tracking, a file explorer, and workspace browser.

Advanced Modules

  • Parallel Computing: Enables efficient use of multi-core processors.
  • Fast Fourier Transform (FFT): High-performance FFT functions based on FFTW and MKL.
  • SLICOT Interface: Optional support for the Systems and Control Theory subroutine library.
  • Control System Module: Tools for control theory and system design.
  • MPI (Message Passing Interface): Functions for distributed parallel computing.

Data Formats & Interfacing

  • JSON Support: Read and write JSON files.
  • HDF5 Functions: High-level I/O functions, with HDF5 as the default file format for .nh5 workspaces.
  • MAT-File Compatibility: Load and save workspaces in MAT-file format.
  • Foreign Function Interface (FFI): Build and load C/Fortran code on the fly.
  • MEX C API Compatibility: Interfacing with MEX-compatible C APIs.
  • Nelson Engine API: Use Nelson as a backend engine within C code, compatible with the MEX Engine API.
  • Python Interfacing: Call Python scripts and functions from Nelson.
  • RESTful API: Enables Nelson to interact with web services.

Additional Capabilities

  • Inter-Process Communication: Communicate between Nelson processes.
  • QML Engine: Use Qt’s QML framework to display and manipulate graphical content.
  • Component Object Model (COM): Interface with COM components, especially on Windows.
  • Excel File Support: Write and read .xlsx files using COM on Windows.
  • Embedded Code Editor: Integrated editor for Nelson scripts.

Help & Testing Tools

  • Help Engine: Generate and view help files in various formats like HTML, Markdown, PDF, or GitBook.
  • Test Engine: Validate algorithms using built-in functions, with support for xUnit report export.

Profiling & Code Coverage

  • Profiler: Built-in profiler to analyze and optimize code performance.
  • Code Coverage: Measure the coverage of your tests to ensure thorough validation.

Cloud & Extensibility

Download

Get it from the Snap Store

Latest Windows Installer

Get it from the Windows Package Manager

Get it from the Chocolatey Package Manager

Resources

License

Nelson is delivered under dual-license:

  • License (GNU Lesser General Public License (LGPL) v3.0)

    or

  • License (GNU General Public License (GPL) v3.0)

Tested and supported platforms

Systems with ✓ downloads are available on downloads page.

Systems with ✓ for CI are tested with continuous integration for every commit.

The systems listed here without CI or binaries are known to build and operate, but the continued support of these platforms is user-dependent.

Operating System Architecture CI Binaries
Windows 7 to 11 x86-64 (64-bit)
i686 (32-bit)
macOS Sonoma arm64 (M1)
macOS Ventura x86-64 (64-bit)
macOS Monterey x86-64 (64-bit)
Ubuntu 24.04 x86-64 (64-bit) ✓ (snap)
Ubuntu 22.04 x86-64 (64-bit) ✓ (snap)
Ubuntu 20.04 x86-64 (64-bit) ✓ (snap)
Ubuntu 18.04 x86-64 (64-bit) ✓ (snap)
ArchLinux x86-64 (64-bit) ✓ (snap)
Fedora 36 x86-64 (64-bit) ✓ (snap)
Raspbian ARM v8 (64-bit)

Allan CORNET (nelson.numerical.computation@gmail.com)