Awesome
<div align="center"> <a href="https://nelson-lang.github.io/nelson-website/" target="_blank"> <img src="https://github.com/nelson-lang/nelson/blob/master/resources/banner_nelson_small.png?raw=true" alt="Nelson Logo" width="210" height="142"></img> </a> </div> <br> <br> <table> <tr> <td> <a href="https://github.com/nelson-lang/nelson/actions/workflows/ccpp.yml"><img src='https://github.com/nelson-lang/nelson/workflows/C%2FC%2B%2B%20CI/badge.svg'/></a> </td> <td> <a href="https://github.com/nelson-lang/nelson/actions/workflows/codeql-analysis-cpp.yml"><img src='https://github.com/nelson-lang/nelson/actions/workflows/codeql-analysis-cpp.yml/badge.svg'/></a> </td> <td> <a href="https://bestpractices.coreinfrastructure.org/projects/602"><img src='https://bestpractices.coreinfrastructure.org/projects/602/badge'/></a> </td> </tr> </table>π 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.
π οΈ 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
- Nelson Cloud: Instant access to Nelson from any web browser via Nelson Cloud.
- Module Skeleton: Templates for extending Nelson:
- Nelson Modules Manager (nmm): A package manager to install and manage extensions for Nelson.
π₯ Download
Get it from the Windows Package Manager
Get it from the Chocolatey Package Manager
π Resources
- Homepage: https://nelson-lang.github.io/nelson-website/
- GitBook: https://nelson-9.gitbook.io/nelson/
- Documentation: https://nelson-lang.github.io/nelson-website/help/en_US/
- Source code: https://github.com/nelson-lang/nelson
- Binaries: https://github.com/nelson-lang/nelson/releases
- Docker: https://hub.docker.com/r/nelsonsoftware/nelson/
- Gitter: https://gitter.im/nelson-lang/Lobby
- YouTube: https://www.youtube.com/channel/UCdZMnH0HC9XflNGAFFiRX9g
- Twitter: https://twitter.com/Nelson_software
- LinkedIn: https://www.linkedin.com/groups/13576150
π License
Nelson is delivered under dual-license:
π» Supported Platforms
Nelson is tested and supported on a wide range of platforms. Downloads options and continuous integration (CI) status are listed below:
Operating System | Architecture | CI | Binaries |
---|---|---|---|
Windows 10, 11 | x86-64, i686 | β | β |
macOS Sequoia | ARM64 | β | |
macOS Sonoma | ARM64 | β | |
macOS Ventura | x86-64 (64-bit) | β | |
Ubuntu 24.04 | x86-64 | β | β (Snap) |
Ubuntu 22.04 | x86-64 | β | β (Snap) |
Ubuntu 20.04 | x86-64 | β | β (Snap) |
Fedora 40 | x86-64 | β | β (Snap) |
ArchLinux | x86-64 | β | β (Snap) |
Raspbian | ARM v8 (64-bit) |
Note: The continued support of some platforms may depend on community contributions.
Allan CORNET (nelson.numerical.computation@gmail.com)