RunMat Changelog
What's new across RunMat. See GitHub Releases for runtime release binaries.
v0.5.6 - June 2026
June 28, 2026
Desktop
Added
- 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
- 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
- Add Mermaid diagram rendering and editing support in markdown documents alongside existing math and code rendering
Changed
- Improve runtime panel behavior so script and REPL runs keep variables, figures, and selected sessions aligned without unnecessary figure-output placeholder flicker
- Improve plot, terminal, variable-table, and inspector layouts across narrow panels, resized workspaces, Safari, and Tauri
- Load default sandbox files from a dedicated fixture directory instead of inlining them in code
Fixed
- Fix Monaco semantic-token timing so files receive highlighting on initial load
- Fix REPL workspace probes so inspecting variables after a script run does not clear or hide existing figures
- Fix markdown editor Mermaid blocks so diagrams render consistently with the markdown renderer
Runtime
Changed
- 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
- Suppress final-expression output for command-form calls so commands such as
clcdo not emitans - Improve MIR read-before-assignment analysis through lowered temporary statements so diagnostics better reflect real initialization state
Fixed
- Fix
contour,contourf, andcontour3validation 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
v0.5.5 - June 2026
June 26, 2026
Runtime
Added
- Add broader MATLAB compatibility across I/O, signal processing, optimization, symbolic math, plotting, control systems, and array construction, including
xlsread,writecell,textscan,importdata,uiputfile,unzip,imwrite,audioread,audioinfo,pwelch,periodogram,spectrogram,freqz,filtfilt,fir1,buttord,envelope,zplane,pskmod,lsqcurvefit,fminunc,quad,digits,vpa,int,nan,inf,zero,damp, andpolarplot - Add MAT-file save/load coverage, including append workflows, and expand spreadsheet/text import/export paths through provider-backed filesystems
- Add resident GPU execution paths for complex math, signal, communication, modulation, Hilbert, gradient, reshape, meshgrid, polynomial integration, gamma, sinc, sign, and trigonometric workflows
Changed
- Expand GPU acceleration plumbing with dedicated WGPU shader modules for signal and communications workloads, complex tensor residency, and shared provider APIs
- 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
- 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
Fixed
- 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
- Fix WebAssembly and release publishing issues around OCCT feature wiring, generated builtin registries, TypeScript package builds, headless compatibility checks, and nested crate publishing
- Fix Windows CI and runtime compatibility issues involving path handling, OpenBLAS/LAPACK linking, CWD behavior, file dialog tests, and release build tooling
- 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
Development
Changed
- 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
v0.5.3 - June 2026
June 17, 2026
Runtime
Added
- Add broader symbolic math coverage —
syms,sym, symbolic function declarations such assyms y(x), symbolic powers, and scalarlimitworkflows now execute through parser, HIR, runtime, VM, and WASM paths - Add signal, linear-algebra, and math builtins —
hilbert,unwrap,pulstran,rectpuls,tripuls,gauspuls,upsample,downsample,null, andheavisidenow cover common signal-processing, numeric, and symbolic scripts - Add spreadsheet and file-selection workflows —
spreadsheetImportOptions,uigetfile, expanded path commands, and provider-awarecdbehavior now work across local, sandboxed, remote, and WASM filesystem providers - Add root-locus plotting and output forms for transfer-function models
Changed
- Expand MATLAB command and call syntax support, including command-form path arguments,
grid minor,axis image, and name-value call arguments written asName=value - Improve plotting property compatibility for
figure,gca, axesFontSize, figureName,NumberTitle,Visible,Color,BackgroundColor, and get/set/dot-property access paths
Fixed
- 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
- 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
- Fix
fzerooptional outputs so[x,fval],[x,fval,exitflag], and[x,fval,exitflag,output]return ordered MATLAB-compatible results - Fix byte-oriented
csvreadrange 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
rand,randn,tic,toc,gca,whos,tf, andnull
Sandbox
Changed
- Keep filesystem and path operations provider-aware across native, sandboxed, remote, and WASM backends while preserving native process-cwd behavior where appropriate
v0.5.2 - June 2026
June 13, 2026
Runtime
Added
- Add sparse matrix support —
sparsenow introduces a sparse runtime value with display, metadata,class,whos, indexing, element-wise arithmetic, reductions, transposes,find,nnz, JSON/string conversion, WASM wire previews, and GPU fallback/residency integration - Add optimization and linear-algebra builtins —
linprogandrrefnow execute through runtime, VM, docs metadata, and generated builtin registration paths - Add table and import workflows —
readtable, table objects, tableProperties, dot/paren/brace table access and assignment, variable renaming,height,width,groupsummary, table-awaresortrows, datetime import support, and spreadsheet/text import plumbing cover common MATLAB tabular scripts - Add image and signal builtins —
imhistandbutternow cover histogram and Butterworth-filter workflows with runtime, VM, docs metadata, and WebAssembly registry integration - Add SISO transfer-function control workflows —
tf('s'),tf('z', Ts), transfer-function algebra,feedback,dcgain,pole,isstable,stepinfo, and multi-systemstepplotting/output forms now cover common control scripts - Add MATLAB script execution support through
run, including script side effects, plotting hooks, warnings, console output, and workspace updates across runtime and VM paths
Changed
- 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
- Refresh builtin documentation and reference metadata for the new sparse, optimization, table, image, signal, control, and script-execution builtins
- Improve runtime dispatch, workspace, callable identity, and name-resolution plumbing needed by newly added builtins and workspace-visible zero-argument builtin calls
Fixed
- Fix workspace-first bare builtin reads so unshadowed builtins resolve correctly while assigned or loaded workspace variables still shadow builtin names
- 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
- Bound WASM wire payload previews so large values cannot exceed preview limits
- Guard snapshot header bounds during snapshot loading
- Fix a Windows CSV release issue in bytecode compilation paths
v0.5.0 - June 2026
June 3, 2026
A 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 and the compiler pipeline deep dive.
Runtime
Added
- Add project composition —
runmat.tomlandrunmat.jsonmanifests declare the package, source roots, local dependencies, and named entrypoints runnable throughrunmat run <name>, with source-root, package-folder (+pkg), class-folder (@Class), and private-helper discovery - Add source
classdefobjects — 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 (subsref/subsasgn) instead of a struct-like fallback - Expand function semantics — requested-output-aware calls observable through
nargin/nargout,varargin/varargout, local functions, nested functions that share parent scope, anonymous functions, captures, recursion, function handles,feval, and a supportedargumentsvalidation subset - Add explicit indexing context — reads, assignment targets, deletions,
end, 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 language server, and generated reference docs
- Add structured execution outcomes — 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 —
ssnow constructs state-space model objects from validatedA/B/C/Dmatrices with continuous and discrete sample-time support, andnyquistnow computes or plots SISOtffrequency responses with default or explicit frequency grids - Add communications builtins —
qammodnow maps integer symbols to QAM constellations with Gray, binary, and custom ordering plusUnitAveragePowerandOutputDataTypeoptions, andscatterplotnow visualizes complex samples with decimation, offset, marker styling, and target-axes forms - Add plotting and export builtins —
contour3now creates 3-D contour line plots with contour levels rendered at their scalar heights, andprintnow exports figures through MATLAB-style figure-handle, filename, device, and resolution arguments - Add optimization option support —
optimoptionsnow builds solver-specific option structs, validates name-value overrides, and copies or updates existing options structs for supported optimization solvers
Changed
- Migrate the compiler and runtime to a staged semantic pipeline —
source -> AST -> semantic HIR -> MIR -> MIR analysis -> VM layout + bytecode -> runtime/providers— 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
- Compile calls from typed callable identities and fallback policies — bound functions, builtins, dynamic names, external qualified names, methods, super calls, and
fevaltargets share one dispatch model, preserving function-handle identity - Make workspace-visible bindings explicit — script exports, function locals,
ans, and dynamic workspace operations route through VM workspace context - Drive acceleration and 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
- Give the 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
Desktop
Added
- Add 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
Agent
Added
- 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
- Add project-scoped Agent persistence so projects can restore Agent state through Desktop project settings such as
persist_agentsinrunmat.toml - Add local-to-cloud project conversion support for Agent and history flows that need a cloud project
Changed
- Make Agent activity easier to follow by grouping long activity runs and replacing “Thinking” labels with clearer “Working” language
- Improve Agent execution and project synchronization across Desktop, browser, local, and cloud runtimes
v0.4.9 - May 2026
May 22, 2026
Runtime
Added
- Add control-system response builtins —
stepandimpulsenow compute or plot SISOtfresponses, 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 —
patchandfill3now create filled 2-D and 3-D polygon graphics handles withFaces/Vertices, coordinate, color, axes-handle, and common patch property support, backed by shared triangulation and GPU plotting render paths - Add numerical analysis builtins —
integralnow performs finite scalar adaptive quadrature for function handles, andfminbndnow performs bounded scalar minimization with Brent-style search,optimsetoptions, multi-output diagnostics, and shared Brent helpers withfzero - Add array, statistics, and signal-processing builtins —
repelem,mode,sinc,sawtooth, andsquarenow cover element replication, MATLAB-compatible modal reductions, normalized sinc evaluation, and periodic waveform generation - Add numeric helper builtins —
complex,sind,cosd,tand,db, andfgetlnow support complex construction, degree-based trigonometry, decibel conversion, and line-oriented text-file reads
Fixed
- Fix
errorbarparsing for line specs before name-value pairs, y-only calls, explicitx/y/error inputs, and trailing line specs - Fix MATLAB complex-constructor semantics, including unary complex storage, scalar expansion, and two-argument real-input validation
v0.4.8 - May 2026
May 15, 2026
Runtime
Added
- Add
tf— 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,Ts/SampleTime,Numerator,Denominator,InputDelay, andOutputDelayproperties, andclass(H) == "tf" - Add angle conversion builtins —
deg2radandrad2degnow 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 —
xlineandylinenow draw vertical and horizontal reference lines with scalar or vector coordinates, line-style strings, labels,LineWidth,Color,LabelOrientation,Visible, returned graphics handles, andget/set/dot-property integration
Changed
- Track workspace assignments through the VM and Turbine JIT so interpreter fallback, compiled stores,
clear, andclearvarspublish only the variables assigned or removed by the current execution - Route browser-backed file handles through async open and flush paths so
fopen,fclose,fread,fwrite,feof,fgets,fprintf, andfrewindshare 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,
Value, style properties, and preservation of existing axis labels when reference lines are appended
Fixed
- Fix native session result handling for repeated multi-statement execution so final assignment values and workspace previews stay numeric after JIT compilation and fallback
- Fix parser diagnostic locations for malformed calls, expected identifiers, and member access after
., 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
- Fix browser/WASM file close behavior so async flush failures keep the file registered, concurrent
fclosecalls close a file only once, and dirty buffers are restored if async write-back fails - Fix
plot(x, y)compatibility for matching row-vector and column-vector pairs with the same number of elements - Fix
fftdefault-dimension output for row vectors so row orientation is preserved - Fix single-point
hann,hamming, andblackmanwindows by using the host path instead of provider paths that expect longer window lengths
Sandbox
Changed
- Move the browser filesystem provider to async JavaScript filesystem operations for open, read, write, metadata, directory, rename, removal, and permission updates
- Avoid unnecessary initial file reads for write-create-truncate opens while preserving
create_new, read, and append semantics
v0.4.6 - May 2026
May 8, 2026
Runtime
Added
- Add ODE solvers —
ode23,ode45, andode15snow solve scalar, vector, and matrix-valued initial-value problems with adaptive stepping, requestedtspanoutput points, andRelTol,AbsTol,InitialStep, andMaxStepoptions - Add random distribution builtins —
exprnd,normrnd, andunifrnd, 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 —
rgb2gray,gray2rgb,ind2rgb,im2double,im2uint8,im2uint16,rgb2hsv,hsv2rgb,rgb2lab, andlab2rgb - Add
heatmapplot support with matrix CData input, optional row and column labels, returned graphics handles, colorbar support, andget/set/dot-property integration - Add
clearvarswith explicit variable clearing and-exceptexclusions
Changed
- Split WGPU random distribution execution into dedicated provider code and add parameterized kernels for exponential, normal, and uniform distributions
- Reuse the shared value-to-string conversion path for graphics labels and property handling
v0.4.5 - May 2026
May 1, 2026
Runtime
Added
- Add image I/O and display support —
imreadreads raster images into MATLAB-compatible grayscale, truecolor, and alpha arrays, andimshowdisplays numeric, logical, truecolor, and file-backed images with MATLAB-style display ranges - Add interpolation builtins —
interp1,interp2,spline,pchip, andppval, including piecewise-polynomial structs and linear, nearest, spline, and shape-preserving cubic paths - Add optimization builtins —
fzero,fsolve, andoptimset, with bracket expansion, Brent refinement, finite-difference Levenberg-Marquardt solving, display/tolerance options, and output shape preservation - Add
format— session-persistent numeric display modes forshort,long,shortE,longE,shortG,longG,rat, andhex - Add
strsplitwith simple and regular-expression delimiters,CollapseDelimiters,DelimiterType, and optional delimiter-match output
Changed
- Extend tensor dtype metadata for
uint8anduint16soclass, WASM value previews, image operations,diag, reductions, andzeros/ones(..., "like", value)report and preserve integer image-style arrays correctly - Share common tensor dtype coercion and clamping helpers across image, reduction, and array creation builtins
- Route numeric-to-string conversion through the active
formatmode so display output, string conversion, and complex formatting stay consistent
Fixed
- Fix command-form parsing so bare newlines terminate commands, while
...continuations still work after multiple blank lines - Fix
whosand value metadata size reporting for tensors stored in the runtime's f64 backing representation
Sandbox
Changed
- Share the default browser filesystem provider and IndexedDB backing across session instances, with ref-counted cleanup and consistent flush behavior
- Reject incompatible IndexedDB backing options instead of silently mixing providers with different timing hooks or flush policies
v0.4.4 - April 2026
April 24, 2026
Runtime
Added
- Add
cross— 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
gradient— numerical gradients with MATLAB-compatible matrix output ordering, scalar spacing support, complex host support, and WGPU-backed GPU residency for scalar-spacing gradients - Add
trapzandcumtrapz— 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
sgtitle— figure-level titles for subplot layouts with text styling, explicit figure-handle targeting,get/setsupport, scene replay, and vector/native export support - Add CLI artifact capture for script runs —
--artifacts-dir,--artifacts-manifest,--capture-figures,--figure-size, and--max-figures
Changed
- Rename
runmat-ignitiontorunmat-vmand 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
- Expand TypeScript/WASM figure metadata to include
sgTitleandsgTitleStyle, matching the new figure-level title support
Fixed
- Fix WGPU provider cleanup for intermediate GPU tensor handles so error paths release temporary device resources correctly
- Fix
gradientshape 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
- Fix
sgtitleserialization and child enumeration, and allow numeric values to be used as title text
Sandbox
Changed
- Reorganize the browser/WASM runtime into dedicated API, plotting, session, stream, filesystem, GPU, snapshot, state, and wire-format modules
- Improve replay smoke coverage and GPU gradient coverage for the WASM target
App
Changed
- Update remote-project CLI documentation around authentication, project selection, filesystem history, snapshots, git sync, retention policies, and
remote run
v0.4.1 - April 2026
April 15, 2026
Runtime
Added
- Expand
input()compatibility — numeric prompts now accept logical values, named constants (pi,inf,nan), and matrix/vector literals with MATLAB-compatible output types. Complex expressions such assqrt(2)andones(3)now evaluate through the full MATLAB pipeline when an eval hook is available - Add configurable CLI credential storage for
runmat login—auto,secure,file, andmemory
Changed
- Improve CLI auth persistence —
automode 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
runmat-server-clientcrate
Fixed
- Fix native
input()evaluation 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
Sandbox
Fixed
- Fix workspace/variable display after
clear()— variables assigned later in the same execution block now reappear correctly in workspace snapshots - Fix browser
input()handling after session resets — reinitializing the WASM session now preserves the installed async input handler
App
Added
- 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
v0.4.0 - April 2026
April 13, 2026
Runtime
Added
New plot types:
- Add
stemwith GPU-accelerated rendering - Add
errorbarvisualization - Add
areafilled area plots - Add
contour/contourfwith GPU-resident path rendering - Add
plot33D line plots - Add
imagescscaled image display - Add
piecharts - Add
histogramplotting - Add
semilogx,semilogy,logloglog-scale axes - Add
plot(y)shorthand — single-argument plot
Plotting infrastructure:
- Add graphics handles and per-axes subplot state
- Add axes helpers:
xlim,ylim,zlim,caxis/clim - Add common signature forms:
bar(x,y),surf(Z),mesh(Z),surfc(Z),meshc(Z),stairs(y) - Add
get/setfor plot handles with shared property access - Add annotation and legend builtins:
title,xlabel,ylabel,zlabel,legend - Add 3D view controls:
view(az, el) - Add world-space text annotations
Numerical computing:
- Implement correct matrix division semantics —
\,/,.\,./now have distinct, correct semantics through parser, HIR, bytecode, VM, and GPU paths.mldivideandmrdividesupport 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 —
fft,ifft,fft2,ifft2,fftn,ifftnnow 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)) - Add signal processing helpers —
hann,hamming,blackmanwindowing functions andnextpow2, all with GPU acceleration. Supportssymmetric/periodicmodes and output type selection
Other:
- Add
clear,clc,close all— session management commands now work in browser and native - Add
datetime— MATLAB-compatible construction, formatting, string conversion, and subtraction - Add
duration— display, arithmetic, and datetime interop - Add
peaksbuiltin — GPU-accelerated with mixed-residency tensor support and type inference
Changed
- Expand GPU fusion coverage —
sign,fix,hypot,pow2,asinh,acosh,atanh,mod,remnow fuse into single GPU kernels automatically
Fixed
- Fix struct field indexing —
s.arr(k)ands.arr(1:n)now work with MATLAB-compatible semantics - Fix implicit struct creation — assigning to
r.x = 10on an uninitialized variable now materializes a struct - Fix
fprintfcompatibility for literal dollar signs and casted numeric inputs - Fix
atan2stack underflow that crashed scripts callingatan2with compound expressions - Fix leading-dot floats —
.5parsed as0.5 - Fix GPU tensor to f64 conversion for iterative solve workflows
- Fix range-indexing type errors
- Fix GPU memory cleanup on QR and
mrdivideerrors - Fix
matmulparameter caching - Fix histogram and bar charts not displaying
- Fix right bar chart persisting after generating new charts
- Fix
contourfZ dimension mismatch - Fix
areaX/Y length mismatch - Fix
imagesurface data handling - Fix
stairs1-argument form - Fix Z-axis label styling
- Fix
plot3-argument overload - Fix stem shader offset when baseline is hidden
Sandbox
Added
- Add notebook editor infrastructure — markdown cells alongside code cells (not yet user-facing)
- Add RunMat Agent infrastructure — typed protocol, config, ops, and event model (not yet user-facing)
Fixed
- Fix artifact loading to return newest entry when an ID is reused
- Fix browser terminal
clear/clchandling - Fix runtime state leaking between notebook run sessions
Changed
- Improve path handling with safe segment escaping for dot components
- Improve auth flow — email verification now redirects directly to the sandbox with an auth modal
- Improve Auth0 email login flow
- Improve stdout deduplication and clear event handling
App
Added
- Add durable persistence and replay for run artifacts
v0.3.2 - March 2026
March 24, 2026
Deployment and infrastructure improvements for macOS, Windows, and Linux — no runtime or engine changes. Covers v0.3.1 through v0.3.2.
v0.3.0 - March 2026
March 24, 2026
Runtime
Added
- WebAssembly (WASM) compile target — RunMat now runs entirely in the browser with WebGPU acceleration, published as the
runmatnpm package - Add fused GPU rendering pipeline for 2D and 3D plots with zero-copy surface data path
- Add 3D depth camera with reversed-Z and dynamic clip planes
- Add type inference — context-aware shape resolvers track tensor shapes through the compiler
- Add builtins:
int32,uint16,isgpuarray,magic,empty,frewind,rand(m,n,p),uint8elementwise ops,isequal,logical,cellfunhandle support,fullfile,erase,atanh,tempname - Add full call stack in error diagnostics with stack depth limit and source location tracking
- Add MATLAB compatibility mode
Changed
- Migrate the entire VM, all builtins, and the GPU provider to async
- Change default error namespace to
RunMat(fromMATLAB)
Fixed
- Fix slice indexing shape preservation,
conv2kernel flip,cholmulti-output control flow,loadauto-assignment,dlmread/csvreadheader parsing,cummax/cumminalignment,fgetscharacter limit, native auto-init race condition, and GPU compute dispatch stack layout
Sandbox
Added
- Launch browser sandbox at runmat.com/sandbox
Fixed
- Fix save file behavior
- Fix figure state reset on re-run
- Fix variable inspector pagination — large vectors now paginate correctly
- Fix variable inspector caching — stale values no longer shown after re-runs
- Fix data file viewer error handling
Changed
- Show struct values before tensor values in the output panel
- Improve variable inspector layout
App
Added
- Add organizations, projects, and team memberships
v0.2.8 - December 2025
December 22, 2025
Added
- Add complex number support — complex arithmetic works throughout the runtime
- Add non-conjugate transpose (
.') — apostrophe handling now distinguishes from conjugate transpose - Add Homebrew installation —
brew install runmat(see CLI docs)
Changed
- Replace manual REPL input with
rustylinefor line editing, command history, and formatting - Persist
ansvariable across expressions - Display struct content in the REPL
- Improve multi-line formatting for
lsand matrices - Suppress output for assignments ending in
;
Fixed
- Fix
save()stack overflow bug
v0.2.7 - December 2025
December 2, 2025
Added
- Add anonymous telemetry to help improve RunMat. No code is ever captured — only internal error codes. See Telemetry for details
Fixed
- Fix CLI version display
v0.2.6 - November 2025
November 21 – 24, 2025
Covers v0.2.0 through v0.2.6.
Added
Accelerate (GPU backend):
- Add wgpu-based GPU backend — Metal (macOS), DirectX 12 (Windows), Vulkan (Linux)
- Add cost model — runtime profiling routes work to CPU or GPU based on data size and transfer cost
- Add f32/f64 compute shaders for a broad set of builtins —
ones,zeros,rand, reductions, and many more now dispatch to the GPU automatically
- 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
- Add 5–6 initial fusion operations including elementwise math chains, where multiple operations collapse into a single GPU kernel eliminating intermediate memory traffic
v0.0.3 - August 2025
August 25, 2025
Added
- Add PowerShell installer for Windows
v0.0.2 - August 2025
August 19, 2025
Added
- Implement interpretation for the core MATLAB language grammar and semantic surface, across the parser, HIR, and VM. See Language Coverage for the full matrix of implemented coverage
v0.0.1 - August 2025
August 10, 2025
Added
- Initial release — lexer, architecture plan, project scaffolding
- Add release workflow with macOS signing, cross-compilation, crates.io publishing