Skip to content

Conversation

@MaxMansfield
Copy link
Collaborator


name: Pull Request
about: Submit changes to the RTMS SDK

Description

This PR introduces a major refactoring of the build system, replacing the custom Node.js-based CLI with Task (go-task) for streamlined development workflows. The changes significantly improve contributor experience with clearer commands, better error messages, and more reliable cross-platform builds.

Key Changes:

Build System Modernization:

  • Replaced custom scripts/rtms.js CLI with Task (go-task) for unified build orchestration
  • Added comprehensive Taskfile.yml with 40+ development tasks
  • Introduced specialized scripts: doctor.js, install.js, prebuild.js, publish.js
  • Simplified npm scripts to minimal install hook
  • Enhanced check-deps.js with better error messages and dependency validation

Documentation Improvements:

Docker & CI/CD Enhancements:

Core Improvements:

Dependency Updates:

  • Bumped Node.js version from 0.0.5 to 0.0.6
  • Python release 0.0.2
  • Updated TypeScript, typedoc, cmake-js, and other dev dependencies
  • Updated runtime dependencies (node-addon-api, tar)

Bug Fixes:

Related Issues

Fixes #75
Closes #72

Type of Change

  • Build changes
  • Documentation update
  • Refactoring (no functional changes)
  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Performance improvement
  • Tests (adding or improving tests)

Affected Components

  • Core C++ implementation
  • Node.js bindings
  • Python bindings
  • Go bindings
  • Build system
  • Documentation
  • Examples
  • Other: CI/CD, Docker configuration, npm scripts

Testing Performed

Build System Testing:

  • ✅ Verified all Task commands work on darwin-arm64: task --list, task doctor, task setup
  • ✅ Tested Node.js builds: task build:js (local) and task build:js:linux (Docker)
  • ✅ Tested Python builds: task build:py (local) and task build:py:linux (Docker)
  • ✅ Verified prebuilds creation: task prebuild:js
  • ✅ Confirmed tests run successfully: task test:js and task test:py

Docker & CI/CD Testing:

  • ✅ Tested Docker compose services: build, test-js, test-py
  • ✅ Verified Docker builds complete without errors
  • ✅ Confirmed patchelf integration for Python wheel repair

Documentation Testing:

  • ✅ Verified all documentation links work
  • ✅ Confirmed Quick Start instructions for contributors are accurate
  • ✅ Tested Task installation instructions on macOS

Cross-Platform Testing:

  • ✅ Local builds on darwin-arm64
  • ✅ Linux builds via Docker
  • ✅ CI/CD pipeline passes all checks

Dependency Updates:

  • ✅ All dependency updates tested and compatible
  • ✅ No breaking changes from dependency bumps
  • ✅ npm install works correctly with new versions

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Additional Context

Why Task (go-task)?

The previous build system used a custom Node.js CLI (scripts/rtms.js) which, while functional, had several limitations:

  • Difficult to maintain and extend
  • Not intuitive for contributors unfamiliar with the codebase
  • Poor discoverability of available commands
  • Complex command parsing logic

Task provides:

  • Clear task definitions in declarative YAML format
  • Built-in dependency management between tasks
  • File watching and incremental builds
  • Cross-platform consistency
  • Better error messages and command discovery
  • Industry standard tool used by many projects

Migration Path for Contributors

Old workflow:

npm run build:js
npm run build:py
npm run test

New workflow:

task build:js
task build:py
task test:local

End users installing via npm or pip are not affected - the npm install hook still works automatically.

Stats

  • 34 files changed
  • 2,692 insertions(+)
  • 1,875 deletions(-)
  • Net addition: ~800 lines (mostly documentation improvements)

Commits Included

@MaxMansfield MaxMansfield changed the title Improve build time Build Orchestration Improvements Nov 25, 2025
@MaxMansfield MaxMansfield merged commit 6689180 into main Nov 25, 2025
1 of 10 checks passed
@MaxMansfield MaxMansfield deleted the dev-task branch November 25, 2025 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants