Releases: nelson-lang/nelson
v1.6.0
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.jas imaginary unit number is also supported. example3+2jequivalent to3+2i.FollowLocationoption forweboptions- 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
v1.5.0
1.5.0 (2024-05-31)
Added
-
dictionarydata 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,keyMatchfor python objects.isabuiltin 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.
v1.4.0
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. -
pyenv: can use environment variables to set values. -
pyrun: Python code object allowed as first input argument. -
nelson --without_pythonstarts 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,mkdirallow 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.listcompatibility increased.pyenvdid 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.
v1.3.0
1.3.0 (2024-03-30)
Added
-
Python interface (part 1):
- CMake: Optional Python3 detection.
pyenvChange default environment of Python interpreter.pyrunRun Python statements from Nelson.- Major types conversions are compatible (numpy in the next upcoming version).
-
ArchLinux packaging (https://aur.archlinux.org/packages/nelson-git).
-
contourContour plot of matrix. -
contour33-D contour plot. -
shiftdimShift array dimensions. -
xcorr22-D cross-correlation. -
deconvDeconvolution and polynomial division. -
vecnormVector-wise norm. -
normpdfNormal probability density function. -
#310
gammalnLogarithm of gamma function. -
#1112
gradientNumerical gradient. -
#1126
isspaceDetermine which characters are space characters.
Changed
- #1110 Eigen master branch (352ede96e4c331daae4e1be9a5f3f50fff951b8d) ready to use.
- #1134 [CI] MacOS X Ventura disabled (Install dependencies fails)
structsupports 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.
gcdwithout argument returned wrong error message.- #1133 [CI] [ARCH LINUX] Warning about MPI.
v1.2.0
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 wheelorCTRL + +/-to zoom in/out on console, editor, help.- Toolbar for figure with print, zoom in, zoom out, rotation, pan, restore axes.
zoom,pan,rotate3dfunctions.MenuBar,ToolBarfigure properties.- Window menu on graphic window, list all others available windows.
featurebuiltin (undocument features, debug, tests, ...) content can change with next releases.GridAlpha,GridColor,Viewproperties for Axes.- CTRL+C in help viewer, copy selected text.
checkupdatefunction and check update menu.isScalarStringArrayiinternal 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.
saveasexports the figure as a PDF page with centered alignment.- Default color of grid for axes.
- Default figure size updated.
- Default
MarkerFaceColorvalue 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.
v1.1.0
v1.0.0
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.
-
OpenMPandSIMDextensions 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
v0.7.12
0.7.12 (2023-12-23)
Changed
- #674 Migrate sources to nelson-lang github organization.
- #775
quit,exit,startup.m,finish.mbehavior reworked for compatibility. - JSON for Modern C++ version 3.11.3 used on all platforms.
- {fmt} 10.1.1 (6f95000) used.
- Fedora 39 CI support.
Fixed
cellfundid not check type of second input argument.
Added
-
filter1-D digital filter. -
control system module (part 2):
freqrespEvaluate system response over a grid of frequencies.stepSimulate continuous time model of a state space model or transfer function.lsimPlot simulated time response of dynamic system to arbitrary inputs.dc2Convert model from discrete to continuous time.c2dConvert model from continuous to discrete time.augstateAppend state vector to output vector.kalmanDesign Kalman filter for state estimation.evalfrEvaluate system response at specific frequency.nyquistNyquist plot of frequency response.ord2Generate continuous second-order systems.appendGroup models by appending their inputs and outputs.feedbackFeedback connection of multiple models.parallelParallel connection of two models.seriesSeries connection of two models.ssdeleteRemove inputs, outputs and states from state-space system.ssselectExtract subsystem from larger system.tzeroInvariant zeros of linear system.tf2ssConvert transfer function filter parameters to state-space form.ss2tfConvert state-space representation to transfer function.minrealMinimal realization or pole-zero cancellation.ssdataAccess state-space model data.tfdataAccess transfer function data.gramControllability and observability Gramians.hsvdHankel singular values of a state-space or transfer function model.dampNatural frequency and damping ratio.balrealGramian-based balancing of state-space realizations.lqryForm linear-quadratic (LQ) state-feedback regulator with output weighting.- #957
dlqrLinear-quadratic (LQ) state-feedback regulator for discrete-time state-space system. - #961
lqedDiscrete Kalman estimator design from continuous cost function. - #960
lqeKalman estimator design for continuous-time systems. - #955
lqrLinear-Quadratic Regulator (LQR) design. - #943
dareSolve discrete-time algebraic Riccati equations. - #951
careContinuous-time algebraic Riccati equation solution. - #945
ctrbfCompute controllability staircase form. - #946
ctrbControllability of state-space model. - #963
obsvObservability matrix. - #964
obsvfCompute observability staircase form. - #949
ackerPole placement gain selection using Ackermann's formula. - #950
bdschurBlock-diagonal Schur factorization. - #952
cloopClose unity feedback loops. - #953
comprealCompanion realization of transfer functions. - #959
gensigCreate periodic signals for simulating system response.
v0.7.11
0.7.11 (2023-11-29)
Added
histHistogram plot.barBar graph.scatterScatter plot.stemPlot discrete sequence data.stairsStairstep graph.fill2-D patch.pielegacy pie chart.subsrefSubscripted reference.subsasgnRedefine subscripted assignment.substructCreate structure argument for subsasgn or subsref.dealDistribute inputs to outputs.- Intel compiler support.
Changed
- axis limits recalculate with
hggroup. axesforces focus on current axe.- function_handle parenthese precedence.
patchandfillmanagesFaceAlpha.- visibility title and labels.
- object constructor must be in '@' directory and no more in parent directory (compatibility).
subsref,subsasgncompatibility withsubstruct.- To display a percent sign, you need to use a double percent sign (%%) in the format string (compatibility).
- French translation updated (100%, Thanks to weblate contributors)
- #997 Macos BigSur Github CI support removed.
- Qt 6.6.1 on win64 CI build.
Fixed
A = []; A(false) = zeros(3, 0)did not return an empty matrix but an error.
v0.7.10
0.7.10 (2023-10-27)
Added
-
private functions/folders support (to limit the scope of a function).
-
syntax extended to facilitate the creation of literal integers without loss of precision:
- example:
18446744073709551615u64,18446744073709551615i64(similar to rust syntax)
- example:
-
flintmax('like', p)syntax added. -
int64,uint64warning about double-precision. -
#570 balance: Diagonal scaling to improve eigenvalue accuracy.
-
isobjectCheck whether the input is an object. -
cell2matConvert cell array of matrices to single matrix. -
#948
blkdiagCreate a block diagonal matrix from 2D matrices of different sizes. -
kronKronecker tensor product. -
strjustJustify strings. -
control system module (part 1):
- #967 control system module template.
- #944
mag2db,db2mag,pow2db,db2powfunctions. - #968
zp2tf: Zero-pole to transfer function conversion. - #954
dcgain: Low-frequency (DC) gain of LTI system. - #965
padecoef: Padé approximation of time delays. - #958
esort: Sort continuous-time poles by real part. dsort: Sort discrete-time poles by magnitude.- #962
lyap: Continuous Lyapunov equation solution. dlyap: Discret Lyapunov equation solution.abcdchkVerifies the dimensional compatibility of matrices A, B, C, and D.ss: State-space model.tf: Transfer function model (display, horzcat, vertcat, size).isct: checks if dynamic system model is in continuous time.isdt: checks if dynamic system model is in discret time.isstatic: checks if model is static or dynamic.islti: checks if variable is an linear model tf, ss or zpk.issiso: checks if dynamic system model is a single input and single output.zero: Zeros and gain of SISO dynamic system.pole: Poles of dynamic system.bode: Bode plot of frequency response, magnitude and phase data.
Changed
- some modules (nig, modules_manager, help_browser) reworked to use private functions.
- Windows 64 bit CI and release use Qt 6.6.0
Fixed
- #940 title bar on dark theme on Windows.
- help viewer using dark theme.
- adjust position
xlabelonfigure. - #976 wrong output when reading a file with fscanf with size argument.
- #975 Legend color (and width) is not matching that of curve in figure.
- #988 anonymous function serialization '.^' and '^' are inversed.