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.
Nelson 2.0 is a major release. It includes a faster language engine based on bytecode, object-oriented programming with classdef, NFlow (a visual block diagram editor with simulation and C/Rust code generation, first release 1.0.0-beta.1), a preview of the web desktop (including a WebAssembly build that runs in the browser), and many new data types, graphics functions, statistics functions, and developer tools.
Existing scripts run faster. Larger projects can use packages, imports, nested and local functions, argument validation, and classes. Data analysis gains dates, tables, timetables, and categorical arrays.
import, nested functions, local functions in scripts, and localfunctions.arguments validation blocks (including Repeating and name-value arguments), plus validateattributes, validatestring, and inputParser.f().Field, f()(1), f(){1}.classdef)Dependent, Observable, Transient, AbortSet, and SetAccess = immutable.nelson.mixin.* base classes (SetGet, Heterogeneous, Copyable, CustomDisplay).metaclass and ?ClassName introspection, and save/load of custom objects.sim(), linmod, and trim run models from scripts.new_system, add_block, add_line, get_param/set_param, find_system) changes made from scripts appear immediately in the editor.nelson-webview launcher (native window by default, --web to serve over HTTP); getwebmode and getweburl query the active mode.uicontrol, ui components, and standard dialogs work as HTML widgets and modals.iswasm reports the platform. This build is single-threaded and excludes native extensions, process creation, and code generation.datetime, duration, and calendarDuration with calendar-aware arithmetic, time zones, daylight saving time, and NaT.timetable (sorting, retime, synchronization, time-range queries) and timeseries types; direct math on table, timetable, and eventtable with unit propagation.categorical array type, including ordinal categories and table integration.compose, extractBetween, insertAfter, pad, split, strjoin, and more) and nelson.lang.makeValidName / makeUniqueStrings.single and single-complex support, iterative solvers (gmres, pcg, bicgstab, lsqr, minres, and more), ilu/ichol for single precision, and eigs/svds for sparse single inputs.mov* family), cumulative extrema, bounds, mode, expm1, reallog, and realsqrt.ode_solvers interface, an optional SUNDIALS backend, automatic stiff/non-stiff switching, delay differential equations, sensitivity analysis, and sparse Jacobians.fsolve, lsqnonlin, and fmincon with the standard algorithm families and output structures.predict, and outlier handling.isosurface), figure annotations, and surface lighting (light, camlight, material, shading, fsurf).gobjects, gco, gcbo, gcbf, allchild, findall, findfigs, copyobj, reset) and many more properties on graphics objects.uifigure: panels, button groups, tab groups, grid layouts, check boxes, radio and toggle buttons, dropdowns, list boxes, edit fields, spinners, sliders, knobs, gauges, lamps, switches, date pickers, uitable, uitree, and uiaxes..xlsx read/write on every platform, an optional netcdf module, optional Parquet support, and XML document APIs (xmlread, xmlwrite, xslt, readstruct, writestruct).nelson Python package drives a Nelson session from Python; NumPy and pandas convert in both directions; pyfunction lets Python code call back into Nelson.checkcode, codeIssues) with inline editor diagnostics and one-click fixes; %#ok comments exclude individual lines.nelson-lint command-line linter for CI/CD (SARIF, JSON, plain text) and nelson-lsp language server.nelson.unittest test runner (HTML, JSON, JUnit XML, TAP13 reports, retries, sharding), the mocking module (nelson.mock), and the method-style asserts.* API.nmm package manager: registry search, recursive dependency resolution with semantic-version constraints, lockfiles with SHA-256 checksums, Ed25519-signed registries, transactional installs with rollback, and publishing workflows.crypto.* namespace: Ed25519 signatures, SHA-256/SHA-512, HMAC, BLAKE2b, Argon2, secure random bytes, X25519, and XChaCha20-Poly1305 authenticated encryption.format('truncateMatrices', ...)), and cprintf for styled console output.gpu_engine module providing gpuArray device arrays through WebGPU.end is now required to close blocks, and a mismatch between a script’s filename and its function name is reported as a clear error.clear accepts patterns and string names, and clear classes properly cleans up class data.filter, upfirdn, and string-array + use native backends.nig module moved out of the core distribution: install the external ngen module and use ngen.gateway(functions, destination) instead of nig(functions, destination).fn.Member.Method(args) on an object returned by a zero-argument function works when the member name starts with an uppercase letter.Inf(n) and NaN(n) return an n-by-n matrix, and both accept a class name and a 'like' prototype.catch ex followed by an empty block is accepted.jsondecode no longer leaks memory on JSON arrays.missing into part of a numeric or string array keeps the array class; [missing missing] builds a missing array.double(pyObject)-style casts work after a same-named method call.ishandle checks validity element by element, findobj distinguishes visible-handle from all-handle searches, stem(Y) uses one-based x-coordinates, patch with FaceColor none renders without a black fill, and axes with empty manual ticks render cleanly.--timeout is now a hard limit: the process is terminated when graceful shutdown hangs.diff, interp1, interp2, and interp3 are now builtins and run 5 to more than 70 times faster on small inputs, with unchanged results.nelson-webview, nelson-lint, and nelson-lsp; nelson-sio-cli is gone.GetGatewayDescriptor, and the legacy GetGatewayInfo/GetGatewayName exports were removed.nmm registries require a registry.json.sha256 sidecar (local) or an Ed25519 registry.json.sig sidecar (remote); module.json validation is stricter.ArrayOf, Dimensions, handles, exceptions) was renamed to a consistent convention with no compatibility aliases.