Skip to content

Professionalize TinyML packaging, core boundary, and release contract - #15

Merged
godofecht merged 2 commits into
mainfrom
professionalization/core-packaging
Aug 26, 2026
Merged

Professionalize TinyML packaging, core boundary, and release contract#15
godofecht merged 2 commits into
mainfrom
professionalization/core-packaging

Conversation

@godofecht

Copy link
Copy Markdown
Owner

Summary

This turns TinyML's build/release surface from a development tree into an installable library contract.

  • adds a dependency-free TinyML::Core target and separate TinyML::Extended target
  • replaces source globbing and global compiler flags with explicit target-local CMake
  • makes xsimd conditional on the extended build and GoogleTest conditional on tests/benchmarks
  • adds component-aware find_package(TinyML) exports, version headers, install rules, and stable umbrella headers
  • verifies the installed package from a clean downstream CMake project
  • makes benchmarks, examples, and the playground opt-in
  • packages releases from cmake --install into separate core/extended archives with SHA-256 checksums
  • documents stable, preview, and source-only API surfaces separately from file licensing
  • fixes core UB/correctness issues: uninitialized momentum, unchecked input/target/weight dimensions, global RNG mutation, unsafe weight normalization, and incorrect updateWeights() traversal

Compatibility contract

TinyML::Core is the stable semantic-versioned surface. Existing source builds still get the TinyML target for the extended library, with aliases TinyML::Extended and TinyML::TinyML. Experimental/incomplete headers remain in the repository but are not installed as supported SDK surface.

Validation

The updated CI matrix independently builds core-only GCC Release, extended GCC Release, and extended Clang Debug. Each job runs CTest, installs to a staging prefix, and builds a separate consumer against find_package(TinyML CONFIG REQUIRED COMPONENTS Core).

Closes #8.

@godofecht
godofecht marked this pull request as ready for review August 26, 2026 13:47
@godofecht
godofecht merged commit e9eb6f2 into main Aug 26, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make the CMake build graph enforce the MIT core / commercial extension boundary

1 participant