{"slug": "v0-2-7", "title": "v0.2.7", "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 across I/O, signal processing, and GPU acceleration. The updates also fix rendering, sandbox loading, and runtime diagnostics for improved developer experience.", "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-2-7", "canonical_source": "https://runmat.com/docs/changelog#v0-2-7", "published_at": "2026-07-16 16:26:08.908930+00:00", "updated_at": "2026-07-16 16:26:10.937959+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["RunMat", "GitHub", "Monaco", "WGPU", "WASM", "Miri"], "alternates": {"html": "https://wpnews.pro/news/v0-2-7", "markdown": "https://wpnews.pro/news/v0-2-7.md", "text": "https://wpnews.pro/news/v0-2-7.txt", "jsonld": "https://wpnews.pro/news/v0-2-7.jsonld"}}