{"slug": "v0-4-0", "title": "v0.4.0", "summary": "RunMat released versions 0.5.6 and 0.5.5 in June 2026, adding a Command Window (REPL) for interactive execution, Mermaid diagram support, and expanded MATLAB compatibility including GPU acceleration and new functions. The updates improve runtime behavior, fix rendering issues, and enhance developer tools.", "body_md": "# RunMat Changelog\n\n*What's new across RunMat. See GitHub Releases for runtime release binaries.*\n\n[v0.5.6](https://github.com/runmat-org/runmat/compare/v0.5.5...v0.5.6) - June 2026\n\n*June 28, 2026*\n\n### Desktop\n\n#### Added\n\n- Add a Command Window (REPL) for interactive RunMat execution, with terminal-style editing, command history, multiline input, selection/copy, LSP-backed syntax highlighting, persisted session transcripts, runtime variables, and figure integration\n- Add richer default sandbox content from file-backed fixtures, including a CAD STEP file, vibration dataset, 2D and 3D examples, signal filtering, flow-field, thermal diffusion, and a markdown welcome document\n- Add Mermaid diagram rendering and editing support in markdown documents alongside existing math and code rendering\n\n#### Changed\n\n- Improve runtime panel behavior so script and REPL runs keep variables, figures, and selected sessions aligned without unnecessary figure-output placeholder flicker\n- Improve plot, terminal, variable-table, and inspector layouts across narrow panels, resized workspaces, Safari, and Tauri\n- Load default sandbox files from a dedicated fixture directory instead of inlining them in code\n\n#### Fixed\n\n- Fix Monaco semantic-token timing so files receive highlighting on initial load\n- Fix REPL workspace probes so inspecting variables after a script run does not clear or hide existing figures\n- Fix markdown editor Mermaid blocks so diagrams render consistently with the markdown renderer\n\n### Runtime\n\n#### Changed\n\n- Preserve comments in detailed lexer and LSP token streams while filtering them from parser-facing tokenization, enabling comment-aware semantic highlighting without changing parser behavior\n- Suppress final-expression output for command-form calls so commands such as\n`clc`\n\ndo not emit`ans`\n\n- Improve MIR read-before-assignment analysis through lowered temporary statements so diagnostics better reflect real initialization state\n\n#### Fixed\n\n- Fix\n`contour`\n\n,`contourf`\n\n, and`contour3`\n\nvalidation for MATLAB-style vector and meshgrid coordinate inputs - Fix CPU rendering and export of textured and image-mode surfaces so heatmap-like plots render through textured quads with correct colormap data\n\n[v0.5.5](https://github.com/runmat-org/runmat/compare/v0.5.3...v0.5.5) - June 2026\n\n*June 26, 2026*\n\n### Runtime\n\n#### Added\n\n- Add broader MATLAB compatibility across I/O, signal processing, optimization, symbolic math, plotting, control systems, and array construction, including\n`xlsread`\n\n,`writecell`\n\n,`textscan`\n\n,`importdata`\n\n,`uiputfile`\n\n,`unzip`\n\n,`imwrite`\n\n,`audioread`\n\n,`audioinfo`\n\n,`pwelch`\n\n,`periodogram`\n\n,`spectrogram`\n\n,`freqz`\n\n,`filtfilt`\n\n,`fir1`\n\n,`buttord`\n\n,`envelope`\n\n,`zplane`\n\n,`pskmod`\n\n,`lsqcurvefit`\n\n,`fminunc`\n\n,`quad`\n\n,`digits`\n\n,`vpa`\n\n,`int`\n\n,`nan`\n\n,`inf`\n\n,`zero`\n\n,`damp`\n\n, and`polarplot`\n\n- Add MAT-file save/load coverage, including append workflows, and expand spreadsheet/text import/export paths through provider-backed filesystems\n- Add resident GPU execution paths for complex math, signal, communication, modulation, Hilbert, gradient, reshape, meshgrid, polynomial integration, gamma, sinc, sign, and trigonometric workflows\n\n#### Changed\n\n- Expand GPU acceleration plumbing with dedicated WGPU shader modules for signal and communications workloads, complex tensor residency, and shared provider APIs\n- Improve plotting and scene export behavior, including async replay/export handling, image export ownership, geometry renderer grid toggles, colormap command syntax, and portable rendering metadata\n- Harden runtime filesystem and diagnostic-path behavior so source paths, CWD-sensitive workflows, remote writes, create-new semantics, and WASM provider paths stay consistent across native, browser, and Windows environments\n\n#### Fixed\n\n- Fix GC safety by replacing dereference-oriented pointer APIs with opaque handles, explicit root guards, guarded borrow access, thread-local rooting, and Miri-backed soundness coverage\n- Fix WebAssembly and release publishing issues around OCCT feature wiring, generated builtin registries, TypeScript package builds, headless compatibility checks, and nested crate publishing\n- Fix Windows CI and runtime compatibility issues involving path handling, OpenBLAS/LAPACK linking, CWD behavior, file dialog tests, and release build tooling\n- Fix GPU/runtime regressions in image normalization, lazy-transpose reshape, WGPU complex trigonometry overflow handling, communications modulation fallback, constellation portability, envelope input layout, and complex unary metadata handling\n\n### Development\n\n#### Changed\n\n- Document OCCT/CMake build requirements, add no-OCCT build support, align Linux and Windows runner bootstrap scripts, and move runtime WASM helper scripts into the runtime script namespace\n\n[v0.5.3](https://github.com/runmat-org/runmat/compare/v0.5.2...v0.5.3) - June 2026\n\n*June 17, 2026*\n\n### Runtime\n\n#### Added\n\n- Add broader symbolic math coverage —\n`syms`\n\n,`sym`\n\n, symbolic function declarations such as`syms y(x)`\n\n, symbolic powers, and scalar`limit`\n\nworkflows now execute through parser, HIR, runtime, VM, and WASM paths - Add signal, linear-algebra, and math builtins —\n`hilbert`\n\n,`unwrap`\n\n,`pulstran`\n\n,`rectpuls`\n\n,`tripuls`\n\n,`gauspuls`\n\n,`upsample`\n\n,`downsample`\n\n,`null`\n\n, and`heaviside`\n\nnow cover common signal-processing, numeric, and symbolic scripts - Add spreadsheet and file-selection workflows —\n`spreadsheetImportOptions`\n\n,`uigetfile`\n\n, expanded path commands, and provider-aware`cd`\n\nbehavior now work across local, sandboxed, remote, and WASM filesystem providers - Add root-locus plotting and output forms for transfer-function models\n\n#### Changed\n\n- Expand MATLAB command and call syntax support, including command-form path arguments,\n`grid minor`\n\n,`axis image`\n\n, and name-value call arguments written as`Name=value`\n\n- Improve plotting property compatibility for\n`figure`\n\n,`gca`\n\n, axes`FontSize`\n\n, figure`Name`\n\n,`NumberTitle`\n\n,`Visible`\n\n,`Color`\n\n,`BackgroundColor`\n\n, and get/set/dot-property access paths\n\n#### Fixed\n\n- Fix browser/WASM runtime traps in plotting and timing paths, including WebGPU plotting presentation, tic/toc handle encoding, and symptom-regression coverage for node and Chrome execution\n- Fix zero-output semantic function statement calls so direct, nested, persisted, and dynamic-eval functions do not request an output when MATLAB statement semantics require none\n- Fix\n`fzero`\n\noptional outputs so`[x,fval]`\n\n,`[x,fval,exitflag]`\n\n, and`[x,fval,exitflag,output]`\n\nreturn ordered MATLAB-compatible results - Fix byte-oriented\n`csvread`\n\nrange reads so non-UTF-8 or nonnumeric content outside the selected numeric rectangle does not fail selected CSV imports - Fix production name-resolution regressions for common builtins such as\n`rand`\n\n,`randn`\n\n,`tic`\n\n,`toc`\n\n,`gca`\n\n,`whos`\n\n,`tf`\n\n, and`null`\n\n### Sandbox\n\n#### Changed\n\n- Keep filesystem and path operations provider-aware across native, sandboxed, remote, and WASM backends while preserving native process-cwd behavior where appropriate\n\n[v0.5.2](https://github.com/runmat-org/runmat/compare/v0.5.0...v0.5.2) - June 2026\n\n*June 13, 2026*\n\n### Runtime\n\n#### Added\n\n- Add sparse matrix support —\n`sparse`\n\nnow introduces a sparse runtime value with display, metadata,`class`\n\n,`whos`\n\n, indexing, element-wise arithmetic, reductions, transposes,`find`\n\n,`nnz`\n\n, JSON/string conversion, WASM wire previews, and GPU fallback/residency integration - Add optimization and linear-algebra builtins —\n`linprog`\n\nand`rref`\n\nnow execute through runtime, VM, docs metadata, and generated builtin registration paths - Add table and import workflows —\n`readtable`\n\n, table objects, table`Properties`\n\n, dot/paren/brace table access and assignment, variable renaming,`height`\n\n,`width`\n\n,`groupsummary`\n\n, table-aware`sortrows`\n\n, datetime import support, and spreadsheet/text import plumbing cover common MATLAB tabular scripts - Add image and signal builtins —\n`imhist`\n\nand`butter`\n\nnow cover histogram and Butterworth-filter workflows with runtime, VM, docs metadata, and WebAssembly registry integration - Add SISO transfer-function control workflows —\n`tf('s')`\n\n,`tf('z', Ts)`\n\n, transfer-function algebra,`feedback`\n\n,`dcgain`\n\n,`pole`\n\n,`isstable`\n\n,`stepinfo`\n\n, and multi-system`step`\n\nplotting/output forms now cover common control scripts - Add MATLAB script execution support through\n`run`\n\n, including script side effects, plotting hooks, warnings, console output, and workspace updates across runtime and VM paths\n\n#### Changed\n\n- Generate and validate the WASM builtin registry from source-backed metadata, preserving proc-macro metadata so browser/runtime builds fail early when builtin coverage drifts\n- Refresh builtin documentation and reference metadata for the new sparse, optimization, table, image, signal, control, and script-execution builtins\n- Improve runtime dispatch, workspace, callable identity, and name-resolution plumbing needed by newly added builtins and workspace-visible zero-argument builtin calls\n\n#### Fixed\n\n- Fix workspace-first bare builtin reads so unshadowed builtins resolve correctly while assigned or loaded workspace variables still shadow builtin names\n- Harden sparse allocation and conversion paths, including extreme dimension checks, sparse triplet validation, sparse logical conversion, sparse preview truncation reporting, and sparse-to-dense guardrails before large tensors are materialized\n- Bound WASM wire payload previews so large values cannot exceed preview limits\n- Guard snapshot header bounds during snapshot loading\n- Fix a Windows CSV release issue in bytecode compilation paths\n\n[v0.5.0 ](https://github.com/runmat-org/runmat/compare/v0.4.9...v0.5.0) - June 2026\n\n*June 3, 2026*\n\nA major compiler and runtime revision. RunMat now resolves MATLAB language semantics through a staged, Rust-like compiler pipeline before bytecode is generated, and adds manifest-backed multi-file projects. See the [0.5 release post](/blog/runmat-runtime-0-5-release) and the [compiler pipeline deep dive](/blog/inside-runmat-runtime-compiler-pipeline).\n\n### Runtime\n\n#### Added\n\n- Add\n[project composition](/docs/runtime/getting-started/projects)—`runmat.toml`\n\nand`runmat.json`\n\nmanifests declare the package, source roots, local dependencies, and named entrypoints runnable through`runmat run <name>`\n\n, with source-root, package-folder (`+pkg`\n\n), class-folder (`@Class`\n\n), and private-helper discovery - Add source\nobjects — class source now produces real runtime objects with constructors, properties, methods, inheritance, access rules, value vs handle behavior, static members, super calls, and custom indexing hooks (`classdef`\n\n`subsref`\n\n/`subsasgn`\n\n) instead of a struct-like fallback - Expand\n[function](/docs/runtime/functions)semantics — requested-output-aware calls observable through`nargin`\n\n/`nargout`\n\n,`varargin`\n\n/`varargout`\n\n, local functions, nested functions that share parent scope, anonymous functions, captures, recursion, function handles,`feval`\n\n, and a supported`arguments`\n\nvalidation subset - Add explicit indexing context — reads, assignment targets, deletions,\n`end`\n\n, comma-list reads, function-argument expansion, and overloaded object indexing are resolved as distinct operations before bytecode - Add typed builtin descriptors — signatures, output behavior, completion policy, documentation, and stable error identifiers are shared across runtime execution, the\n[language server](/docs/runtime/lsp/features), and generated reference docs - Add structured\n[execution outcomes](/docs/runtime/session/execution-requests)— workspace deltas, display events, streamed output, diagnostics, observed workspace/environment effects, figures touched, profiling data, suspension state, and fusion-plan metadata for REPLs, notebooks, Desktop, WebAssembly, and embedded hosts - Add control-system builtins —\n`ss`\n\nnow constructs state-space model objects from validated`A`\n\n/`B`\n\n/`C`\n\n/`D`\n\nmatrices with continuous and discrete sample-time support, and`nyquist`\n\nnow computes or plots SISO`tf`\n\nfrequency responses with default or explicit frequency grids - Add communications builtins —\n`qammod`\n\nnow maps integer symbols to QAM constellations with Gray, binary, and custom ordering plus`UnitAveragePower`\n\nand`OutputDataType`\n\noptions, and`scatterplot`\n\nnow visualizes complex samples with decimation, offset, marker styling, and target-axes forms - Add plotting and export builtins —\n`contour3`\n\nnow creates 3-D contour line plots with contour levels rendered at their scalar heights, and`print`\n\nnow exports figures through MATLAB-style figure-handle, filename, device, and resolution arguments - Add optimization option support —\n`optimoptions`\n\nnow builds solver-specific option structs, validates name-value overrides, and copies or updates existing options structs for supported optimization solvers\n\n#### Changed\n\n- Migrate the compiler and runtime to a staged semantic\n[pipeline](/docs/runtime/compiler)—`source -> AST -> semantic HIR -> MIR -> MIR analysis -> VM layout + bytecode -> runtime/providers`\n\n— so names, functions, classes, output counts, indexing context, and workspace layout are resolved once and shared by the interpreter, language server, JIT, and acceleration planner - Remove the legacy AST-to-bytecode execution paths in favor of the semantic pipeline\n- Compile calls from typed callable identities and fallback policies — bound functions, builtins, dynamic names, external qualified names, methods, super calls, and\n`feval`\n\ntargets share one[dispatch](/docs/runtime/vm/dispatch)model, preserving function-handle identity - Make workspace-visible bindings explicit — script exports, function locals,\n`ans`\n\n, and dynamic workspace operations route through VM workspace context - Drive acceleration and\n[fusion](/docs/runtime/gpu/fusion)planning from semantic facts — the compiler identifies fusion candidates, operation kinds, and effects, while the runtime and provider own GPU residency and concrete execution - Split the WGPU provider out of a monolithic implementation into state, initialization, helper, trait, and operation modules\n- Give the\n[JIT](/docs/runtime/jit)a tagged value ABI boundary — semantic function identity, requested output counts, expanded arguments, and non-scalar runtime values now cross host calls, with the interpreter remaining the correctness fallback\n\n### Desktop\n\n#### Added\n\n- Add\n[RunMat Desktop](/blog/introducing-runmat-desktop)— a local, GPU-accelerated workspace for MATLAB-syntax code with an editor, plots, variables, notebooks, run history, local file access, optional cloud projects, and a project-aware Agent\n\n### Agent\n\n#### Added\n\n- Add runnable Agent code blocks — RunMat/MATLAB-style snippets in Agent answers now render with editor controls, can be copied, and can be sent directly to runtime execution\n- Add project-scoped Agent persistence so projects can restore Agent state through Desktop project settings such as\n`persist_agents`\n\nin`runmat.toml`\n\n- Add local-to-cloud project conversion support for Agent and history flows that need a cloud project\n\n#### Changed\n\n- Make Agent activity easier to follow by grouping long activity runs and replacing “Thinking” labels with clearer “Working” language\n- Improve Agent execution and project synchronization across Desktop, browser, local, and cloud runtimes\n\n[v0.4.9](https://github.com/runmat-org/runmat/compare/v0.4.8...v0.4.9) - May 2026\n\n*May 22, 2026*\n\n### Runtime\n\n#### Added\n\n- Add control-system response builtins —\n`step`\n\nand`impulse`\n\nnow compute or plot SISO`tf`\n\nresponses, support automatic, scalar-final-time, and explicit time-vector sampling, return response/time column vectors, and validate unsupported model forms with clear diagnostics - Add polygon plotting builtins —\n`patch`\n\nand`fill3`\n\nnow create filled 2-D and 3-D polygon graphics handles with`Faces`\n\n/`Vertices`\n\n, coordinate, color, axes-handle, and common patch property support, backed by shared triangulation and GPU plotting render paths - Add numerical analysis builtins —\n`integral`\n\nnow performs finite scalar adaptive quadrature for function handles, and`fminbnd`\n\nnow performs bounded scalar minimization with Brent-style search,`optimset`\n\noptions, multi-output diagnostics, and shared Brent helpers with`fzero`\n\n- Add array, statistics, and signal-processing builtins —\n`repelem`\n\n,`mode`\n\n,`sinc`\n\n,`sawtooth`\n\n, and`square`\n\nnow cover element replication, MATLAB-compatible modal reductions, normalized sinc evaluation, and periodic waveform generation - Add numeric helper builtins —\n`complex`\n\n,`sind`\n\n,`cosd`\n\n,`tand`\n\n,`db`\n\n, and`fgetl`\n\nnow support complex construction, degree-based trigonometry, decibel conversion, and line-oriented text-file reads\n\n#### Fixed\n\n- Fix\n`errorbar`\n\nparsing for line specs before name-value pairs, y-only calls, explicit`x`\n\n/`y`\n\n/error inputs, and trailing line specs - Fix MATLAB complex-constructor semantics, including unary complex storage, scalar expansion, and two-argument real-input validation\n\n[v0.4.8](https://github.com/runmat-org/runmat/compare/v0.4.6...v0.4.8) - May 2026\n\n*May 15, 2026*\n\n### Runtime\n\n#### Added\n\n- Add\n`tf`\n\n— scalar-input scalar-output transfer-function objects now support numeric, logical, integer, complex, row-vector, and column-vector coefficient inputs, continuous and discrete sample-time defaults,`Variable`\n\n,`Ts`\n\n/`SampleTime`\n\n,`Numerator`\n\n,`Denominator`\n\n,`InputDelay`\n\n, and`OutputDelay`\n\nproperties, and`class(H) == \"tf\"`\n\n- Add angle conversion builtins —\n`deg2rad`\n\nand`rad2deg`\n\nnow operate element-wise on scalars, vectors, matrices, N-D tensors, complex values, integer/logical inputs, and GPU-resident inputs, with fusion support for compatible element-wise expressions - Add reference-line plotting —\n`xline`\n\nand`yline`\n\nnow draw vertical and horizontal reference lines with scalar or vector coordinates, line-style strings, labels,`LineWidth`\n\n,`Color`\n\n,`LabelOrientation`\n\n,`Visible`\n\n, returned graphics handles, and`get`\n\n/`set`\n\n/dot-property integration\n\n#### Changed\n\n- Track workspace assignments through the VM and Turbine JIT so interpreter fallback, compiled stores,\n`clear`\n\n, and`clearvars`\n\npublish only the variables assigned or removed by the current execution - Route browser-backed file handles through async open and flush paths so\n`fopen`\n\n,`fclose`\n\n,`fread`\n\n,`fwrite`\n\n,`feof`\n\n,`fgets`\n\n,`fprintf`\n\n, and`frewind`\n\nshare consistent registry and provider behavior across native and WASM hosts - Expand plotting metadata and property handling for reference-line handles, including reference-line render data, legend labels,\n`Value`\n\n, style properties, and preservation of existing axis labels when reference lines are appended\n\n#### Fixed\n\n- Fix native session result handling for repeated multi-statement execution so final assignment values and workspace previews stay numeric after JIT compilation and fallback\n- Fix parser diagnostic locations for malformed calls, expected identifiers, and member access after\n`.`\n\n, reporting the offending token instead of a stale source position - Fix WGPU fused-kernel preflight checks to reject storage-buffer, bind-group, and arithmetic binding-count overflows before creating invalid WebGPU layouts\n- Fix browser/WASM file close behavior so async flush failures keep the file registered, concurrent\n`fclose`\n\ncalls close a file only once, and dirty buffers are restored if async write-back fails - Fix\n`plot(x, y)`\n\ncompatibility for matching row-vector and column-vector pairs with the same number of elements - Fix\n`fft`\n\ndefault-dimension output for row vectors so row orientation is preserved - Fix single-point\n`hann`\n\n,`hamming`\n\n, and`blackman`\n\nwindows by using the host path instead of provider paths that expect longer window lengths\n\n### Sandbox\n\n#### Changed\n\n- Move the browser filesystem provider to async JavaScript filesystem operations for open, read, write, metadata, directory, rename, removal, and permission updates\n- Avoid unnecessary initial file reads for write-create-truncate opens while preserving\n`create_new`\n\n, read, and append semantics\n\n[v0.4.6](https://github.com/runmat-org/runmat/compare/v0.4.5...v0.4.6) - May 2026\n\n*May 8, 2026*\n\n### Runtime\n\n#### Added\n\n- Add ODE solvers —\n`ode23`\n\n,`ode45`\n\n, and`ode15s`\n\nnow solve scalar, vector, and matrix-valued initial-value problems with adaptive stepping, requested`tspan`\n\noutput points, and`RelTol`\n\n,`AbsTol`\n\n,`InitialStep`\n\n, and`MaxStep`\n\noptions - Add random distribution builtins —\n`exprnd`\n\n,`normrnd`\n\n, and`unifrnd`\n\n, including scalar and shaped outputs, deterministic host RNG behavior, parameter validation, and WGPU-backed generation when the active provider supports it - Add image color and class conversion builtins —\n`rgb2gray`\n\n,`gray2rgb`\n\n,`ind2rgb`\n\n,`im2double`\n\n,`im2uint8`\n\n,`im2uint16`\n\n,`rgb2hsv`\n\n,`hsv2rgb`\n\n,`rgb2lab`\n\n, and`lab2rgb`\n\n- Add\n`heatmap`\n\nplot support with matrix CData input, optional row and column labels, returned graphics handles, colorbar support, and`get`\n\n/`set`\n\n/dot-property integration - Add\n`clearvars`\n\nwith explicit variable clearing and`-except`\n\nexclusions\n\n#### Changed\n\n- Split WGPU random distribution execution into dedicated provider code and add parameterized kernels for exponential, normal, and uniform distributions\n- Reuse the shared value-to-string conversion path for graphics labels and property handling\n\n[v0.4.5](https://github.com/runmat-org/runmat/compare/v0.4.4...v0.4.5) - May 2026\n\n*May 1, 2026*\n\n### Runtime\n\n#### Added\n\n- Add image I/O and display support —\n`imread`\n\nreads raster images into MATLAB-compatible grayscale, truecolor, and alpha arrays, and`imshow`\n\ndisplays numeric, logical, truecolor, and file-backed images with MATLAB-style display ranges - Add interpolation builtins —\n`interp1`\n\n,`interp2`\n\n,`spline`\n\n,`pchip`\n\n, and`ppval`\n\n, including piecewise-polynomial structs and linear, nearest, spline, and shape-preserving cubic paths - Add optimization builtins —\n`fzero`\n\n,`fsolve`\n\n, and`optimset`\n\n, with bracket expansion, Brent refinement, finite-difference Levenberg-Marquardt solving, display/tolerance options, and output shape preservation - Add\n`format`\n\n— session-persistent numeric display modes for`short`\n\n,`long`\n\n,`shortE`\n\n,`longE`\n\n,`shortG`\n\n,`longG`\n\n,`rat`\n\n, and`hex`\n\n- Add\n`strsplit`\n\nwith simple and regular-expression delimiters,`CollapseDelimiters`\n\n,`DelimiterType`\n\n, and optional delimiter-match output\n\n#### Changed\n\n- Extend tensor dtype metadata for\n`uint8`\n\nand`uint16`\n\nso`class`\n\n, WASM value previews, image operations,`diag`\n\n, reductions, and`zeros`\n\n/`ones(..., \"like\", value)`\n\nreport and preserve integer image-style arrays correctly - Share common tensor dtype coercion and clamping helpers across image, reduction, and array creation builtins\n- Route numeric-to-string conversion through the active\n`format`\n\nmode so display output, string conversion, and complex formatting stay consistent\n\n#### Fixed\n\n- Fix command-form parsing so bare newlines terminate commands, while\n`...`\n\ncontinuations still work after multiple blank lines - Fix\n`whos`\n\nand value metadata size reporting for tensors stored in the runtime's f64 backing representation\n\n### Sandbox\n\n#### Changed\n\n- Share the default browser filesystem provider and IndexedDB backing across session instances, with ref-counted cleanup and consistent flush behavior\n- Reject incompatible IndexedDB backing options instead of silently mixing providers with different timing hooks or flush policies\n\n[v0.4.4](https://github.com/runmat-org/runmat/compare/v0.4.1...v0.4.4) - April 2026\n\n*April 24, 2026*\n\n### Runtime\n\n#### Added\n\n- Add\n`cross`\n\n— MATLAB-compatible vector cross products across row vectors, column vectors, matrices, and higher-rank tensors, with GPU-resident execution for real-valued inputs when the active provider supports it - Add\n`gradient`\n\n— numerical gradients with MATLAB-compatible matrix output ordering, scalar spacing support, complex host support, and WGPU-backed GPU residency for scalar-spacing gradients - Add\n`trapz`\n\nand`cumtrapz`\n\n— trapezoidal and cumulative trapezoidal integration with scalar spacing, coordinate-vector spacing, explicit dimension selection, complex inputs, and GPU input fallback that re-uploads real-valued outputs for downstream GPU work - Add\n`sgtitle`\n\n— figure-level titles for subplot layouts with text styling, explicit figure-handle targeting,`get`\n\n/`set`\n\nsupport, scene replay, and vector/native export support - Add CLI artifact capture for script runs —\n`--artifacts-dir`\n\n,`--artifacts-manifest`\n\n,`--capture-figures`\n\n,`--figure-size`\n\n, and`--max-figures`\n\n#### Changed\n\n- Rename\n`runmat-ignition`\n\nto`runmat-vm`\n\nand split the VM, compiler, interpreter dispatch, indexing, runtime state, and acceleration paths into smaller modules - Refactor the lexer, parser, HIR, core session, WASM runtime, and CLI layers for maintainability without changing their public behavior\n- Expand TypeScript/WASM figure metadata to include\n`sgTitle`\n\nand`sgTitleStyle`\n\n, matching the new figure-level title support\n\n#### Fixed\n\n- Fix WGPU provider cleanup for intermediate GPU tensor handles so error paths release temporary device resources correctly\n- Fix\n`gradient`\n\nshape handling for empty tensors and align WGPU gradient parameters for the backend layout - Fix SVG/vector-export text positioning so subplot titles and figure-level titles scale correctly with font size\n- Fix\n`sgtitle`\n\nserialization and child enumeration, and allow numeric values to be used as title text\n\n### Sandbox\n\n#### Changed\n\n- Reorganize the browser/WASM runtime into dedicated API, plotting, session, stream, filesystem, GPU, snapshot, state, and wire-format modules\n- Improve replay smoke coverage and GPU gradient coverage for the WASM target\n\n### App\n\n#### Changed\n\n- Update remote-project CLI documentation around authentication, project selection, filesystem history, snapshots, git sync, retention policies, and\n`remote run`\n\n[v0.4.1](https://github.com/runmat-org/runmat/compare/v0.4.0...v0.4.1) - April 2026\n\n*April 15, 2026*\n\n### Runtime\n\n#### Added\n\n- Expand\n`input()`\n\ncompatibility — numeric prompts now accept logical values, named constants (`pi`\n\n,`inf`\n\n,`nan`\n\n), and matrix/vector literals with MATLAB-compatible output types. Complex expressions such as`sqrt(2)`\n\nand`ones(3)`\n\nnow evaluate through the full MATLAB pipeline when an eval hook is available - Add configurable CLI credential storage for\n`runmat login`\n\n—`auto`\n\n,`secure`\n\n,`file`\n\n, and`memory`\n\n#### Changed\n\n- Improve CLI auth persistence —\n`auto`\n\nmode now prefers secure keyring storage and falls back to file-backed credentials with restricted permissions when secure storage is unavailable - Extract remote auth and public API client logic into a dedicated\n`runmat-server-client`\n\ncrate\n\n#### Fixed\n\n- Fix native\n`input()`\n\nevaluation stack overflow by isolating nested prompt evaluation from the outer interpreter call stack - Fix GPU-backed selector indexing — GPU-resident index tensors now materialize correctly before linear and dimensional indexing\n\n### Sandbox\n\n#### Fixed\n\n- Fix workspace/variable display after\n`clear()`\n\n— variables assigned later in the same execution block now reappear correctly in workspace snapshots - Fix browser\n`input()`\n\nhandling after session resets — reinitializing the WASM session now preserves the installed async input handler\n\n### App\n\n#### Added\n\n- Expand the public API with project git import, project import status, usage notices, upgrade requests, chunk upload targets, data manifest access, run indexes, storage summaries, storage-category deletion, telemetry ingest, and web intake submission endpoints\n\n[v0.4.0](https://github.com/runmat-org/runmat/compare/v0.3.2...v0.4.0) - April 2026\n\n*April 13, 2026*\n\n### Runtime\n\n#### Added\n\nNew [plot types](/docs/matlab-function-reference#plotting):\n\n- Add\n`stem`\n\nwith GPU-accelerated rendering - Add\n`errorbar`\n\nvisualization - Add\n`area`\n\nfilled area plots - Add\n`contour`\n\n/`contourf`\n\nwith GPU-resident path rendering - Add\n`plot3`\n\n3D line plots - Add\n`imagesc`\n\nscaled image display - Add\n`pie`\n\ncharts - Add\n`histogram`\n\nplotting - Add\n`semilogx`\n\n,`semilogy`\n\n,`loglog`\n\nlog-scale axes - Add\n`plot(y)`\n\nshorthand — single-argument plot\n\nPlotting infrastructure:\n\n- Add graphics handles and per-axes subplot state\n- Add axes helpers:\n`xlim`\n\n,`ylim`\n\n,`zlim`\n\n,`caxis`\n\n/`clim`\n\n- Add common signature forms:\n`bar(x,y)`\n\n,`surf(Z)`\n\n,`mesh(Z)`\n\n,`surfc(Z)`\n\n,`meshc(Z)`\n\n,`stairs(y)`\n\n- Add\n`get`\n\n/`set`\n\nfor plot handles with shared property access - Add annotation and legend builtins:\n`title`\n\n,`xlabel`\n\n,`ylabel`\n\n,`zlabel`\n\n,`legend`\n\n- Add 3D view controls:\n`view(az, el)`\n\n- Add world-space text annotations\n\nNumerical computing:\n\n- Implement correct matrix division semantics —\n`\\`\n\n,`/`\n\n,`.\\`\n\n,`./`\n\nnow have distinct, correct semantics through parser, HIR, bytecode, VM, and GPU paths.`mldivide`\n\nand`mrdivide`\n\nsupport triangular solves, dense square solves, tall least-squares, wide minimum-norm solves, transpose variants, and Cholesky-backed solves with GPU-resident F32 execution - Implement full FFT/IFFT family —\n`fft`\n\n,`ifft`\n\n,`fft2`\n\n,`ifft2`\n\n,`fftn`\n\n,`ifftn`\n\nnow fully implemented with underlying RustFFT for CPU paths and high-performance staged GPU shaders supporting power-of-two, radix-3, radix-5, mixed compositions, and Bluestein fallback for non-smooth/prime lengths. Complex array indexing now works throughout (`Y = fft(x); Y = Y(1:N/2)`\n\n) - Add signal processing helpers —\n`hann`\n\n,`hamming`\n\n,`blackman`\n\nwindowing functions and`nextpow2`\n\n, all with GPU acceleration. Supports`symmetric`\n\n/`periodic`\n\nmodes and output type selection\n\nOther:\n\n- Add\n`clear`\n\n,`clc`\n\n,`close all`\n\n— session management commands now work in browser and native - Add\n`datetime`\n\n— MATLAB-compatible construction, formatting, string conversion, and subtraction - Add\n`duration`\n\n— display, arithmetic, and datetime interop - Add\nbuiltin — GPU-accelerated with mixed-residency tensor support and type inference`peaks`\n\n#### Changed\n\n- Expand GPU fusion coverage —\n`sign`\n\n,`fix`\n\n,`hypot`\n\n,`pow2`\n\n,`asinh`\n\n,`acosh`\n\n,`atanh`\n\n,`mod`\n\n,`rem`\n\nnow fuse into single GPU kernels automatically\n\n#### Fixed\n\n- Fix struct field indexing —\n`s.arr(k)`\n\nand`s.arr(1:n)`\n\nnow work with MATLAB-compatible semantics - Fix implicit struct creation — assigning to\n`r.x = 10`\n\non an uninitialized variable now materializes a struct - Fix\n`fprintf`\n\ncompatibility for literal dollar signs and casted numeric inputs - Fix\n`atan2`\n\nstack underflow that crashed scripts calling`atan2`\n\nwith compound expressions - Fix leading-dot floats —\n`.5`\n\nparsed as`0.5`\n\n- Fix GPU tensor to f64 conversion for iterative solve workflows\n- Fix range-indexing type errors\n- Fix GPU memory cleanup on QR and\n`mrdivide`\n\nerrors - Fix\n`matmul`\n\nparameter caching - Fix histogram and bar charts not displaying\n- Fix right bar chart persisting after generating new charts\n- Fix\n`contourf`\n\nZ dimension mismatch - Fix\n`area`\n\nX/Y length mismatch - Fix\n`image`\n\nsurface data handling - Fix\n`stairs`\n\n1-argument form - Fix Z-axis label styling\n- Fix\n`plot`\n\n3-argument overload - Fix stem shader offset when baseline is hidden\n\n### Sandbox\n\n#### Added\n\n- Add notebook editor infrastructure — markdown cells alongside code cells (not yet user-facing)\n- Add RunMat Agent infrastructure — typed protocol, config, ops, and event model (not yet user-facing)\n\n#### Fixed\n\n- Fix artifact loading to return newest entry when an ID is reused\n- Fix browser terminal\n`clear`\n\n/`clc`\n\nhandling - Fix runtime state leaking between notebook run sessions\n\n#### Changed\n\n- Improve path handling with safe segment escaping for dot components\n- Improve auth flow — email verification now redirects directly to the sandbox with an auth modal\n- Improve Auth0 email login flow\n- Improve stdout deduplication and clear event handling\n\n### App\n\n#### Added\n\n- Add durable persistence and replay for run artifacts\n\n[v0.3.2](https://github.com/runmat-org/runmat/compare/v0.3.0...v0.3.2) - March 2026\n\n*March 24, 2026*\n\nDeployment and infrastructure improvements for macOS, Windows, and Linux — no runtime or engine changes. Covers v0.3.1 through v0.3.2.\n\n[v0.3.0](https://github.com/runmat-org/runmat/compare/v0.2.8...v0.3.0) - March 2026\n\n*March 24, 2026*\n\n### Runtime\n\n#### Added\n\n- WebAssembly (WASM) compile target — RunMat now runs entirely in the\n[browser](/docs/desktop-browser-guide)with WebGPU acceleration, published as the`runmat`\n\nnpm package - Add fused GPU rendering pipeline for 2D and 3D plots with zero-copy surface data path\n- Add 3D depth camera with reversed-Z and dynamic clip planes\n- Add type inference — context-aware shape resolvers track tensor shapes through the compiler\n- Add builtins:\n`int32`\n\n,`uint16`\n\n,`isgpuarray`\n\n,`magic`\n\n,`empty`\n\n,`frewind`\n\n,`rand(m,n,p)`\n\n,`uint8`\n\nelementwise ops,`isequal`\n\n,`logical`\n\n,`cellfun`\n\nhandle support,`fullfile`\n\n,`erase`\n\n,`atanh`\n\n,`tempname`\n\n- Add full call stack in error diagnostics with stack depth limit and source location tracking\n- Add\n[MATLAB compatibility mode](/docs/language)\n\n#### Changed\n\n- Migrate the entire VM, all builtins, and the GPU provider to async\n- Change default error namespace to\n`RunMat`\n\n(from`MATLAB`\n\n)\n\n#### Fixed\n\n- Fix slice indexing shape preservation,\n`conv2`\n\nkernel flip,`chol`\n\nmulti-output control flow,`load`\n\nauto-assignment,`dlmread`\n\n/`csvread`\n\nheader parsing,`cummax`\n\n/`cummin`\n\nalignment,`fgets`\n\ncharacter limit, native auto-init race condition, and GPU compute dispatch stack layout\n\n### Sandbox\n\n#### Added\n\n- Launch browser sandbox at\n[runmat.com/sandbox](https://runmat.com/sandbox)\n\n#### Fixed\n\n- Fix save file behavior\n- Fix figure state reset on re-run\n- Fix variable inspector pagination — large vectors now paginate correctly\n- Fix variable inspector caching — stale values no longer shown after re-runs\n- Fix data file viewer error handling\n\n#### Changed\n\n- Show struct values before tensor values in the output panel\n- Improve variable inspector layout\n\n### App\n\n#### Added\n\n- Add organizations, projects, and team memberships\n\n[v0.2.8](https://github.com/runmat-org/runmat/compare/v0.2.7...v0.2.8) - December 2025\n\n*December 22, 2025*\n\n#### Added\n\n- Add complex number support — complex arithmetic works throughout the runtime\n- Add non-conjugate transpose (\n`.'`\n\n) — apostrophe handling now distinguishes from conjugate transpose - Add Homebrew installation —\n`brew install runmat`\n\n(see[CLI docs](/docs/cli))\n\n#### Changed\n\n- Replace manual REPL input with\n`rustyline`\n\nfor line editing, command history, and formatting - Persist\n`ans`\n\nvariable across expressions - Display struct content in the REPL\n- Improve multi-line formatting for\n`ls`\n\nand matrices - Suppress output for assignments ending in\n`;`\n\n#### Fixed\n\n- Fix\n`save()`\n\nstack overflow bug\n\n[v0.2.7](https://github.com/runmat-org/runmat/compare/v0.2.6...v0.2.7) - December 2025\n\n*December 2, 2025*\n\n#### Added\n\n- Add anonymous telemetry to help improve RunMat. No code is ever captured — only internal error codes. See\n[Telemetry](/docs/telemetry)for details\n\n#### Fixed\n\n- Fix CLI version display\n\n[v0.2.6](https://github.com/runmat-org/runmat/compare/v0.0.4...v0.2.6) - November 2025\n\n*November 21 – 24, 2025*\n\nCovers [v0.2.0](https://github.com/runmat-org/runmat/compare/v0.0.4...v0.2.0) through v0.2.6.\n\n#### Added\n\n[Accelerate](/docs/accelerate/fusion-intro) (GPU backend):\n\n- Add wgpu-based GPU backend — Metal (macOS), DirectX 12 (Windows), Vulkan (Linux)\n- Add cost model — runtime profiling routes work to CPU or GPU based on data size and transfer cost\n- Add f32/f64 compute shaders for a broad set of builtins —\n`ones`\n\n,`zeros`\n\n,`rand`\n\n, reductions, and many more now dispatch to the GPU automatically\n\n- Add computation graph pattern scanning — the runtime analyzes your code's computation graph, matches sequences against a library of fusible patterns, and replaces them with optimized GPU kernels automatically\n- Add 5–6 initial fusion operations including elementwise math chains, where multiple operations collapse into a single GPU kernel eliminating intermediate memory traffic\n\n[v0.0.3](https://github.com/runmat-org/runmat/compare/v0.0.2...v0.0.3) - August 2025\n\n*August 25, 2025*\n\n#### Added\n\n- Add PowerShell installer for Windows\n\n[v0.0.2](https://github.com/runmat-org/runmat/compare/v0.0.1...v0.0.2) - August 2025\n\n*August 19, 2025*\n\n#### Added\n\n- Implement interpretation for the core MATLAB language grammar and semantic surface, across the parser, HIR, and VM. See\n[Language Coverage](/docs/language-coverage)for the full matrix of implemented coverage\n\n[v0.0.1](https://github.com/runmat-org/runmat/releases/tag/v0.0.1) - August 2025\n\n*August 10, 2025*\n\n#### Added\n\n- Initial release — lexer, architecture plan, project scaffolding\n- Add release workflow with macOS signing, cross-compilation, crates.io publishing", "url": "https://wpnews.pro/news/v0-4-0", "canonical_source": "https://runmat.com/docs/changelog#v0-4-0", "published_at": "2026-07-12 01:35:31.696363+00:00", "updated_at": "2026-07-12 01:35:33.687467+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["RunMat"], "alternates": {"html": "https://wpnews.pro/news/v0-4-0", "markdown": "https://wpnews.pro/news/v0-4-0.md", "text": "https://wpnews.pro/news/v0-4-0.txt", "jsonld": "https://wpnews.pro/news/v0-4-0.jsonld"}}