RunMat
GitHub

delete — Remove files using MATLAB-compatible wildcard expansion, array inputs, and error diagnostics.

delete(filename) removes files from disk, and delete(obj) invalidates handle objects or listeners. RunMat mirrors MATLAB behaviour: it accepts character vectors, string scalars, string arrays, char matrices, and cell arrays of names for filesystem removal, gathers GPU-resident inputs automatically, and raises MATLAB-style errors when a file cannot be removed or when handle inputs are invalid.

How delete works in RunMat

  • Accepts individual paths, string arrays, cell arrays of character vectors, and char matrices. Each element targets one file.
  • Accepts handle objects (handle) and event listeners, marking them invalid (isvalid returns false) without touching the filesystem when invoked with non-string inputs.
  • Expands shell-style wildcards (* and ?) using MATLAB-compatible rules. Patterns must resolve to existing files; otherwise, the builtin throws RunMat:DELETE:FileNotFound.
  • Rejects folders. When a target is a directory, RunMat raises RunMat:DELETE:Directories, matching MATLAB’s “Use rmdir to remove directories” diagnostic.
  • Propagates operating-system failures (for example, permission errors or read-only files) through RunMat:DELETE:PermissionDenied.
  • Expands ~ to the user’s home directory and resolves relative paths against the current working folder (pwd).
  • Treats empty character vectors or empty string scalars as invalid inputs and raises RunMat:DELETE:EmptyFilename.
  • When passed an empty string array or empty cell array, the builtin performs no action and returns without error, just like MATLAB.

How delete runs on the GPU

delete performs host-side filesystem I/O. When a path argument lives on the GPU (for example, gpuArray("scratch.log")), RunMat gathers the scalar to CPU memory before touching the filesystem. Acceleration providers do not implement dedicated hooks for delete, so there are no GPU kernels or device transfers beyond the automatic gathering of inputs.

GPU memory and residency

No. delete executes on the CPU. If a script accidentally wraps path strings in gpuArray, RunMat gathers the scalars before issuing filesystem calls. Keeping paths on the GPU provides no benefit.

Examples

Deleting a single temporary file

fname = "scratch.txt";
fid = fopen(fname, "w");
fclose(fid);
delete(fname)

Removing multiple files with a wildcard pattern

logs = ["log-01.txt", "log-02.txt"];
for i = 1:numel(logs)
    fid = fopen(logs(i), "w");
    fclose(fid);
end
for i = 1:numel(logs)
    delete(logs(i));
end

Deleting files listed in a string array

files = ["stageA.dat", "stageB.dat"];
for i = 1:numel(files)
    fid = fopen(files(i), "w");
    fclose(fid);
end
delete(files)

Handling missing files safely with try/catch

try
    delete("missing-file.txt");
catch err
    disp(err.identifier)
    disp(err.message)
end

Cleaning up build artifacts stored under your home folder

delete("~/runmat/build/*.o")

Deleting char-matrix filenames generated programmatically

names = char("stage1.tmp", "stage2.tmp");
for row = 1:size(names, 1)
    fname = strtrim(names(row, :));
    fid = fopen(fname, "w");
    fclose(fid);
end
delete(names)

Deleting graphics handles after use

fig = figure;
delete(fig);
tf = isvalid(fig)

Expected output:

tf =
     0

FAQ

What message IDs does delete produce?

Missing files raise RunMat:DELETE:FileNotFound, directories raise RunMat:DELETE:Directories, wildcard syntax issues raise RunMat:DELETE:InvalidPattern, operating-system failures raise RunMat:DELETE:PermissionDenied, and invalid handle inputs raise RunMat:DELETE:InvalidHandle.

Can I delete folders with delete?

No. MATLAB reserves folder deletion for rmdir. RunMat follows suit and throws RunMat:DELETE:Directories when a target is a directory.

Does delete support multiple filenames at once?

Yes. Pass a string array, a cell array of character vectors, or a char matrix. Each element is deleted in turn.

How are wildcard patterns resolved?

RunMat uses MATLAB-compatible globbing: * matches any sequence, ? matches a single character, and the pattern is evaluated relative to the current folder (pwd) unless you pass an absolute path.

What happens when a wildcard matches nothing?

The builtin raises RunMat:DELETE:FileNotFound (just like MATLAB) and leaves the filesystem unchanged.

Do empty arrays raise errors?

Empty string arrays or empty cell arrays simply result in no deletions. Empty strings, however, are invalid and trigger RunMat:DELETE:EmptyFilename.

How do GPU inputs behave?

Inputs on the GPU are gathered to the host automatically. No GPU kernels are launched.

Yes. RunMat delegates to the operating system: deleting a symlink removes the link itself, not the target—matching MATLAB.

Can I detect failures programmatically?

Wrap the call in try/catch and inspect err.identifier and err.message just as you would in MATLAB.

Will delete follow relative paths updated by cd?

Yes. Paths are interpreted using the process working directory, so calling cd before delete mirrors MATLAB’s behaviour.

These functions work well alongside delete. Each page has runnable examples you can try in the browser.

copyfile, movefile, rmdir, dir, pwd, addpath, cd, exist, fullfile, genpath, getenv, ls, mkdir, path, rmpath, savepath, setenv, tempdir, tempname

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how delete works, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code — faster, on any GPU, with no license required.

  • Simulations that took hours now take minutes. RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed.
  • Start running code in seconds. Open the browser sandbox or download a single binary. No license server, no IT ticket, no setup.
  • A full development environment. GPU-accelerated 2D and 3D plotting, automatic versioning on every save, and a browser IDE you can share with a link.

Getting started · Benchmarks · Pricing

Try RunMat for free

Open the sandbox and start running MATLAB code in seconds. No account required.