Skip to content

Release Notes

0.2.1 [2026-05-01]

Enhancements:

  • Initial release of matlab-mcr-example, a template gear demonstrating how to package a compiled MATLAB algorithm as a Flywheel gear using the MATLAB Compiler Runtime (MCR).
  • Added Python gear skeleton (run.py, fw_gear_matlab_mcr_example/) that invokes a compiled MATLAB binary as a subprocess via a JSON config bridge.
  • Added compiled MATLAB binary (matlab_compile/compiled/matlab_example) built from matlab_compile/matlab_example.m using MATLAB R2025b.
  • Added matlab_compile/example_compile.sh script to recompile the MATLAB binary using mcc.
  • Added multi-stage Dockerfile installing MATLAB Compiler Runtime R2025b Update 5 on top of mathworks/matlab-runtime-deps, with base, build, dev, and production stages.

Maintenance:

  • Added pyproject.toml with hatchling build backend, Python ~=3.12, and dependencies flywheel-sdk>=18,<19 and fw-gear>=0.3.0,<0.4.
  • Added .dockerignore, .gitignore, .gitlab-ci.yml, and .pre-commit-config.yaml with uv-based tooling and qa-ci hooks.

Documentation:

  • Added README.md with full gear overview, usage instructions, and guidance for adapting the template to custom MATLAB algorithms.
  • Added CONTRIBUTING.md covering dependency management with uv, linting with pre-commit, Docker build workflow, and the MATLAB recompile workflow.

0.2.0

Enhancements:

  • Pin MATLAB MCR to R2025b Update 5 and drop support for older releases so the template reflects a single, current runtime.
  • Base the image on mathworks/matlab-runtime-deps:R2025b (MathWorks- published) and install MCR on top with the official silent installer, removing the Flywheel-specific intermediate base image while keeping the MCR install steps visible and adaptable.
  • Reframe the gear as matlab-mcr-example: rename the Python package (fw_gear_matlab_mcr_example), the MATLAB wrapper (matlab_example.m) and the compiled binary (matlab_example) so the names reflect the template's purpose. The gear's GitLab path is unchanged in this release.
  • Mark the text_file input as required to match the actual algorithm, which cannot run without it.

Documentation:

  • Rewrite README.md to clearly frame this as an example/template gear, describe what the example actually does end-to-end, and document the MATLAB and Dockerfile sections in line with the current code.
  • Add a pointer to the Calling the Flywheel SDK from MATLAB guide for users whose MATLAB algorithms need to call back into Flywheel.
  • Remove the stale FAQ.md whose content no longer applied to the current template.
  • Rewrite CONTRIBUTING.md for the modernized template: switch the toolchain section from poetry to uv, document the multi-stage Dockerfile (base / build / dev / final), describe the MATLAB recompile workflow via example_compile.sh, refresh the pre-commit hook list to match the current .pre-commit-config.yaml, and align the release-notes example with the headings actually used in this file.

Maintenance:

  • Make matlab_compile/example_compile.sh runnable directly from any working directory: it now resolves its own location, compiles matlab_example.m into ./compiled/, falls back gracefully when environment modules are unavailable, and cleans up the generated build.m on exit. README updated to document the new invocation.
  • Refactor the Dockerfile into a multi-stage build (base, build, dev, final) mirroring the cow-says template, so dev tooling (pytest, mypy, etc.) can run against a dev target while the production image stays free of dev dependencies. Remove the pytest pre-commit hook now that tests run against the dev image in CI.
  • Fix the .dockerignore allowlist to reference the renamed fw_gear_matlab_mcr_example and matlab_compile/compiled/matlab_example paths (previously still pointing at the pre-rename cow_says names, which broke the Docker build).
  • Migrate Python dependency management from poetry to uv.
  • Adopt the modern pre-commit hook set from the skeleton template (including eolfix and pytest).
  • Simplify Python sources (run.py, main.py, parser.py) to use pathlib, drop utils.py, and align with the skeleton layout.
  • Switch from flywheel_gear_toolkit.GearToolkitContext to fw_gear.GearContext.
  • Drive the MATLAB binary name from a MATLAB_BINARY build arg / environment variable (declared once in the Dockerfile, exposed via manifest.json) instead of hardcoding it. The Dockerfile COPY/chmod lines and main.py all reference the same variable, so forks that rename the binary only need to override one value.

Breaking Changes:

  • Remove matlab_compile_2020b/ and rename matlab_compile_2024a/ to matlab_compile/. Users must recompile their MATLAB binary against R2025b for the runtime to succeed.

0.1.0

  • Initial Development