Skip to content

Rcm cli 0.1.0

Choose a tag to compare

@drQedwards drQedwards released this 10 Aug 02:23
· 59 commits to main since this release
978e467

RCM CLI C/Rust Integration – Release Notes

Version 0.1.0 – Initial C/Rust FFI Integration

Date: 2025-08-09

This release introduces the C-callable Rust CLI for the Rust Cargo Manager (RCM), enabling both native Rust CLI usage and embedding into C programs or other FFI-compatible languages.

New Features

  • C API:
    • rcm_run(argc, argv) – Runs the RCM CLI with standard argc/argv semantics.
    • rcm_version() – Returns a static version string (null-terminated C string).
  • C Front-End Binary:
    • Minimal RCM-cli.c source provided to wrap the Rust library and provide a standalone executable.
  • Rust Library Entry:
    • RCM-cli.rs contains the full Rust CLI logic and FFI exports.
    • All existing RCM commands are available via the C API.
  • Optional let Macro Command:
    • If compiled with --features let, supports imperatives such as rcm let cargo --deploy.

Build Instructions

  • Added Cargo.toml [lib] entry to support cdylib and rlib crate types.
  • Provided platform-specific shared library outputs:
    • Linux: librcm_cli.so
    • macOS: librcm_cli.dylib
    • Windows: rcm_cli.dll
  • Added example GCC/Clang build commands for the C front-end.

Known Limitations

  • Memory Management: rcm_version() returns a pointer valid for the process lifetime; do not free.
  • Thread Safety: CLI execution is not thread-safe when invoked from multiple threads simultaneously.
  • No Real Cargo Execution: The let macro stubs do not yet call real cargo commands – planned for future.

Planned Enhancements

  • Implement full let macro execution (real cargo vendor, cargo build, SBOM generation).
  • Add unit tests for rcm_run in both Rust and C.
  • Provide pkg-config .pc file for easier linking from C projects.
  • Create GitHub Actions CI workflow to build both Rust and C artifacts.

License: GPL-3.0-only (same as core RCM)

Full Changelog: https://github.com/drQedwards/RCM/commits/0.1.0